Skip to main content
Smithers 0.25.1 is a focused maintenance release for operators and workflow authors upgrading from 0.25.0. It improves failure messages around legacy SQLite migrations, keeps old account files from blocking CLI commands, fixes documented negated flags, hardens Gateway JWT signature validation, and makes Pi launch diagnostics provider-aware. The release was dogfooded by migrating 12 real stores and checking run-ID parity, inspect parity, fresh compute runs, Gateway reads, and time-travel behavior on the migrated PGlite backend.

Migration hardening

bunx smithers-orchestrator migrate now wraps corrupt legacy SQLite source stores with actionable DB_QUERY_FAILED guidance instead of leaking raw SQLite engine errors. The source store is left untouched when these failures are reported. Migration also now wraps unopenable legacy SQLite source stores, including locked files, permission failures, and incomplete copies missing SQLite sidecar files, with Smithers guidance that points operators at the source-store problem. For PostgreSQL migrations, bunx smithers-orchestrator migrate --to postgres validates the target URL before opening the source store. Missing --url, SMITHERS_POSTGRES_URL, or DATABASE_URL configuration is now reported directly instead of being masked by unrelated source-store failures.

Accounts loading

Legacy or unknown accounts.json providers are now skipped with a warning instead of failing the entire accounts file. This keeps commands such as bunx smithers-orchestrator init working when an old account file still contains a removed provider entry, while valid accounts continue to load.

CLI flags

Documented negated flags now parse correctly. --no-vcs, --no-deps, and --no-mcp are no longer rejected as unknown flags on the commands that document them.

Gateway auth

Gateway JWT auth now rejects non-canonical base64url signature encodings. This closes an edge case where a mutated compact JWT signature segment could decode to the same HMAC bytes on some runtimes because of unused trailing base64url bits.

Pi diagnostics

Pi launch diagnostics no longer default unknown providers to Google auth checks. When Smithers cannot infer the provider, diagnostics skip provider auth preflight and let Pi handle auth. Known provider or model hints now map to the correct API key environment variable for OpenAI, Anthropic, or Google diagnostics.

Migration notes

No breaking changes are identified in 0.25.1. Users migrating a legacy SQLite store to PostgreSQL must provide --url, SMITHERS_POSTGRES_URL, or DATABASE_URL. Smithers now reports that requirement before trying to open the source database. If migration reports DB_QUERY_FAILED for a corrupt or unopenable source store, follow the emitted guidance. These failure paths do not modify the source SQLite store. If an old accounts.json contains a removed provider such as a legacy gemini subscription account, Smithers now skips that entry and loads the remaining valid accounts. Remove stale entries manually to silence the warning.

Verification

Regression coverage was added or updated for migration error handling, account parsing with unknown providers, negated CLI flag parsing, Gateway JWT rejection cases, and Pi diagnostics provider mapping.