Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions .beads/issues.jsonl
Original file line number Diff line number Diff line change
@@ -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."}
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,24 @@ Most local setups become expensive to change:
`devloop` keeps everything alive so you can change one thing at a
time.

<br>

<p align="center" style="margin: 0.35rem 0 0.35rem 0;">
<a href="https://patents.google.com/patent/US1948860A"
target="_blank"
rel="noopener noreferrer">
<img
src="docs/images/us1948860a-page1-drawing-mid-yellow-card.png"
alt="Ball bearing patent drawing"
style="width:58.5%;"
/>
</a>
</p>

<p align="center" style="margin: 0 0 1.25rem 0;">
<sub>Motion is constrained. Parts keep moving.</sub>
</p>

## A concrete example

Working on a blog post with a public preview:
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.