feat: custom slugs and docker compose command parity#12
Merged
willisrocks merged 8 commits intomainfrom Mar 10, 2026
Merged
Conversation
Adds --slug flag to `devproxy up` for predictable URLs and introduces stop/start/daemon restart commands to mirror docker compose lifecycle. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
11 tasks across 4 chunks: validation, CLI restructure, command implementations, platform updates, and documentation sync. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add decisions section with justifications, fix daemon check cleanup logic in up.rs for !reusing path, add missing e2e test updates (start_test_daemon, help output, restart tests), add tasks for skills/setup/SKILL.md and docs/spec.md updates. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use trycycle-executing header format instead of superpowers reference - Fix test_help_output -> test_cli_help (matches actual test name in e2e.rs) - Fix test_cli_help_output -> test_cli_help in final verification step Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The previous implementation called compose_slug() which truncates to
63 chars, then checked the truncated result — the length check could
never fail. Fixed to check raw "{slug}-{app_name}" length before
truncation, per the design spec requirement that custom slugs are
"validated and rejected if invalid (not sanitized/transformed)."
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename test_restart_* to test_daemon_restart_* so it's unambiguous which command they test after the CLI restructuring - Simplify e2e test run commands: use `cargo test --test e2e` instead of brittle --skip lists (ignored tests are skipped by default) - Update final verification step to match Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…d group - Add --slug flag to `devproxy up` for predictable URL slugs - Add validate_custom_slug() with DNS label length checking - `devproxy up` now reuses existing slug/override when state files exist - Add `devproxy stop` (preserves slug and override for restart) - Add `devproxy start` (resumes stopped containers with existing slug) - `devproxy restart` now restarts app containers (breaking change) - Daemon restart moved to `devproxy daemon restart` subcommand - `devproxy daemon run` replaces hidden top-level `devproxy daemon` - Update platform plist/unit templates for `daemon run` subcommand - Update e2e tests, README, skills, spec, and plugin version - Bump version to 0.5.0 for breaking restart behavior change Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
--slugflag todevproxy upfor predictable URLs, with slug reuse on subsequentupcallsstop,start,restartcommands for app-stack lifecycle (mirrors docker compose)devproxy restartnow restarts app containers; daemon restart moved todevproxy daemon restartvalidate_custom_slug()/validate_custom_slug_with_app()for input validationdaemon runsubcommandTest Plan
cargo clippy --all-targets: 0 warnings, 0 errorscargo test: 83 unit + 15 e2e passed, 0 failed, 9 ignored (Docker-dependent)cargo build --release: successful--help,up --help,daemon --helpResidual Issues (minor/nit only)
stop.rsmissing override file existence guard (unlikestart/restart)validate_custom_slugallows consecutive hyphens (my--app)down.rsreads project file fromcwdvscompose_dirstart.rs/restart.rsduplication could be factored into shared helper🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com