Files
simplelog/TODO.md
T
clawbot 815b57fa0d
check / check (push) Failing after 4s
Format the existing Markdown with prettier
The one-time reformat of README.md and TODO.md, produced by make fmt
with nothing else in it. REPO_POLICIES.md already matched prettier's
output and is unchanged.

Model: opus-5-5
2026-10-06 14:04:18 +00:00

4.3 KiB

Workflow

  • branch (from main)
  • do the work in Next Step
  • move Next Step to the top of Completed Steps
  • move the top item of Future Steps into Next Step
  • commit (TODO.md changes in the same commit as the work)
  • merge to main if the branch is not protected, otherwise open a PR
  • push

Status

1.0+

Tagged v1.0.0 (2024-06-14) and 1.0.1 (2026-02-08). In post-1.0 maintenance; the library is referenced by the Go styleguide.

Next Step

Restructure README.md into the standard sections: Description, Getting Started, Rationale, Design, TODO, License, Author

Completed Steps

  • 2026-10-06: make fmt and make fmt-check also format Markdown, with prettier at the standard settings, pinned through package.json and yarn.lock; script/bootstrap installs node and yarn for it, and the existing Markdown was formatted once
  • 2026-10-06: re-vendored the standard files from sneak/prompts at commit dd4027b: REPO_POLICIES.md, the CI workflow, .gitignore, and .golangci.yml together with the lint stage's new image, plus the .editorconfig and .dockerignore this repo lacked, which finishes the Makefile and policy-files step. script/cibuild now bootstraps and runs script/check before building the image, the format check runs only on the host, the last Dockerfile stage runs script/bootstrap, which installs goimports at a pinned commit
  • 2026-10-06: a webhook request now times out after 5 seconds, so a server that never answers no longer stops every log call; the webhook handler also reads each answer to the end so its connection is reused
  • 2026-10-06: the console handler takes the file and line it prints from the record's PC instead of counting stack frames, so they name the call site whether the record came through a slog.Logger or straight to Handle
  • 2026-10-06: the tests run under the race detector, in Docker: script/test builds the test stage of the Dockerfile, which runs go test -race, and a new final stage makes a plain docker build run both the lint and test stages
  • 2026-10-06: the linter runs only in Docker: script/lint builds the lint stage of the Dockerfile, every docker build in script/ runs without the build cache, and script/bootstrap no longer installs golangci-lint
  • 2026-10-06: every handler now returns a failed delivery from Handle instead of discarding it: console and JSON return the stdout write error, the webhook also fails on a non-2xx answer, and the multiplex delivers to every handler and returns their errors joined
  • 2026-08-10: fixed every handler discarding slog attributes: console, JSON and webhook handlers now emit record attributes, accumulate WithAttrs without mutating the receiver, and honour WithGroup; slog.Group values nest and LogValuer values are resolved; console keys and values holding invalid UTF-8 are quoted
  • 2026-08-07: added canonical .golangci.yml (v2 schema), pinned the Dockerfile lint stage to golangci-lint v2.12.2 (tag+digest), and fixed all findings the v1→v2 jump surfaced without changing any exported signatures or behavior
  • 2026-07-07 Adopted scripts-to-rule-them-all: script/ entrypoints, Makefile shims, README Entrypoints section
  • 2026-02-08: fixed JSONHandler deadlock from recursive log.Println, with regression test; tagged 1.0.1
  • 2024-06-14: 1.0 prep: lint and fmt enforced in Docker build, call stack depth fix so log locations report correctly, example script, removed non-building RELP code; tagged v1.0.0
  • 2024-05-22: module path moved to sneak.berlin/go/simplelog
  • 2024-05-14: initial library: slog-based console, JSON, webhook, and RELP handlers, MultiplexHandler, caller file/line info, UTC ISO timestamps, level-colored output

Future Steps

  • Delete the old plain TODO file once this TODO.md lands
  • Add .aider.* to .gitignore and remove the stray aider artifacts from the working tree
  • Pick one tag scheme before the next release (v1.0.0 vs 1.0.1 are inconsistent)
  • Tag v1.0.2, with the leading v, once the attribute fix lands, so consuming repos can move off pseudo-version pins in one step
  • Fix RELP output to cache (from old TODO)
  • Re-add RELP delivery over TCP to remote rsyslog imrelp; removed 2024-06-14 because it did not build (README planned feature)
  • Add regex filtering for webhook logs (from old TODO)
  • Better console output format (from old TODO)