The first stable release. Everything a player touches was audited end-to-end
for production — the six capture paths (Claude Code CLI + IDE panel, Codex CLI
- IDE extension, Cursor, Copilot Chat), every CLI command, scoring parity with
the server, the installers, and the docs — and the sharp edges found were
fixed. No protocol change: a v0.4.x install upgrades cleanly with
promptly update.
Fixed
promptly init --force(andplay --force) empties the folder before
unpacking — keeping.gitand.promptly/(your reset backups and the
solve clock survive). Unpacking over leftover files failed the post-unpack
baseline check with a misleading "corrupt download" error that no retry
could ever fix.- A no-arg
promptly playoutside a level workspace fails cleanly instead
of first ending the active capture session and rescoping the daemon to the
wrong folder — the same wrong-directory guardstartalready had. promptly start <level>accepts the short level names every other command
takes (lru,7,stage-1-01). It falsely refused them in the correct
workspace — including the exact formsubmit's own hint tells you to type.- The signed prompt count
Pno longer inflates on agentic runs.
Task-subagent transcript lines (isSidechain), meta records (isMeta), and
slash-command lines in the Claude Code JSONL no longer count as user prompts
or misgroup the turns that follow them. - Copilot thinking text is counted once, in the thinking bucket. It was
estimated into the output count and (when rounds record real counts) summed
again as thinking; without recorded counts it now estimates thinking instead
of inflating output. - An unresolvable Cursor per-prompt model pick no longer inherits the
previous prompt's — turns fall to the composer's configured model or
degrade toestimated, never to a stale price. promptlyd statusreports a stopped session as idle, matching what
promptly statusalready said.- Pairing no longer times out after a single poll if the server omits the
device-flow window — a missingexpires_indefaults to the usual 15 minutes. promptlyd installon macOS no longer fightspromptly downand
promptly update: the launchd agent relaunches only after a crash
(KeepAlive.SuccessfulExit=false), the same policy as systemd's
Restart=on-failure. And a service install now runs with the idle
auto-shutdown disabled (--idle-timeout-secs 0) on every platform — an
always-on agent used to exit cleanly after 15 idle minutes and, under an
on-failure-only restart policy, stay down.promptly doctor's closing verdict counts warnings honestly ("4 of 7
checks need attention" instead of calling warnings failures).promptly score's live context line shows the run time it actually
assumed (--secondsincluded) instead of a hardcoded "2s".- Internal build-plan numbers no longer leak into
promptly --help, and the
--api-urlhelp names the real default (the production site, not localhost).
Changed
- Local projections score estimated captures exactly as grading does.
Editor-adapter captures (Cursor / Codex / Copilot) floor the effort base at
anchor parity — the server's fairness rule since 2026-07-15 — and the scored
harness is the weight-dominant one over the signed sources, sowatch,
score, and the submit preview no longer project higher than the graded
result on estimated runs. The breakdown says when the floor applied. claude-fable-5spellings resolve like the other Anthropic tiers —
datestamped or reordered forms find the priced row instead of the floor.- A Codex session can never be re-scoped by a later metadata line: the
session's original cwd stays authoritative, so a future Codex version
persisting cwd-carrying events mid-session can't silently drop turns. - A crashed adapter scan reports itself on
/health/promptly doctor
(unsupported, with a restart hint) instead of dying silently behind a stale
detectedstatus. - The CLI notes a version-mismatched daemon when it reuses one that
survived an upgrade (a service-managed or non-default-port daemon), with the
promptly downhint to relaunch it on the new build. - The installers upgrade a live install safely. Both stop or step around a
running daemon instead of dying halfway,install.ps1keeps the old binary
as a rollback until the new one has landed, runs in its own scope (no
variables leak into your shell viairm | iex), preserves aREG_EXPAND_SZ
user PATH instead of flattening%VAR%entries, broadcasts the PATH change,
and works on Windows PowerShell 5.1. promptly init --forcerefuses a folder that isn't a Promptly workspace
— now that--forcewipes before unpacking, a mistyped--dirmust never
point it at an arbitrary folder.- Every release asset ships with a
.sha256checksum file. - README correctness pass: the signed chain is v4 (not v3), all six capture
paths are named — including the Claude Code IDE panel's JSONL-only caveat —
and the install, idle-shutdown, and command-list copy matches the code.
Install / upgrade
- macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/AidanHT/promptly-daemon/main/install.sh | sh - Windows:
irm https://raw.githubusercontent.com/AidanHT/promptly-daemon/main/install.ps1 | iex - Already installed:
promptly update
Full Changelog: v0.4.8...v1.0.0