diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 9ad53e0..0fdff0e 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -1,22 +1,10 @@ {"id":"devloop-0nx","title":"Define project docs, AGENTS, and roadmap","description":"Add README, PLAN, and repository-specific AGENTS guidance for the standalone tool.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:15:00Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T01:27:27Z","closed_at":"2026-03-24T01:27:27Z","close_reason":"Closed"} -{"id":"devloop-1wr","title":"Add templated workflow log action for published URLs","description":"Allow workflows to emit human-readable templated log lines so derived state like current_post_url becomes visible during runs.","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T05:44:55Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T05:48:30Z","closed_at":"2026-03-24T05:48:30Z","close_reason":"Added templated workflow log action, documented it, updated example config, and cleared follow-up review on 11680e7."} -{"id":"devloop-2c6","title":"Restore README workflow snippets as valid TOML","description":"Change the README workflow examples back to TOML fences and wrap the inline tables in valid top-level assignments so GitHub renders them correctly.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T21:50:02Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T21:50:45Z","closed_at":"2026-03-24T21:50:45Z","close_reason":"Restored the README workflow examples to TOML and wrapped them in valid top-level assignments; roborev job 520 passed."} -{"id":"devloop-2gk","title":"Add changelog and bump devloop version","description":"Record the significant devloop feature changes in a changelog and bump the crate version to reflect the accumulated minor feature additions.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T05:09:13Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T05:10:20Z","closed_at":"2026-03-24T05:10:20Z","close_reason":"Bumped devloop to 0.2.0 and added a changelog summarizing the feature work since the initial bootstrap."} -{"id":"devloop-40i","title":"Add GitHub Actions CI for devloop","description":"Add a GitHub Actions workflow that runs formatting, tests, and clippy for the devloop crate before publishing the repo.","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T05:51:31Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T05:52:29Z","closed_at":"2026-03-24T05:52:29Z","close_reason":"Added GitHub Actions CI workflow for fmt, test, and clippy; local checks passed and roborev job 508 passed."} -{"id":"devloop-5p2","title":"Add boxed workflow log output for important messages","description":"Extend devloop's workflow log action with a boxed banner style so important derived URLs stand out in mixed process output.","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T06:14:56Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T06:19:04Z","closed_at":"2026-03-24T06:19:04Z","close_reason":"Added boxed workflow log style with unicode-aware banner width, tests, docs, and cleared review job 516."} {"id":"devloop-8km","title":"Implement config and workflow engine","description":"Load config, watch paths, classify events, and execute ordered workflows against named processes and hooks.","status":"closed","priority":2,"issue_type":"feature","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:15:00Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:09:33Z","closed_at":"2026-03-24T02:09:33Z","close_reason":"Closed","dependencies":[{"issue_id":"devloop-8km","depends_on_id":"devloop-0nx","type":"blocks","created_at":"2026-03-24T12:15:07Z","created_by":"Daniel Vianna","metadata":"{}"}]} -{"id":"devloop-bfi","title":"Fix README code fence languages and add CI badge","description":"Relabel non-TOML README code fences so GitHub stops trying to parse them as TOML, and add the GitHub Actions CI badge near the top of the README.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T21:46:24Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T21:48:12Z","closed_at":"2026-03-24T21:48:12Z","close_reason":"Added the CI badge and converted the README workflow snippets to valid JSON; roborev job 519 passed."} {"id":"devloop-d81","title":"Move real client config out of devloop examples","description":"Keep only generic examples in devloop and move the working blog config into the client repository root.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T02:31:27Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:39:07Z","closed_at":"2026-03-24T02:39:07Z","close_reason":"Kept only generic examples in devloop and moved the working blog config into the client repo root."} {"id":"devloop-dzy","title":"Make client hook paths repo-relative","description":"Resolve devloop config command paths relative to the client repo or config, not the tool checkout.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T02:16:34Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:22:17Z","closed_at":"2026-03-24T02:22:17Z","close_reason":"Closed"} -{"id":"devloop-eip","title":"Make ctrl-c stop devloop immediately","description":"Prevent child restarts during shutdown and prioritize the ctrl-c path in the event loop so devloop stops promptly.","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T05:24:37Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T05:28:42Z","closed_at":"2026-03-24T05:28:42Z","close_reason":"Implemented shutdown prioritization, disabled restarts during shutdown, and cleared follow-up review on cbcf959."} -{"id":"devloop-h2x","title":"Add published install instructions to devloop README","description":"Document how to install devloop from GitHub now that the repository is published, and add a short release-oriented section to the README.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T05:56:37Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T05:57:39Z","closed_at":"2026-03-24T05:57:39Z","close_reason":"Added GitHub install instructions and a short releases note to the README; roborev job 510 passed."} {"id":"devloop-mml","title":"Address roborev findings on state ownership and client-specific URL composition","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T02:44:51Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:53:31Z","closed_at":"2026-03-24T02:53:31Z","close_reason":"Shared session state is now owned in memory, generic state templating replaced blog-specific derivation, redundant writes are skipped, and the review job was addressed."} {"id":"devloop-nmu","title":"Add blog client example and verification","description":"Create example config/hooks for the blog repo and verify the tool runs against it.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:15:00Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:09:33Z","closed_at":"2026-03-24T02:09:33Z","close_reason":"Closed","dependencies":[{"issue_id":"devloop-nmu","depends_on_id":"devloop-8km","type":"blocks","created_at":"2026-03-24T12:15:07Z","created_by":"Daniel Vianna","metadata":"{}"}]} -{"id":"devloop-o3a","title":"Support default devloop.toml discovery","description":"Let devloop run and validate use ./devloop.toml automatically when no --config flag is provided.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T05:19:17Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T05:20:17Z","closed_at":"2026-03-24T05:20:17Z","close_reason":"Made --config optional and defaulted devloop run/validate to ./devloop.toml in the current directory."} {"id":"devloop-s2h","title":"Bootstrap configurable dev-loop engine MVP","description":"Create a standalone Rust CLI in /tmp/devloop with config-driven file watching, process supervision, workflows, hooks, and documentation. Use the blog repo as the first client.","status":"open","priority":2,"issue_type":"epic","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:14:54Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T01:14:54Z","dependencies":[{"issue_id":"devloop-s2h","depends_on_id":"devloop-nmu","type":"blocks","created_at":"2026-03-24T12:15:07Z","created_by":"Daniel Vianna","metadata":"{}"}]} -{"id":"devloop-t8f","title":"Add MIT license before publishing devloop","description":"Add an MIT LICENSE file to the devloop repository before pushing it to GitHub.","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T05:53:39Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T05:54:43Z","closed_at":"2026-03-24T05:54:43Z","close_reason":"Added MIT license, committed it, and cleared roborev job 509 before pushing to GitHub."} {"id":"devloop-ufx","title":"Add client adapter for dynamic tunnel url consumption","description":"The blog app still treats SITE_URL as startup-only state. Add a client-side integration pattern that reads devloop state dynamically so tunnel restarts affect rendered metadata.","status":"closed","priority":2,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:27:27Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:09:33Z","closed_at":"2026-03-24T02:09:33Z","close_reason":"Closed"} -{"id":"devloop-uvb","title":"Improve devloop CLI help text","description":"Add human-readable descriptions to the top-level CLI and subcommands so --help is self-explanatory.","status":"closed","priority":3,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T04:45:25Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T04:46:10Z","closed_at":"2026-03-24T04:46:10Z","close_reason":"Added human-readable top-level and subcommand descriptions to the Clap CLI help output."} {"id":"devloop-vxg","title":"Support process-emitted state updates","description":"Long-running processes such as cloudflared need a first-class way to publish readiness and state into the engine instead of relying on wrapper scripts mutating the session file.","status":"closed","priority":2,"issue_type":"feature","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T01:27:27Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T02:09:33Z","closed_at":"2026-03-24T02:09:33Z","close_reason":"Closed"} {"id":"devloop-w34","title":"Support workflow composition to reduce repeated setup steps","description":"Add a generic way for one workflow to reuse another so client configs can avoid duplicating repeated step sequences such as wait-for-tunnel plus templated write_state composition.","status":"closed","priority":3,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T02:53:31Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T03:01:13Z","closed_at":"2026-03-24T03:01:13Z","close_reason":"Added reusable run_workflow steps, validated nested workflow recursion and missing references, and updated the generic example."} -{"id":"devloop-wg8","title":"Default devloop logging to info when RUST_LOG is unset","description":"Make devloop initialize tracing with an effective default of RUST_LOG=info unless the environment overrides it.","status":"closed","priority":1,"issue_type":"task","owner":"1708810+dmvianna@users.noreply.github.com","created_at":"2026-03-24T22:08:08Z","created_by":"Daniel Vianna","updated_at":"2026-03-24T22:12:26Z","closed_at":"2026-03-24T22:12:26Z","close_reason":"Made info the explicit default RUST_LOG value, added tests, serialized env-mutating tests, and cleared roborev job 530."} diff --git a/README.md b/README.md index 8ea626a..d28b3c6 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,24 @@ Most local setups become expensive to change: `devloop` keeps everything alive so you can change one thing at a time. +
+ +

+ + Ball bearing patent drawing + +

+ +

+ Motion is constrained. Parts keep moving. +

+ ## A concrete example Working on a blog post with a public preview: diff --git a/docs/images/us1948860a-page1-drawing-mid-yellow-card.png b/docs/images/us1948860a-page1-drawing-mid-yellow-card.png new file mode 100644 index 0000000..aa84f6d Binary files /dev/null and b/docs/images/us1948860a-page1-drawing-mid-yellow-card.png differ