Skip to content

feat: custom slugs and docker compose command parity#12

Merged
willisrocks merged 8 commits intomainfrom
custom-slugs-and-compose-commands
Mar 10, 2026
Merged

feat: custom slugs and docker compose command parity#12
willisrocks merged 8 commits intomainfrom
custom-slugs-and-compose-commands

Conversation

@willisrocks
Copy link
Copy Markdown
Contributor

Summary

  • Added --slug flag to devproxy up for predictable URLs, with slug reuse on subsequent up calls
  • New stop, start, restart commands for app-stack lifecycle (mirrors docker compose)
  • Breaking: devproxy restart now restarts app containers; daemon restart moved to devproxy daemon restart
  • validate_custom_slug() / validate_custom_slug_with_app() for input validation
  • Updated launchd/systemd templates for daemon run subcommand
  • Version bumped to 0.5.0
  • Updated README, skills, spec, plugin

Test Plan

  • cargo clippy --all-targets: 0 warnings, 0 errors
  • cargo test: 83 unit + 15 e2e passed, 0 failed, 9 ignored (Docker-dependent)
  • cargo build --release: successful
  • Help output verified for --help, up --help, daemon --help

Residual Issues (minor/nit only)

  • stop.rs missing override file existence guard (unlike start/restart)
  • validate_custom_slug allows consecutive hyphens (my--app)
  • Pre-existing down.rs reads project file from cwd vs compose_dir
  • start.rs/restart.rs duplication could be factored into shared helper

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

willisrocks and others added 8 commits March 10, 2026 13:54
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>
@willisrocks willisrocks merged commit 47346a9 into main Mar 10, 2026
1 of 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