Release Notes
Added
- (api) a slow request draws a one-line notice after 2s
- (auth) the token does not echo when typed at a TTY
- (cli) a support path in help and on panic
- (cli) help text leads with examples
- (cli) -q/--quiet suppresses info lines on stderr
- (rule) case-aware target resolution for update and delete
- (rule) rule CRUD and the multi-target write engine
- (folder) folder CRUD with shared action flags, dry-run, and confirmation
- (profile) profile list and get with normalized models
- (cli) add cdctl api, the D9 escape hatch
- (api) raw passthrough requests for the escape hatch
- (api) pin joined request URLs to the base origin
- implement Phase 1 core
Fixed
- (auth) Ctrl-C at the token prompt exits 130
- (output) stderr advisories are best-effort, never a panic
- (config) a wrong-shape context table never panics a save
- (cli) the command listing leads with the everyday commands
- (rule) --via help stops naming the unshipped proxy list command
- (config) saves preserve comments and unknown keys
- (config) default_profile help drops its semicolon
- (output) a failed stdout write exits 1, never a panic's 101
- resolve the full-codebase review findings
- (cli) UX polish from the v0.1 help and error audit
- (ci) move dist's build-setup fragment out of .github/workflows
- (rule) foldered rules are invisible to the root listing
- (rule) never advertise an unconvergeable via6-clear retry
- (confirm) keep SIGINT live at the confirmation prompt
- (build) cap comfy-table below 7.2.2 to keep the 1.85 MSRV buildable
- (api) hand-build form bodies with literal bracket keys (#3)
- (api) reach public endpoints without a token (#2)
- (api) sharper diagnostics on the raw rejection paths
- (api) keep SIGINT live while reading the stdin body
- (api) reject an empty stdin body before any request
- (api) classify marker-less raw bodies on the HTTP status
Other
- even out two labels left inconsistent by earlier sweeps
- (agents) thin the em dashes, generalize the ASCII rule
- (readme) cut a duplicated pointer, generalize the matrix footnote
- (cli) drop the "works without a token" parenthetical
- prose sweep across the remaining docs
- (decisions) prose cleanup, every decision's substance unchanged
- (commands) prose cleanup, same pass as README and CONTRIBUTING
- (readme) active voice in the highlights
- (readme) add the action matrix, linking each resource to its docs
- (readme) rename the demo heading to Demo
- (readme) a Usage section listing the command surface
- (readme) tagline only, no intro paragraph
- (readme) the intro stops restating the tagline
- (readme) drop the tables-and-JSON aphorism
- (roadmap) park a PTY test harness for the TTY-gated paths
- (cli) the proxy pin's comment names the real mechanism
- (live) teardown reuses live_cdctl's timeout
- (error) the envelope fixture loader is shared, not copied
- (cli) reference embeds ENV_HELP verbatim
- (confirm) confirm reads Globals
- (client) one await path for the slow-request notice
- (output) print_doc takes any Display value
- drop semicolons from README and CONTRIBUTING prose
- restructure the README around demo and highlights, add CONTRIBUTING
- (readme) uninstall instructions
- (man) command pages carry a real DESCRIPTION
- (cli) the user-facing env vars are discoverable from help
- (cli) pin that HTTP_PROXY routes requests through the proxy
- (ci) msrv job comment describes the job, not a deleted doc
- fix drift in README, design, and testing
- (live) profile teardown cannot hang forever
- (error) captured 400 envelopes classify as documented
- (cli) sigint test syncs on the request, not a sleep
- (cli) completions smoke test covers all five shells
- (spec) fetch-spec says whether the spec actually changed
- (readme) the fetch-spec demo shows the command's real output
- (readme) em dashes stop being the default connector
- (readme) affiliation note lives in the top callout
- (readme) drop decorative bold
- (readme) shorter hero — one-clause tagline, one-line callout
- (readme) lighter top — one callout line, names where they matter
- drop the "They coexist." tail
- link text names the topic, not the file-and-section pair
- (readme) drop the musl cert note
- (readme) affiliation disclaimer; alerts where they earn it
- (readme) install section leads with the cross-platform script
- (readme) ctrld disambiguation as a GitHub alert
- (readme) drop the contextless teaser block
- direnv support and a sourceable .env.example
- drop
$ prompts from copy-pasteable samples
- (readme) shell-neutral completions example
- (readme) plain prose in the quickstart; completions delegate to --help
- (readme) quickstart guides setup, first operation, and discovery
- AGENTS.md becomes a leaf — shared content moves to canonical homes
- (readme) repair the hero image and label the installer
- (readme) hero with logo and badges
- release-readiness audit fixes
- trim noise and telegraphese from the reader-facing docs
- (readme) drop the release-contents paragraph from Scope
- (readme) introduce the API token before the quickstart block
- (readme) testing.md in the doc table; .env is for live tests only
- extract testing into docs/testing.md
- (agents) audit fixes — placement, generated-file trap, conventions
- single-source agent instructions, CLAUDE.md -> AGENTS.md symlink
- (roadmap) trim needless words from the release watch items
- retire plan.md in favor of roadmap.md
- (release) v0.1 machinery
- (live) opt-in live suite against the real API
- (cli) close the remaining api coverage gaps
- record the raw 2xx-is-success contract for cdctl api
- correct comment rot found in review
- add the missing module doc to completions
- one behavior per test in the config and error suites
- expect instead of allow where dead code is dead everywhere
- (cli) guard global flag ids against subcommand collisions
- (error) one constructor for stdout write failures
- (api) dedup the client pipelines and the origin policy
- record the cdctl api output and confirmation contracts
- (cli) prove the Phase 2 gate at the binary level
- (api) split request transport from response interpretation
- reconcile contracts with the Phase 1 implementation
- bootstrap cdctl design, verified API reference, and delivery plan
Install controld-cli 0.1.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/joaodrp/controld-cli/releases/download/v0.1.0/controld-cli-installer.sh | sh
Install prebuilt binaries via Homebrew
brew install joaodrp/tap/cdctl
Download controld-cli 0.1.0