Skip to content

About page redesign, config.json rename, CI flake fix#16

Merged
turtlemonvh merged 5 commits into
masterfrom
ai/about-page-and-config-rename
May 3, 2026
Merged

About page redesign, config.json rename, CI flake fix#16
turtlemonvh merged 5 commits into
masterfrom
ai/about-page-and-config-rename

Conversation

@turtlemonvh
Copy link
Copy Markdown
Owner

Summary

  • Config filename mismatch fixed. The installer creates ~/.config/blanket/config.json, but viper's SetConfigName("blanket") looks for blanket.{json,yaml,toml}. So the file the installer writes is ignored on first run. Switch to SetConfigName("config"). Breaking change for anyone running with blanket.json — accepted given the small user base.
  • About page redesigned. Adds: a tagline + GitHub link + pointer to the Workers page; a server card with version / binary / PID / config file path; raw config file contents; and a settings table that hides the test-only timeMultiplier knob and the legacy singular tasks.typesPath default. database, tasks.typesPaths, and tasks.resultsPath render as absolute paths.
  • tasks.typesPath (singular) gone. It was a leftover default that did nothing — only the plural tasks.typesPaths is read by the loader. Removed from defaults so it no longer shows up.
  • Install scripts write an absolute database path under the data directory. Without it the default (blanket.db) resolves relative to cwd, which is surprising for a daemon-style install.
  • /version endpoint now reports the real ldflags version instead of the hardcoded \"0.1\".
  • CI flake fix. The Task API lifecycle round-trip test was failing intermittently because fullyParallel: false only serializes tests within a single spec file. With two spec files, playwright runs them concurrently against one shared bolt DB, and journeys.spec.ts's purgeTasks would delete the round-trip's task between POST and GET. Set workers: 1.

Test plan

  • go build ./... clean
  • go test ./... passes
  • make linux && bash scripts/smoke.sh passes (smoke test now uses config.json)
  • Manual about page check: blurb + version + binary path + PID + config path + config contents + filtered settings (no timeMultiplier, no singular typesPath, all paths absolute)
  • CI passes
  • After merge: fresh install run picks up ~/.config/blanket/config.json automatically

🤖 Generated with Claude Code

turtlemonvh and others added 5 commits May 2, 2026 08:26
Append mermaid stateDiagram-v2 diagrams for task and worker
lifecycles to docs/design.md. Task diagram shows the API endpoints
that drive each transition; worker diagram covers the simpler
running/stopped model with an aside on lost-but-not-deleted workers.

Add .claude/ to .gitignore — only ever holds per-developer state
(settings.local.json, scheduled_tasks.lock). Remove the tracked
lock file.

NextUp additions: claude-code/codex task wrappers, MCP server
wrapper, AI tool instructions for authoring task types, optional
auto-start service registration in install scripts, and task
scheduling (notBefore + cron). Updated the existing diagram entry
to reflect that state machines are now done.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rename docs/ files to snake_case for consistency: Api.md → api.md,
NextUp.md → next_up.md, TaskFlow.md → task_flow.md,
TaskTypeDefinitions.md → task_type_definitions.md. Update Go test
comments that referenced the old paths.

Move task and worker state-machine diagrams from design.md to
task_flow.md, where they live alongside the existing flow narrative
and state definitions. Fix two endpoint typos in the diagrams I
wrote earlier: PUT /task/:id/run not /start, PUT /worker/:id/stop
not POST. Slim design.md back to origin/goals/architecture.

Bring docs/api.md up to date with the actual routes in
server/server.go: add /version, /config/, /ops/status/, log/tail
endpoints. Add a sync reminder in CLAUDE.md so the doc doesn't
drift the next time routes change.

Aggressively trim the main README: keep tagline, install, 60-second
start (with both curl and CLI submit to honor the RESTy promise),
links into docs. Move detailed curl/CLI examples, file uploads,
scripted submissions, and the task type schema deep-dive to a new
docs/usage.md.

Add docs/README.md as a landing index. Use relative links throughout
the docs so local previews resolve.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Drop the "stub" disclaimer — the page now covers everything a user
needs to author a task type. Replace the inaccurate "bash is the
only executor" line with a table listing the four supported modes
(bash, cmd, powershell, arbitrary -c executor) and a pointer to
blanket task-validate. Add a windows_echo example so cmd usage is
visible alongside bash.

Add a Docker task type idea to next_up.md: either a first-class
executor = "docker" with image/mounts fields, or a shipped bash
example that wraps docker run. Lean toward example-first; promote
if usage warrants.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The installer creates ~/.config/blanket/config.json but viper looks
for blanket.{json,yaml,toml} — so the file the installer writes is
ignored and a fresh user gets the no-config error. Switch viper's
config name from "blanket" to "config" so config.json (matching the
installer) is found. The flag-help text is updated alongside.
Breaking change for anyone running with an existing blanket.json,
which is acceptable given the small user base. The smoke test and
docs/usage.md are updated to use config.json and to use input.txt
as the example upload filename so it doesn't collide with the
config name.

The install scripts now also write an absolute database path under
the data directory. Without it the default ("blanket.db") resolves
relative to cwd, which is surprising for a daemon-style install.

The About page is rewritten:
- Blurb describing what blanket is, with a GitHub link and a pointer
  to the Workers page
- Server card with version, binary path, PID, and config file path
- Config file contents (raw, in <pre>) when a config is in use
- Settings table with timeMultiplier hidden (test-only knob), the
  legacy singular tasks.typesPath default removed, and database /
  typesPaths / resultsPath rendered as absolute paths

Wire ldflags-set Version through ServerConfig so the /version
endpoint and the About page show the real build info instead of the
hardcoded "0.1" string.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Task API lifecycle round-trip test fails intermittently with the
GET-by-id step returning 500. Root cause: fullyParallel: false only
serializes tests within a single spec file. Blanket's tests live in
two files (blanket.spec.ts, journeys.spec.ts), so by default
playwright runs them with workers > 1 and they share a single bolt
DB through one server. journeys.spec.ts's purgeTasks (in
beforeEach/afterEach) deletes every task in the DB; if it fires
between the round-trip test's POST and the follow-up GET, the
handler 500s on the missing task.

Set workers: 1. The existing comment ("blanket is stateful; keep
tests serial") signaled the intent — workers: 1 actually delivers
it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@turtlemonvh turtlemonvh merged commit 50975ee into master May 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant