-
Notifications
You must be signed in to change notification settings - Fork 0
Epic: CLI v0 (Phase 1) #40
Copy link
Copy link
Open
Labels
area:cliCLI binary (subcommands, completions, config, packaging)CLI binary (subcommands, completions, config, packaging)enhancementNew feature or requestNew feature or request
Milestone
Description
Metadata
Metadata
Assignees
Labels
area:cliCLI binary (subcommands, completions, config, packaging)CLI binary (subcommands, completions, config, packaging)enhancementNew feature or requestNew feature or request
Goal
Ship
ccasas a real CLI binary, backed by an explicit localCcasServerprocess. Single user, no auth, loopback only. CLI = thin HTTP client.Why
Today CCAS is seven
ZIOAppDefaultapps. Running two concurrently means two independentChessComClientinstances with no shared rate limit. The CLI shape collapses everything onto one server-mediated path so the rate limiter stays singular, and sets up the foundation for the OAuth phase that follows.Open decisions
Dependency graph
Green = no open deps; amber = unblocked once a green closes; red = final tier; purple dashed = decision pending; grey = done.
Sub-issues
Start here (no open dependencies)
sbt-native-packager(chore, ~3h)JobSchedulerows at boot (MatchRef+ClubData), config-driven viaapplication.conf— rescoped after Classify JobKinds: user-facing vs server-internal #50; per-club seeding split out to First-class managed_club marker (server-scoped, forward-compatible to per-user) #101/Seed default History/Membership schedules per managed club #102 — shipped in feat(scheduler): seed global maintenance schedules at boot (#45) #103 (31d8874)ProgressDisplayfor a configurable log sink (JobLogTransport) (~2h)--server→api_url→ default) — done in feat(cli): config file resolution + command split #85 (HOCONconfig.conf, not TOML)GET /api/clubsendpoint (~30m)GET /api/jobs/{id}/logs(unblocked by Refactor ProgressDisplay to accept a configurable log sink (JobLogTransport) #42)decline(after Packaging via sbt-native-packager #41 ✓) — scope may shrink pending Classify JobKinds: user-facing vs server-internal #50ccas servelifecycle (serve,serve --detach,stop) (after Packaging via sbt-native-packager #41 ✓, CLI subcommand tree via decline #46 ✓)ccas(after CLI subcommand tree via decline #46 ✓, GET /api/clubs endpoint #44 ✓) — done in feat(cli): cached shell completion (bash/zsh/fish) #78 (pure-shell pivot)Follow-ups
current_club+ccas use <slug>) — from CLI config file resolution #43; supersedes thedefault_clubs-as-slug-fallbackmanaged_clubmarker (server-scoped, forward-compatible to per-user) — split from Bootstrap default JobSchedule rows for server-internal kinds at first boot #45; does not gate on Backend auth, authz & abuse defenses (Phase 2 server hardening) #66/CLI club-context: current_club + ccas use <slug> #86History/Membershipschedules per managed club — split from Bootstrap default JobSchedule rows for server-internal kinds at first boot #45; depends on First-class managed_club marker (server-scoped, forward-compatible to per-user) #101Done when
bin/ccas membership team-alpharuns end to end locally with live progress streaming.bin/ccas serve --detach+bin/ccas stopround-trip cleanly.ccasandccas membershipworks in bash and zsh.Reference
Full roadmap:
~/.claude/plans/ultra-sparkling-unicorn.md, section "Phase 1 — Local CLI ↔ local server".Maintenance
When a sub-issue closes:
Edits to this body should happen mid-session, not as homework.