# Changelog

Source: https://docs.coderhelm.com/changelog

What changed in CoderHelm, month by month, from the merged pull requests of both repos.

Generated at build time from the merged pull requests of [coderhelm-platform](https://github.com/CoderHelm/coderhelm-platform) (the agents and API, at `637aaa459db2`) and [coderhelm](https://github.com/CoderHelm/coderhelm) (the dashboard and these docs), covering the last 6 months. CoderHelm ships from `main` continuously, so there are no version numbers after the tags listed at the end.

## October 2026 [#october-2026]

### Agents and API [#agents-and-api]

- Custom roles: team-made roles, enforced on every request ([#273](https://github.com/CoderHelm/coderhelm-platform/pull/273))
- Support tickets: name people when the ticket is opened ([#274](https://github.com/CoderHelm/coderhelm-platform/pull/274))
- Token limits: separate monthly limits for new tokens, cache reads and cache writes ([#272](https://github.com/CoderHelm/coderhelm-platform/pull/272))
- Meter every model call: streamed worker calls, broken replies, Titan, durable writes ([#271](https://github.com/CoderHelm/coderhelm-platform/pull/271))
- Log findings: create a fix PR from a finding, by hand or automatically ([#266](https://github.com/CoderHelm/coderhelm-platform/pull/266))
- Cache the skill check's inventory across a sync's items ([#270](https://github.com/CoderHelm/coderhelm-platform/pull/270))
- Health counts only a team's own failed messages; unreadable DLQ messages are archived ([#267](https://github.com/CoderHelm/coderhelm-platform/pull/267))
- Log analyzer test: Sonnet 5.5 cache reads at $0.20 ([#269](https://github.com/CoderHelm/coderhelm-platform/pull/269))
- Sonnet 5.5 cache reads are $0.20 per million tokens, not $0.10 ([#268](https://github.com/CoderHelm/coderhelm-platform/pull/268))
- Support tickets: add people, follow, email everyone on the ticket ([#264](https://github.com/CoderHelm/coderhelm-platform/pull/264))
- Code graph for every repo and every agent that reads code ([#263](https://github.com/CoderHelm/coderhelm-platform/pull/263))
- Close runs on purpose: a new closed status, one or many at once, and reopen ([#265](https://github.com/CoderHelm/coderhelm-platform/pull/265))
- Weekly summary goes to every active team; each person can still turn it off ([#262](https://github.com/CoderHelm/coderhelm-platform/pull/262))
- Retired model ids run as their replacement; they can no longer be saved ([#261](https://github.com/CoderHelm/coderhelm-platform/pull/261))
- History tool: a blame range over 500 lines is cut to the first 500, not refused ([#260](https://github.com/CoderHelm/coderhelm-platform/pull/260))
- Every failed run says why and where; CI red told honestly ([#259](https://github.com/CoderHelm/coderhelm-platform/pull/259))
- Notifications: post to Slack as well as Teams, with sealed, masked webhooks ([#258](https://github.com/CoderHelm/coderhelm-platform/pull/258))
- Plan new work as new work, read the ticket's earlier PRs, prove environments, follow near matches ([#256](https://github.com/CoderHelm/coderhelm-platform/pull/256))
- Real ticket keys in commits, sandbox results read from what ran, unconfirmed checks routed through CI ([#257](https://github.com/CoderHelm/coderhelm-platform/pull/257))
- Support tickets: attach items, and consented read-only support view ([#255](https://github.com/CoderHelm/coderhelm-platform/pull/255))
- Support queue: read every queued ticket without begins_with on an empty prefix ([#254](https://github.com/CoderHelm/coderhelm-platform/pull/254))
- PRs cover the whole job: copied blocks, steps outside the PR, every environment, Open items ([#253](https://github.com/CoderHelm/coderhelm-platform/pull/253))
- Proof check: read CI gates for any stack, check Terraform in the sandbox ([#252](https://github.com/CoderHelm/coderhelm-platform/pull/252))
- Reviewer: keep the PR's title and the findings on each review record ([#250](https://github.com/CoderHelm/coderhelm-platform/pull/250))
- Distrust the compromised eMudhra intermediates: webpki-roots 1.0.10, rustls-webpki 0.103.16 ([#251](https://github.com/CoderHelm/coderhelm-platform/pull/251))
- Admin: teams grouped by organisation, beta sign-ups, and invitees join the team that invited them ([#248](https://github.com/CoderHelm/coderhelm-platform/pull/248))
- Auto-merge: stop and re-arm from a PR comment or the dashboard ([#249](https://github.com/CoderHelm/coderhelm-platform/pull/249))
- Support tickets: team-scoped tickets, an admin queue and email both ways ([#247](https://github.com/CoderHelm/coderhelm-platform/pull/247))
- Analytics: compare with the period before, counted from records ([#246](https://github.com/CoderHelm/coderhelm-platform/pull/246))
- Reviews approve or request changes; unconfirmed facts are triaged, not a blanket hold ([#244](https://github.com/CoderHelm/coderhelm-platform/pull/244))
- Jira app: read:space:confluence, which the Confluence probe and space reads need ([#245](https://github.com/CoderHelm/coderhelm-platform/pull/245))
- Search across runs, reviewed PRs, releases and plans for ⌘K; runs list filters by repo ([#239](https://github.com/CoderHelm/coderhelm-platform/pull/239))
- Team agents run as review steps: plan, code and prose ([#243](https://github.com/CoderHelm/coderhelm-platform/pull/243))
- feat: read Confluence through the installed Jira app ([#242](https://github.com/CoderHelm/coderhelm-platform/pull/242))
- SQL name check: a date part (dateadd(day, ...)) is a keyword, not a column ([#241](https://github.com/CoderHelm/coderhelm-platform/pull/241))
- Admins can resend and revoke every pending invite; invites expire after 30 days ([#240](https://github.com/CoderHelm/coderhelm-platform/pull/240))
- Proof and review hold to the evidence the run recorded; pushes after an approval are reviewed incrementally ([#237](https://github.com/CoderHelm/coderhelm-platform/pull/237))
- Proof warning says only what is still unverified, and CI's green result clears it ([#238](https://github.com/CoderHelm/coderhelm-platform/pull/238))
- Repo pick follows the ticket's PR; continuations keep their plan; no duplicate run while a PR is open ([#236](https://github.com/CoderHelm/coderhelm-platform/pull/236))
- Large files read in full; empty writes over real files refused; no-op fix cycles stall ([#235](https://github.com/CoderHelm/coderhelm-platform/pull/235))
- Reviewer evals: review a case's diff with the real prompt, tools and critic ([#232](https://github.com/CoderHelm/coderhelm-platform/pull/232))
- Teams set their own branch, commit and PR title templates ([#233](https://github.com/CoderHelm/coderhelm-platform/pull/233))
- Data first, regex last: read real records before deciding a rule ([#234](https://github.com/CoderHelm/coderhelm-platform/pull/234))
- Reviewer learns from people's pushback on its findings ([#231](https://github.com/CoderHelm/coderhelm-platform/pull/231))
- Team instructions reach every agent that writes, proves, describes or reviews a change ([#230](https://github.com/CoderHelm/coderhelm-platform/pull/230))
- Reviewer: extending an existing pattern or carrying out a stated decision is not a finding ([#229](https://github.com/CoderHelm/coderhelm-platform/pull/229))
- Reviewer: show which PRs are queued, being reviewed, or waiting on CI or people ([#228](https://github.com/CoderHelm/coderhelm-platform/pull/228))
- REST lookups: record how much came back, and flag an empty list to the agent ([#227](https://github.com/CoderHelm/coderhelm-platform/pull/227))
- Prove what a change rests on before its PR opens ([#226](https://github.com/CoderHelm/coderhelm-platform/pull/226))
- REST APIs and OpenSearch are data sources; every source has a guide for agents ([#222](https://github.com/CoderHelm/coderhelm-platform/pull/222))
- Platform admin: teams overview, and only CoderHelm-verified identities count ([#225](https://github.com/CoderHelm/coderhelm-platform/pull/225))
- Record when members use the app, not only when they sign in ([#223](https://github.com/CoderHelm/coderhelm-platform/pull/223))
- Read unique indexes, not only constraints, before deciding a table's keys ([#221](https://github.com/CoderHelm/coderhelm-platform/pull/221))
- Named OpenSearch clusters, a guide per connection, PR descriptions kept true, field-meaning rules ([#220](https://github.com/CoderHelm/coderhelm-platform/pull/220))
- Who asks for work: one row per person, CoderHelm's own work labelled ([#219](https://github.com/CoderHelm/coderhelm-platform/pull/219))
- Runs list: search by ticket key or number, title, repo, PR number and status over all of a team's runs ([#218](https://github.com/CoderHelm/coderhelm-platform/pull/218))
- Many REST APIs per team; no second E2E fix while one is open; one-size merge status ([#217](https://github.com/CoderHelm/coderhelm-platform/pull/217))
- Releases: release now, automatic retries, blocked releases shown ([#216](https://github.com/CoderHelm/coderhelm-platform/pull/216))
- Coder diligence: no duplicate PRs, full-diff descriptions, migration registration, schema-change rules ([#215](https://github.com/CoderHelm/coderhelm-platform/pull/215))
- A multi-repo run waits on each pull request's own CI, and the CI wait loop stops after about a day of checks instead of looping forever ([#214](https://github.com/CoderHelm/coderhelm-platform/pull/214))
- A database lookup whose result has a type the Data API can't send (regclass, oid) runs again returning rows as JSON text, instead of failing as unreachable ([#213](https://github.com/CoderHelm/coderhelm-platform/pull/213))
- Any answer to CoderHelm's question on a waiting run carries the person's direction, whatever words it uses ([#212](https://github.com/CoderHelm/coderhelm-platform/pull/212))
- A plan says what it rests on (code, data or new work) and is checked for that; a person's direction on the ticket informs the checks instead of being blocked by them ([#211](https://github.com/CoderHelm/coderhelm-platform/pull/211))
- A traced code decision supersedes an earlier outside-the-code conclusion; a cause spanning repositories is planned in full, in merge order ([#210](https://github.com/CoderHelm/coderhelm-platform/pull/210))
- REST API connection: agents GET records from a system a team uses, under the paths it allows, with its key in the header it names ([#209](https://github.com/CoderHelm/coderhelm-platform/pull/209))
- Code that writes a wrong value makes it our bug, never a change outside the code; data problems need the source's own value; unreproducible values and display fallbacks get rules ([#208](https://github.com/CoderHelm/coderhelm-platform/pull/208))
- Data decisions must cite the code that writes the value (opened in the run) and the scope ([#207](https://github.com/CoderHelm/coderhelm-platform/pull/207))
- The planner reads the code that writes a wrong value, the keys that force records together, how widespread it is and who reads it, before deciding ([#206](https://github.com/CoderHelm/coderhelm-platform/pull/206))
- OpenSearch connection: agents list indexes, read mappings, search and count documents read only, limited to the indexes a team shares ([#205](https://github.com/CoderHelm/coderhelm-platform/pull/205))
- A run that ended as needing a change outside the code can be retried ([#204](https://github.com/CoderHelm/coderhelm-platform/pull/204))
- The planner reads the team's own instructions and traces a value step by step in production; test fixtures use neutral names ([#203](https://github.com/CoderHelm/coderhelm-platform/pull/203))
- Agents can see what a page rendered, the planner traces a shown value from the page back to its source, and a plan whose files exist here stays here ([#202](https://github.com/CoderHelm/coderhelm-platform/pull/202))
- A plan that describes data the planner never looked up goes back once to check it; still unchecked, it writes no code ([#201](https://github.com/CoderHelm/coderhelm-platform/pull/201))
- The planner reads each ticket comment whole, with line breaks; only a ticket past 60,000 characters of comments has its oldest shortened ([#200](https://github.com/CoderHelm/coderhelm-platform/pull/200))
- Jira comments reach the planner as plain text, dated and in full, so a person's diagnosis is read instead of 600 characters of document markup ([#199](https://github.com/CoderHelm/coderhelm-platform/pull/199))
- The planner debugs data before deciding where a fix belongs: follows the exact value by id, gets room to trace it, never blames a system it couldn't read ([#198](https://github.com/CoderHelm/coderhelm-platform/pull/198))
- CI failing on CoderHelm's own PR after its run finished goes back to the fix loop, and a flaky-test fix starts its proof when its run finishes ([#197](https://github.com/CoderHelm/coderhelm-platform/pull/197))
- The auto-merge status comment is one bold line and a short checklist, not a heading with commit hashes ([#196](https://github.com/CoderHelm/coderhelm-platform/pull/196))
- Skill stats range reads again, a PR a person closed is never reopened, the reviewer knows its page-check budget, quieter shared-install log ([#195](https://github.com/CoderHelm/coderhelm-platform/pull/195))
- A ticket CoderHelm already handled never gets the same PR again: plans keyed on history, read it and fail closed, comments read for intent, one review verdict ([#194](https://github.com/CoderHelm/coderhelm-platform/pull/194))
- One merge gate per PR with one status comment, woken by reviews and finished CI; replies to people on CoderHelm's PRs; a person's draft stays a draft; nightly evals call the model through a narrow AWS role ([#193](https://github.com/CoderHelm/coderhelm-platform/pull/193))
- One verdict function decides every formal review; model errors are typed and requeued by one policy in every pass; asks are read by a model; replayed reviewer evals guard the class ([#192](https://github.com/CoderHelm/coderhelm-platform/pull/192))
- A review that fails for a service error is retried and never posts a blocking verdict; replies keep the formal verdict in step; a sweep re-runs stuck reviews ([#191](https://github.com/CoderHelm/coderhelm-platform/pull/191))
- Plans decide where the fix belongs: a change outside the code is reported on the ticket with no PR, the reviewer flags hardcoded record overrides, and closed PRs teach the repo a lesson ([#190](https://github.com/CoderHelm/coderhelm-platform/pull/190))
- chore(gateway): stop scanning the MCP configs table on every cold start now that all credentials are sealed ([#189](https://github.com/CoderHelm/coderhelm-platform/pull/189))
- fix(live): check table, column, type and field names against the source's description before a lookup is sent, and hide columns per table with suggested hidden fields ([#188](https://github.com/CoderHelm/coderhelm-platform/pull/188))
- fix(reviewer): check the team's own public pages with check_url, and only verified defects request changes ([#187](https://github.com/CoderHelm/coderhelm-platform/pull/187))
- fix(security): seal MCP server credentials with KMS bound to team and server ([#186](https://github.com/CoderHelm/coderhelm-platform/pull/186))
- Team agents read with their own declared tools; the check holds each item to its runtime; plan chat uses skills, agents and data sources ([#185](https://github.com/CoderHelm/coderhelm-platform/pull/185))
- feat(integrations): AWS account abilities (logs, metrics, Airflow) found by a role check, one integrations endpoint, old metrics and Airflow connections folded in ([#184](https://github.com/CoderHelm/coderhelm-platform/pull/184))
- fix(worker): stop a Jira run whose named repo isn't turned on instead of silently re-picking another ([#183](https://github.com/CoderHelm/coderhelm-platform/pull/183))
- fix(skills): a re-check of the same item gives the same result: inventory-settled requirements, held steps, temperature 0 where taken ([#182](https://github.com/CoderHelm/coderhelm-platform/pull/182))
- feat(connectors): New Relic, Confluence, CloudWatch metrics, Airflow and AWS identity for agents ([#181](https://github.com/CoderHelm/coderhelm-platform/pull/181))
- fix(skills): a placeholder answer is unusable and asked again, and the check no longer asks the API to hold answers to the schema ([#180](https://github.com/CoderHelm/coderhelm-platform/pull/180))
- feat(skills): always apply a team skill or command in full to matching work, scoped by repository, pass and path ([#179](https://github.com/CoderHelm/coderhelm-platform/pull/179))
- feat(agents): github_history tool reads commits, blame, pull requests, releases, tags, deployments and Actions runs through the GitHub App ([#177](https://github.com/CoderHelm/coderhelm-platform/pull/177))
- fix(skills): one malformed step never fails a check, read commands map to GitHub backed tools, and nobody is sent to connect what is already connected ([#178](https://github.com/CoderHelm/coderhelm-platform/pull/178))
- fix(skills): the second try of a check isn't held to the schema by the API, since every stub came from a constrained answer ([#176](https://github.com/CoderHelm/coderhelm-platform/pull/176))
- fix(skills): retry a stub check at high effort, log how each answer ended, and never leave an outdated check showing after a failure ([#175](https://github.com/CoderHelm/coderhelm-platform/pull/175))
- chore: mentedb 0.41.0, an edited memory is recalled again ([#174](https://github.com/CoderHelm/coderhelm-platform/pull/174))
- fix(skills): a stub answer from the check is asked again once and never kept, and the item text is fenced off as data ([#173](https://github.com/CoderHelm/coderhelm-platform/pull/173))
- feat(skills): check each repository skill against the team's real Coderhelm tools and keep a translated version ([#171](https://github.com/CoderHelm/coderhelm-platform/pull/171))
- Treat quarantined-only CI failures as passing and make the ticket delay a team setting ([#172](https://github.com/CoderHelm/coderhelm-platform/pull/172))
- feat(alerts): a recovery records the ticket of the alert it resolves, so the dashboard can pair them ([#170](https://github.com/CoderHelm/coderhelm-platform/pull/170))
- chore: memory engine to mentedb 0.40.0 from crates.io, proven to open snapshots the old engine wrote ([#169](https://github.com/CoderHelm/coderhelm-platform/pull/169))
- fix(weekly-summary): every figure counts what its label says, over the week it names ([#168](https://github.com/CoderHelm/coderhelm-platform/pull/168))
- fix: count every model call once, with all four token parts and per-model prices ([#166](https://github.com/CoderHelm/coderhelm-platform/pull/166))
- feat(weekly-summary): turn on the Monday send, only for teams with a rollout list ([#167](https://github.com/CoderHelm/coderhelm-platform/pull/167))
- feat: make the weekly summary email and unsubscribe pages dark only, and add a per-team rollout list for the scheduled send ([#165](https://github.com/CoderHelm/coderhelm-platform/pull/165))
- feat: redesign the weekly summary email with no money, tokens split four ways, and an unsubscribe page that asks before it acts ([#164](https://github.com/CoderHelm/coderhelm-platform/pull/164))
- feat: admins set the token limit; weekly summary email with signed one-click unsubscribe, shipped switched off ([#163](https://github.com/CoderHelm/coderhelm-platform/pull/163))
- fix(gateway): platform admin only for the signup allowlist, member checks on plan writes, plans paging, health checks read the status index, no start over for runs in flight ([#161](https://github.com/CoderHelm/coderhelm-platform/pull/161))
- fix(gateway): store and return the token usage email preference the worker reads ([#160](https://github.com/CoderHelm/coderhelm-platform/pull/160))
- feat(activity): access log of every skill read and agent ask with run, work and reason; filtered lookup log; activity summary ([#158](https://github.com/CoderHelm/coderhelm-platform/pull/158))
- feat(team): permissions table from enforced role checks, link GitHub sign-ins, non-clobbering GitHub upsert ([#162](https://github.com/CoderHelm/coderhelm-platform/pull/162))
- fix(data-sources): agents look schemas up and get real names on a wrong one; no stray colons reach the Data API; broken tools can't be saved; failures keep their cause ([#159](https://github.com/CoderHelm/coderhelm-platform/pull/159))
- fix: team per installation, server-side write shas, sandbox runway, memlock/code-graph errors, review anchors and cost, plan cap, run outcomes ([#157](https://github.com/CoderHelm/coderhelm-platform/pull/157))
- fix: update open PRs on ticket edits, drop stale CI events, skip bot comments, resolve SHA refs, paginate PR run lookup ([#156](https://github.com/CoderHelm/coderhelm-platform/pull/156))
- feat(skills): flag tools a repo item asks for that Coderhelm's agents don't have ([#155](https://github.com/CoderHelm/coderhelm-platform/pull/155))
- feat(alerts): one recovery card per open alert, linking the alert it resolves ([#154](https://github.com/CoderHelm/coderhelm-platform/pull/154))
- feat(skills): usage stats for a team's skills and agents ([#153](https://github.com/CoderHelm/coderhelm-platform/pull/153))
- feat(skills): say which team agents were consulted on what Coderhelm writes ([#152](https://github.com/CoderHelm/coderhelm-platform/pull/152))
- feat(skills): tie each agent ask to its run and file version, count asks, record who switched an agent ([#151](https://github.com/CoderHelm/coderhelm-platform/pull/151))
- feat(skills): keep each question put to a team agent, and let admins try one ([#150](https://github.com/CoderHelm/coderhelm-platform/pull/150))
- feat(skills): agents can ask a team agent a question, with no tools ([#149](https://github.com/CoderHelm/coderhelm-platform/pull/149))
- feat(skills): read a team's skills from a connected repo and give them to the agents ([#148](https://github.com/CoderHelm/coderhelm-platform/pull/148))
- fix(data-sources): array slices run, and database errors say what went wrong ([#147](https://github.com/CoderHelm/coderhelm-platform/pull/147))
- fix(analytics): fill in merge times for PRs merged before they were recorded ([#146](https://github.com/CoderHelm/coderhelm-platform/pull/146))
- fix(tools): a path input can't carry a slash, backslash or escape ([#145](https://github.com/CoderHelm/coderhelm-platform/pull/145))
- fix(data-sources): close five read-path escapes found in a security review ([#144](https://github.com/CoderHelm/coderhelm-platform/pull/144))
- feat(e2e): the fix PRs setting starts fixes on its own, at most two per repo a week ([#143](https://github.com/CoderHelm/coderhelm-platform/pull/143))
- fix(triggers): editing a ticket whose PR merged no longer starts a second PR ([#142](https://github.com/CoderHelm/coderhelm-platform/pull/142))
- feat(tools): a team's own tools — named, typed, reviewed reads the agents can call ([#140](https://github.com/CoderHelm/coderhelm-platform/pull/140))
- feat(memory): provenance, usage, pins, edits, recall preview and agent profiles ([#138](https://github.com/CoderHelm/coderhelm-platform/pull/138))
- feat(analytics): token totals per run, per merged PR, per day and per repo ([#141](https://github.com/CoderHelm/coderhelm-platform/pull/141))
- fix(runs): answer from what was read when steps run out, record the chosen repo, name the repo a ticket's files live in ([#139](https://github.com/CoderHelm/coderhelm-platform/pull/139))
- feat(e2e): read Playwright HTML reports, so repos that only upload them need no change ([#137](https://github.com/CoderHelm/coderhelm-platform/pull/137))
- feat(e2e): E2E test intelligence — read every run, tell flaky from broken, act on it ([#133](https://github.com/CoderHelm/coderhelm-platform/pull/133))
- feat(analytics): answer whether Coderhelm is worth it, from records it already keeps ([#132](https://github.com/CoderHelm/coderhelm-platform/pull/132))
- fix(reviewer): steadier verdicts, shorter reviews, one review per commit ([#136](https://github.com/CoderHelm/coderhelm-platform/pull/136))
- feat(data-sources): exact hidden names with a leading = ([#135](https://github.com/CoderHelm/coderhelm-platform/pull/135))
- fix(data-sources): warehouse lookups run in a rolled-back read-only transaction ([#134](https://github.com/CoderHelm/coderhelm-platform/pull/134))
- feat(data-sources): read-only Redshift warehouses, every shared database in one source ([#131](https://github.com/CoderHelm/coderhelm-platform/pull/131))
- fix(data-sources): say 1 row and 1 line, not 1 rows ([#130](https://github.com/CoderHelm/coderhelm-platform/pull/130))
- feat(data-sources): full lookup text and paging for the activity feed ([#129](https://github.com/CoderHelm/coderhelm-platform/pull/129))
- feat(agents): read-only logs and database sources in a team's AWS account ([#128](https://github.com/CoderHelm/coderhelm-platform/pull/128))
- fix(reviewer): a before-merge heads-up is fine, a demand is not ([#127](https://github.com/CoderHelm/coderhelm-platform/pull/127))
- fix(reviewer): leave copy to its owners, answer with the repo, and keep a calm tone ([#126](https://github.com/CoderHelm/coderhelm-platform/pull/126))
- feat(agents): investigate bug reports with the team's data sources ([#125](https://github.com/CoderHelm/coderhelm-platform/pull/125))
- feat(agents): planner and coding agents use a team's data sources ([#124](https://github.com/CoderHelm/coderhelm-platform/pull/124))
- feat(reviewer): read-only lookups against a team's own API ([#123](https://github.com/CoderHelm/coderhelm-platform/pull/123))
- fix(reviewer): team label rules outrank the repo's docs ([#122](https://github.com/CoderHelm/coderhelm-platform/pull/122))
- fix(reviewer): read replies and resolved threads before re-raising a concern ([#121](https://github.com/CoderHelm/coderhelm-platform/pull/121))
- chore: use generic names in comments, prompts and test fixtures ([#120](https://github.com/CoderHelm/coderhelm-platform/pull/120))
- feat(alerts): alert budget in tokens; offer seen non-alarm alerts for text rules ([#119](https://github.com/CoderHelm/coderhelm-platform/pull/119))
- feat(alerts): daily alert spend budget, 5 runs per rule, no catch-all rules ([#118](https://github.com/CoderHelm/coderhelm-platform/pull/118))
- feat(alerts): per-alarm rules on alert routes and a topic's alarm list ([#117](https://github.com/CoderHelm/coderhelm-platform/pull/117))
- feat(alerts): recoveries post to Teams only when the route turns them on ([#116](https://github.com/CoderHelm/coderhelm-platform/pull/116))
- fix(alerts): message alerts keep their fields; link fields become buttons ([#115](https://github.com/CoderHelm/coderhelm-platform/pull/115))
- feat(alerts): compact Teams alert cards with details behind a toggle ([#114](https://github.com/CoderHelm/coderhelm-platform/pull/114))
- feat(alerts): notify-only routes post alerts to Teams without a run ([#113](https://github.com/CoderHelm/coderhelm-platform/pull/113))
- fix(log-analyzer): restore analysis, stop false resolutions, add Teams notifications ([#112](https://github.com/CoderHelm/coderhelm-platform/pull/112))
- feat(alerts): Teams notifications with a team channel and per-route override ([#111](https://github.com/CoderHelm/coderhelm-platform/pull/111))
- feat(api): cursor pagination for runs, reviews, releases and recommendations ([#110](https://github.com/CoderHelm/coderhelm-platform/pull/110))
- feat(alerts): record every alert so each has its own link ([#109](https://github.com/CoderHelm/coderhelm-platform/pull/109))
- feat(alerts): turn monitoring alerts into pull requests ([#108](https://github.com/CoderHelm/coderhelm-platform/pull/108))
- fix(reviewer): a person's push always gets a visible review ([#107](https://github.com/CoderHelm/coderhelm-platform/pull/107))
- fix(reviewer): let a burst of pushes settle before reviewing ([#106](https://github.com/CoderHelm/coderhelm-platform/pull/106))
- fix(reviewer): don't post a verdict once the PR has moved past the reviewed commit ([#105](https://github.com/CoderHelm/coderhelm-platform/pull/105))
- fix(reviewer): offer a suggestion only when it is a safe in-place edit ([#104](https://github.com/CoderHelm/coderhelm-platform/pull/104))
- feat(release-notes): send the email webhook's secret as X-Automation-Webhook-Token ([#103](https://github.com/CoderHelm/coderhelm-platform/pull/103))
- fix(reviewer): approve only when nothing is left to change ([#102](https://github.com/CoderHelm/coderhelm-platform/pull/102))
- fix(reviewer): with Require tests on, every missing-tests finding blocks the merge ([#101](https://github.com/CoderHelm/coderhelm-platform/pull/101))
- feat(release-notes): also write notes for release tags pushed outside CoderHelm ([#100](https://github.com/CoderHelm/coderhelm-platform/pull/100))
- fix(github): pin installation-token format via X-GitHub-Stateless-S2S-Token; scrub stateless tokens fully ([#99](https://github.com/CoderHelm/coderhelm-platform/pull/99))
- fix(reviewer): add family labels (E2E:\<area\>) even before they exist; never defer a label to the author ([#98](https://github.com/CoderHelm/coderhelm-platform/pull/98))
- feat(coder): write tests per the repo's conventions when Require tests is on ([#97](https://github.com/CoderHelm/coderhelm-platform/pull/97))
- fix(reviewer): log every CI-label decision with the reviewer's reason ([#96](https://github.com/CoderHelm/coderhelm-platform/pull/96))

### Dashboard and docs [#dashboard-and-docs]

- Learning page: what CoderHelm learned from outcomes, with pin and revert ([#189](https://github.com/CoderHelm/coderhelm/pull/189))
- Dashboard: long saved text reads like text ([#184](https://github.com/CoderHelm/coderhelm/pull/184))
- Docs site: send the CORS header through CloudFront's CORS settings ([#188](https://github.com/CoderHelm/coderhelm/pull/188))
- Integrations: add remote MCP servers by address, connect with OAuth, pick their tools ([#186](https://github.com/CoderHelm/coderhelm/pull/186))
- Developer docs at docs.coderhelm.com ([#187](https://github.com/CoderHelm/coderhelm/pull/187))
- Custom roles on the team page ([#181](https://github.com/CoderHelm/coderhelm/pull/181))
- Support: add people on the new-ticket form ([#182](https://github.com/CoderHelm/coderhelm/pull/182))
- Token limit page: set new token, cache read and cache write limits separately ([#180](https://github.com/CoderHelm/coderhelm/pull/180))
- Code graph explorer: calm motion and readable labels ([#179](https://github.com/CoderHelm/coderhelm/pull/179))
- Show estimated and late model calls on Analytics, and the usage check on Admin ([#178](https://github.com/CoderHelm/coderhelm/pull/178))
- Dashboard: no page scrolls sideways on a phone ([#177](https://github.com/CoderHelm/coderhelm/pull/177))
- Logs in the main menu: findings, fix PRs and automatic fix PRs ([#171](https://github.com/CoderHelm/coderhelm/pull/171))
- Dashboard: agent, memory, test runs, alert, new tool and health pages on the shared components ([#174](https://github.com/CoderHelm/coderhelm/pull/174))
- Name the shared queue page in the top bar; main's UI lint is green again ([#176](https://github.com/CoderHelm/coderhelm/pull/176))
- Deploys never delete the files open pages still need ([#175](https://github.com/CoderHelm/coderhelm/pull/175))
- Health shows only the team's failed messages; admins get the shared queue ([#172](https://github.com/CoderHelm/coderhelm/pull/172))
- Dashboard: one top bar on every page, and a permissions matrix on Settings \> Team ([#169](https://github.com/CoderHelm/coderhelm/pull/169))
- Support ticket page: a readable thread, a side panel, and people on a ticket ([#170](https://github.com/CoderHelm/coderhelm/pull/170))
- Settings pages on the shared settings pieces: one save bar, plain words ([#173](https://github.com/CoderHelm/coderhelm/pull/173))
- Code graph page: every repo with its graph's status, Turn off and Rebuild ([#167](https://github.com/CoderHelm/coderhelm/pull/167))
- Close runs on purpose: from the run page, several from the runs list, and reopen ([#168](https://github.com/CoderHelm/coderhelm/pull/168))
- Dashboard: one code block with syntax highlighting everywhere ([#166](https://github.com/CoderHelm/coderhelm/pull/166))
- One markdown editor for tickets, replies, instructions, notes and the plan chat ([#165](https://github.com/CoderHelm/coderhelm/pull/165))
- Dashboard UI foundations: shared settings pieces, UI lint in CI, a menu that shows it scrolls ([#164](https://github.com/CoderHelm/coderhelm/pull/164))
- Analytics: CI outcomes in Where it struggles ([#163](https://github.com/CoderHelm/coderhelm/pull/163))
- Dashboard: choose Teams, Slack or both wherever CoderHelm posts ([#162](https://github.com/CoderHelm/coderhelm/pull/162))
- Redesign Settings \> AI models as settings rows with a sticky save bar ([#161](https://github.com/CoderHelm/coderhelm/pull/161))
- New plan: one question first, and a chat that reads like a conversation ([#160](https://github.com/CoderHelm/coderhelm/pull/160))
- Plan page: a document with one summary line and one action ([#159](https://github.com/CoderHelm/coderhelm/pull/159))
- Support: attach items to tickets, support access setting, support view banner ([#158](https://github.com/CoderHelm/coderhelm/pull/158))
- Lists: a long chip never squeezes the title; skills show always-apply in a few words ([#157](https://github.com/CoderHelm/coderhelm/pull/157))
- Admin: one row per organisation, a Beta sign-ups tab, and the count in the menu ([#152](https://github.com/CoderHelm/coderhelm/pull/152))
- Run page: team agents asked, as a timeline ([#156](https://github.com/CoderHelm/coderhelm/pull/156))
- Review page: the PR's title and link, findings as cards, a quiet used section ([#154](https://github.com/CoderHelm/coderhelm/pull/154))
- Reviewer: stop and re-arm auto-merge on a PR ([#153](https://github.com/CoderHelm/coderhelm/pull/153))
- Support: Report an issue and Contact us open a ticket in the app, not GitHub or email ([#155](https://github.com/CoderHelm/coderhelm/pull/155))
- Support tickets: Get help in the menu and ⌘K, the team's tickets, and an admin queue ([#151](https://github.com/CoderHelm/coderhelm/pull/151))
- Analytics: compare with the period before, and this month so far ([#150](https://github.com/CoderHelm/coderhelm/pull/150))
- Reviewer settings: a summary, section nav and one row per setting ([#149](https://github.com/CoderHelm/coderhelm/pull/149))
- Analytics: ratings read as the share rated helpful, not emoji counts ([#148](https://github.com/CoderHelm/coderhelm/pull/148))
- Skills: review steps for team agents, and needs that assume a local machine ([#146](https://github.com/CoderHelm/coderhelm/pull/146))
- feat: show Confluence connected through the Jira app ([#145](https://github.com/CoderHelm/coderhelm/pull/145))
- One list system on every listing page, and a ⌘K command palette ([#147](https://github.com/CoderHelm/coderhelm/pull/147))
- Team page: admins can resend and revoke every pending invite, and expired invites say so ([#144](https://github.com/CoderHelm/coderhelm/pull/144))
- Releases: a dense list grouped by repo, with each destination's real state ([#143](https://github.com/CoderHelm/coderhelm/pull/143))
- Reviewer: a skipped review reads 'No review needed' with the reason ([#142](https://github.com/CoderHelm/coderhelm/pull/142))
- Workflow settings: git conventions for branch names, commits and PR titles ([#141](https://github.com/CoderHelm/coderhelm/pull/141))
- Reviewer page: in-review, waiting and done PRs with live status ([#140](https://github.com/CoderHelm/coderhelm/pull/140))
- Data sources: grouped by kind, one row per source, one Add button ([#139](https://github.com/CoderHelm/coderhelm/pull/139))
- Data sources: REST APIs and OpenSearch clusters, and a guide for agents on every source ([#136](https://github.com/CoderHelm/coderhelm/pull/136))
- Admin: teams overview, and the server decides who sees the page ([#138](https://github.com/CoderHelm/coderhelm/pull/138))
- Team page: show when each member was last active, not only signed in ([#137](https://github.com/CoderHelm/coderhelm/pull/137))
- Connections: saved key shown as saved, a guide for agents, any kind named when adding another ([#135](https://github.com/CoderHelm/coderhelm/pull/135))
- Who asks for work: people first, CoderHelm's own work and unrecorded runs after ([#134](https://github.com/CoderHelm/coderhelm/pull/134))
- Runs page: search by ticket, title, repo or PR number, and filter by status ([#133](https://github.com/CoderHelm/coderhelm/pull/133))
- Many REST APIs; release buttons say what they do ([#132](https://github.com/CoderHelm/coderhelm/pull/132))
- Releases: Release now, retry blocked releases, show failed runs ([#131](https://github.com/CoderHelm/coderhelm/pull/131))
- REST API in Settings → Integrations: address, key header, key, allowed paths and hidden fields ([#130](https://github.com/CoderHelm/coderhelm/pull/130))
- OpenSearch in Settings → Integrations: cluster address, read-only user, shared indexes and hidden fields; neutral examples in comments ([#129](https://github.com/CoderHelm/coderhelm/pull/129))
- The run page offers Retry on a run that ended as needing a change outside the code ([#128](https://github.com/CoderHelm/coderhelm/pull/128))
- Runs whose fix is a change outside the code say so in the list and show what to change on the run page ([#126](https://github.com/CoderHelm/coderhelm/pull/126))
- feat(integrations): one aligned list per section instead of cards; no AWS item or count in the menu ([#127](https://github.com/CoderHelm/coderhelm/pull/127))
- feat(integrations): cards open from anywhere and say what you can do inside; Connections in the menu with an attention count; your websites list ([#125](https://github.com/CoderHelm/coderhelm/pull/125))
- feat(data-sources): show lookups stopped for an unknown name, hide a column in one table, and accept or dismiss suggested hidden fields ([#124](https://github.com/CoderHelm/coderhelm/pull/124))
- feat(skills): plan chat shows the skills, agents and data sources each answer used; runs, reviews and plans say what they used; agent pages show the read-only tools each agent's own file gives it ([#123](https://github.com/CoderHelm/coderhelm/pull/123))
- feat(integrations): one Settings → Integrations page with status, abilities and credentials for every integration; old pages redirect ([#122](https://github.com/CoderHelm/coderhelm/pull/122))
- fix(skills): put the read and ask switches in their own settings row ([#121](https://github.com/CoderHelm/coderhelm/pull/121))
- fix(skills): label steps that talk to a person instead of showing the raw kind ([#120](https://github.com/CoderHelm/coderhelm/pull/120))
- feat(data-sources): connect New Relic, Confluence, CloudWatch metrics and Airflow, show the AWS role update link, and send skill-check gaps to the right connection ([#119](https://github.com/CoderHelm/coderhelm/pull/119))
- feat(skills): always apply toggle with repository, pass and path scope, list badge, suggestions, and applied standards on runs and reviews ([#118](https://github.com/CoderHelm/coderhelm/pull/118))
- fix(skills): no connect link for an integration that's already connected, a partly checked state instead of a failure, and the check's notes on the page ([#117](https://github.com/CoderHelm/coderhelm/pull/117))
- feat(site): restore Ship code, not tickets and tell the product as one story grouped by job ([#116](https://github.com/CoderHelm/coderhelm/pull/116))
- fix(site): markdown rewrite regex broke the viewer request function and took the site down ([#115](https://github.com/CoderHelm/coderhelm/pull/115))
- feat(dashboard): every page outside skills, data sources and the AWS, alerts and Jira settings sits in the shared centered column with the shared header ([#114](https://github.com/CoderHelm/coderhelm/pull/114))
- feat(site): story driven home, one page per job, Markdown twins and llms.txt ([#113](https://github.com/CoderHelm/coderhelm/pull/113))
- feat(skills): show how Coderhelm runs each skill, step by step, with what to connect and the translated version ([#111](https://github.com/CoderHelm/coderhelm/pull/111))
- feat(dashboard): redesigned AWS, Alert routes, Jira and Data sources pages with status cards, guided setup, a live rule preview and paired recoveries ([#112](https://github.com/CoderHelm/coderhelm/pull/112))
- Tests page: ticket delay setting and the CI step that skips quarantined tests ([#110](https://github.com/CoderHelm/coderhelm/pull/110))
- feat(dashboard): shared Page, PageHeader and Section layout at the analytics width; analytics and releases use it ([#109](https://github.com/CoderHelm/coderhelm/pull/109))
- feat(dashboard): every token meter shows the total of all four parts, with the parts, cache hit rate and split by feature ([#108](https://github.com/CoderHelm/coderhelm/pull/108))
- feat(dashboard): admins and the owner change the token limit; weekly summary switch says what it sends and when ([#107](https://github.com/CoderHelm/coderhelm/pull/107))
- fix(dashboard): audit every page outside settings: error states with retry, plain status words, phone layouts, keyboard and screen reader fixes, page titles, 404 page ([#106](https://github.com/CoderHelm/coderhelm/pull/106))
- feat(dashboard): settings hub redesign; token limit, GitHub and nav items open for the roles that see them ([#105](https://github.com/CoderHelm/coderhelm/pull/105))
- feat(dashboard): activity views for skill reads, agent asks and data lookups with who, why, run and result ([#104](https://github.com/CoderHelm/coderhelm/pull/104))
- feat(dashboard): redesigned team page with live permissions, one row per person, GitHub linking and invites ([#103](https://github.com/CoderHelm/coderhelm/pull/103))
- fix(dashboard): explain a blocked GitHub sign-in when the org already uses Coderhelm ([#102](https://github.com/CoderHelm/coderhelm/pull/102))
- chore: new Google tags for coderhelm.com and app.coderhelm.com ([#101](https://github.com/CoderHelm/coderhelm/pull/101))
- feat(dashboard): warn on the Skills page when an item asks for tools Coderhelm doesn't have ([#100](https://github.com/CoderHelm/coderhelm/pull/100))
- feat(dashboard): label recovery outcomes and explain one-recovery-per-alert ([#99](https://github.com/CoderHelm/coderhelm/pull/99))
- feat(dashboard): usage stats on the Skills page ([#98](https://github.com/CoderHelm/coderhelm/pull/98))
- feat(dashboard): a page for each team agent, and team agent asks on run pages ([#97](https://github.com/CoderHelm/coderhelm/pull/97))
- feat(dashboard): Skills page for a team's skills read from a repo ([#96](https://github.com/CoderHelm/coderhelm/pull/96))
- fix(dashboard): draw select arrows with room from the edge ([#95](https://github.com/CoderHelm/coderhelm/pull/95))
- fix(dashboard): distinct icons for Tests, Code Graph and Plans; landing covers memory profiles and your own tools ([#94](https://github.com/CoderHelm/coderhelm/pull/94))
- feat(dashboard): your own tools — write, check, approve, try and follow team tools ([#93](https://github.com/CoderHelm/coderhelm/pull/93))
- feat(dashboard): Memory redesign: agent profiles, provenance, pins, edits, recall preview, new icon ([#92](https://github.com/CoderHelm/coderhelm/pull/92))
- feat(analytics): measure in tokens, not dollars ([#91](https://github.com/CoderHelm/coderhelm/pull/91))
- feat(landing): E2E test intelligence, Redshift warehouses, analytics ([#90](https://github.com/CoderHelm/coderhelm/pull/90))
- feat(dashboard): Tests area for E2E runs, flaky and broken tests, quarantine, fixes and coverage ([#87](https://github.com/CoderHelm/coderhelm/pull/87))
- feat(dashboard): analytics that show whether Coderhelm is worth it and where it struggles ([#88](https://github.com/CoderHelm/coderhelm/pull/88))
- feat(data-sources): explain exact hidden names in the editor ([#89](https://github.com/CoderHelm/coderhelm/pull/89))
- feat(dashboard): connect and try a Redshift warehouse ([#86](https://github.com/CoderHelm/coderhelm/pull/86))
- feat(landing): maintenance, not a handoff ([#85](https://github.com/CoderHelm/coderhelm/pull/85))
- feat: live activity feed for data sources, and the landing page section ([#84](https://github.com/CoderHelm/coderhelm/pull/84))
- feat(dashboard): connect logs and databases from your AWS account ([#83](https://github.com/CoderHelm/coderhelm/pull/83))
- feat(dashboard): label planner and coding-agent lookups ([#82](https://github.com/CoderHelm/coderhelm/pull/82))
- feat(dashboard): data sources setup for the reviewer ([#81](https://github.com/CoderHelm/coderhelm/pull/81))
- chore(dashboard): generic placeholder text ([#80](https://github.com/CoderHelm/coderhelm/pull/80))
- fix(dashboard): show a rule's full match and repo on the route card ([#79](https://github.com/CoderHelm/coderhelm/pull/79))
- feat(dashboard): alert budget in tokens; pick seen alerts for text rules ([#78](https://github.com/CoderHelm/coderhelm/pull/78))
- feat(dashboard): alert budget card and match-by switch on rules ([#77](https://github.com/CoderHelm/coderhelm/pull/77))
- feat(dashboard): per-alarm rules and alarm list on alert routes ([#76](https://github.com/CoderHelm/coderhelm/pull/76))
- feat(dashboard): Post recoveries toggle on alert routes ([#75](https://github.com/CoderHelm/coderhelm/pull/75))
- feat(dashboard): notify-only option on alert routes ([#74](https://github.com/CoderHelm/coderhelm/pull/74))
- fix(dashboard): AWS page shows analysis errors, stable External ID, Teams for findings ([#73](https://github.com/CoderHelm/coderhelm/pull/73))
- feat(dashboard): Teams channel for alerts with per-route override ([#72](https://github.com/CoderHelm/coderhelm/pull/72))
- feat(dashboard): paginate runs, reviews and releases ([#71](https://github.com/CoderHelm/coderhelm/pull/71))
- feat(dashboard): alert history with a shareable page per alert ([#70](https://github.com/CoderHelm/coderhelm/pull/70))
- feat(dashboard): Alerts page for alert → pull request routes ([#69](https://github.com/CoderHelm/coderhelm/pull/69))
- feat(dashboard): write-only webhook secret for release-notes email ([#68](https://github.com/CoderHelm/coderhelm/pull/68))
- docs(dashboard): release notes run for any release tag, not only CoderHelm's ([#67](https://github.com/CoderHelm/coderhelm/pull/67))
- docs(dashboard): Require tests also makes CoderHelm write the tests ([#66](https://github.com/CoderHelm/coderhelm/pull/66))

## September 2026 [#september-2026]

### Agents and API [#agents-and-api-1]

- feat: release notes for every release tag — GitHub Release, Confluence changelog, IT email ([#95](https://github.com/CoderHelm/coderhelm-platform/pull/95))
- feat(reviewer): every review says which tests will run and where, or why none ([#94](https://github.com/CoderHelm/coderhelm-platform/pull/94))
- fix(reviewer): CI labels only for behavior changes, strictest for deploy labels ([#93](https://github.com/CoderHelm/coderhelm-platform/pull/93))
- fix(infra): pin the aws-cdk CLI so deploys never resolve "latest" from npm ([#92](https://github.com/CoderHelm/coderhelm-platform/pull/92))
- feat(reviewer): per-repo CI labels picked from the PR's changes; require tests option ([#91](https://github.com/CoderHelm/coderhelm-platform/pull/91))
- fix(reviewer): re-reviews resolve fixed threads and always report progress; @CoderHelm in any case, thread replies ([#90](https://github.com/CoderHelm/coderhelm-platform/pull/90))
- feat: dashboard re-review endpoint + Claude Opus 5.5 / Sonnet 5.5 / Fable 5.1 ([#89](https://github.com/CoderHelm/coderhelm-platform/pull/89))
- fix(reviewer): removing a Terraform lifecycle guard forces HIGH risk ([#87](https://github.com/CoderHelm/coderhelm-platform/pull/87))
- fix(reviewer): auto-release tags are ANNOTATED, never lightweight ([#86](https://github.com/CoderHelm/coderhelm-platform/pull/86))

### Dashboard and docs [#dashboard-and-docs-1]

- feat(dashboard): release notes settings + Releases page ([#65](https://github.com/CoderHelm/coderhelm/pull/65))
- feat(landing): Reviewer section — reviews, auto merge, CI labels, tests, code graph ([#64](https://github.com/CoderHelm/coderhelm/pull/64))
- fix(infra): pin the aws-cdk CLI so deploys never resolve "latest" from npm ([#63](https://github.com/CoderHelm/coderhelm/pull/63))
- feat(reviewer): PR labels + require tests settings ([#62](https://github.com/CoderHelm/coderhelm/pull/62))
- feat(reviewer): Review-now + Re-review buttons, Claude 5.5 / Fable 5.1 models ([#61](https://github.com/CoderHelm/coderhelm/pull/61))

## August 2026 [#august-2026]

### Agents and API [#agents-and-api-2]

- fix(reviewer): one dashboard record per review — armed APPROVE updated, not re-inserted ([#85](https://github.com/CoderHelm/coderhelm-platform/pull/85))
- fix(reviewer): sensitive classifier — path-precise hard override, score-only content ([#84](https://github.com/CoderHelm/coderhelm-platform/pull/84))
- fix(worker): never reset a PR's branch + 15-min health watch + approval semantics ([#83](https://github.com/CoderHelm/coderhelm-platform/pull/83))
- fix(reviewer): never assert external facts from memory — verify registry, cite CI ([#82](https://github.com/CoderHelm/coderhelm-platform/pull/82))
- feat(graph): code graph as its own API surface + precomputed browse summary ([#81](https://github.com/CoderHelm/coderhelm-platform/pull/81))
- feat(worker): code-graph lookups for the PR-maker agent (shared with reviewer) ([#80](https://github.com/CoderHelm/coderhelm-platform/pull/80))
- feat(reviewer): persistent per-repo code graph — structure the agent can query ([#79](https://github.com/CoderHelm/coderhelm-platform/pull/79))
- fix(reviewer): dedup duplicate review jobs (consume-once) — no more double reviews ([#78](https://github.com/CoderHelm/coderhelm-platform/pull/78))
- feat(reviewer): batch release tags per repo (tag_batch_minutes, default 15) ([#77](https://github.com/CoderHelm/coderhelm-platform/pull/77))
- feat(reviewer): handle native "Re-request review" button + explicit re-reviews always post ([#76](https://github.com/CoderHelm/coderhelm-platform/pull/76))
- fix(reviewer): bound the self-review-\>fix loop (convergence cap + approve hysteresis) ([#75](https://github.com/CoderHelm/coderhelm-platform/pull/75))
- fix(reviewer): auto-merge "declined" now waits + explains, not "merge manually" ([#74](https://github.com/CoderHelm/coderhelm-platform/pull/74))
- fix(reviewer): stop comment spam — comment only on verdict change + dedup gate notices ([#73](https://github.com/CoderHelm/coderhelm-platform/pull/73))
- feat(worker): PR maker adds deploy label(s) at PR creation, not the merge gate ([#72](https://github.com/CoderHelm/coderhelm-platform/pull/72))
- fix(worker): auto-merge CI verdict — cancelled ≠ failure, wait for CI to settle, post abort once ([#71](https://github.com/CoderHelm/coderhelm-platform/pull/71))
- fix(worker): read codegen result from the uploaded artifact, not the log marker ([#70](https://github.com/CoderHelm/coderhelm-platform/pull/70))
- fix(worker): a cancelled run must never be resurrected to awaiting_ci ([#69](https://github.com/CoderHelm/coderhelm-platform/pull/69))
- fix(worker): resolve PR base branch from the live PR, not the stale run record ([#68](https://github.com/CoderHelm/coderhelm-platform/pull/68))
- fix(reviewer): never review draft PRs + dedup same-head events ([#67](https://github.com/CoderHelm/coderhelm-platform/pull/67))
- fix(reviewer/implement): honest zero-change message + coalesce rapid re-reviews ([#66](https://github.com/CoderHelm/coderhelm-platform/pull/66))
- feat(reviewer): flag out-of-scope / scope-creep changes ([#65](https://github.com/CoderHelm/coderhelm-platform/pull/65))
- fix(worker): restore_file defaults to the PR base branch, not main ([#64](https://github.com/CoderHelm/coderhelm-platform/pull/64))
- feat(reviewer): support multiple deploy labels (comma-separated) ([#63](https://github.com/CoderHelm/coderhelm-platform/pull/63))
- feat(reviewer): org-aware review — org-wide instructions + cross-repo blast radius ([#62](https://github.com/CoderHelm/coderhelm-platform/pull/62))
- feat(reviewer): CoderHelm self-labels the PRs it opens ([#61](https://github.com/CoderHelm/coderhelm-platform/pull/61))
- fix(reviewer): require the trigger label for bot-authored PRs too ([#60](https://github.com/CoderHelm/coderhelm-platform/pull/60))
- fix(worker): give the implement pass the original ticket as data source-of-truth ([#59](https://github.com/CoderHelm/coderhelm-platform/pull/59))
- feat(reviewer): configurable deploy label added before merge ([#58](https://github.com/CoderHelm/coderhelm-platform/pull/58))
- fix(reviewer): enforce the bot-APPROVE key in the auto-merge gate ([#57](https://github.com/CoderHelm/coderhelm-platform/pull/57))
- feat(reviewer): armed auto-merge — waits for human approval + all-green CI (#56) ([#56](https://github.com/CoderHelm/coderhelm-platform/pull/56))
- fix(worker): stop Teams reminder spam — head-change floor, sweep card cap, visible dedup-save failures ([#55](https://github.com/CoderHelm/coderhelm-platform/pull/55))
- ci(deploy): batch prod deploys on a 10-min window instead of per-push ([#54](https://github.com/CoderHelm/coderhelm-platform/pull/54))
- feat(reviewer): agentic repo-context review + risk engine + verification + health-v2 ([#53](https://github.com/CoderHelm/coderhelm-platform/pull/53))
- fix(infra): move review-reminder schedule to API stack (dependency cycle) ([#52](https://github.com/CoderHelm/coderhelm-platform/pull/52))
- feat(reviewer): merge own PRs w/ human approval, self-review feedback, Teams reminders ([#51](https://github.com/CoderHelm/coderhelm-platform/pull/51))
- feat(reviewer): real semver release tags + auto-review CoderHelm's own PRs ([#50](https://github.com/CoderHelm/coderhelm-platform/pull/50))
- feat(reviewer): label-triggered PR reviewer agent (backend) ([#49](https://github.com/CoderHelm/coderhelm-platform/pull/49))
- fix(worker): give the feedback/review pass a surgical edit_file (shared with implement) ([#48](https://github.com/CoderHelm/coderhelm-platform/pull/48))
- feat(worker): teach the agent not to querySelector by Tailwind arbitrary-value classes ([#47](https://github.com/CoderHelm/coderhelm-platform/pull/47))
- fix(worker): run affected unit tests in the sandbox gate before opening a PR ([#46](https://github.com/CoderHelm/coderhelm-platform/pull/46))
- fix(worker): a passing workflow no longer masks a failing one (shipped red PRs) ([#45](https://github.com/CoderHelm/coderhelm-platform/pull/45))

### Dashboard and docs [#dashboard-and-docs-2]

- feat(dashboard): Code Graph section — stats, symbol search, visual explorer ([#60](https://github.com/CoderHelm/coderhelm/pull/60))
- feat(dashboard): code-graph toggle in reviewer config ([#59](https://github.com/CoderHelm/coderhelm/pull/59))
- feat(dashboard): batch-window (minutes) control for release tags ([#58](https://github.com/CoderHelm/coderhelm/pull/58))
- feat(dashboard): deploy-label help text reflects add-at-PR-creation ([#57](https://github.com/CoderHelm/coderhelm/pull/57))
- feat(dashboard): deploy label field supports multiple labels ([#56](https://github.com/CoderHelm/coderhelm/pull/56))
- feat(dashboard): org-wide review standards editor ([#55](https://github.com/CoderHelm/coderhelm/pull/55))
- feat(dashboard): persist selected repo in reviewer config URL ([#54](https://github.com/CoderHelm/coderhelm/pull/54))
- feat(dashboard): reviewer deploy-label config field ([#53](https://github.com/CoderHelm/coderhelm/pull/53))
- feat(dashboard): reviewer list as runs-style table, grouped by PR ([#52](https://github.com/CoderHelm/coderhelm/pull/52))
- feat(dashboard): search box for the health-check log-group picker ([#51](https://github.com/CoderHelm/coderhelm/pull/51))
- feat(dashboard): reviewer overhaul UI (risk breakdown, verify, health-v2, log picker) ([#50](https://github.com/CoderHelm/coderhelm/pull/50))
- feat(dashboard): reviewer Teams reminders config ([#49](https://github.com/CoderHelm/coderhelm/pull/49))
- feat(dashboard): reviewer tag mode (semver release vs date marker) ([#48](https://github.com/CoderHelm/coderhelm/pull/48))
- feat(dashboard): reviewer agent UI (config + reviews list + detail) ([#47](https://github.com/CoderHelm/coderhelm/pull/47))

## July 2026 [#july-2026]

### Agents and API [#agents-and-api-3]

- fix(worker): halt + squash CI-fix churn on stall (stop the timeout death) ([#44](https://github.com/CoderHelm/coderhelm-platform/pull/44))
- feat(repos): human-assigned repo roles to disambiguate Jira routing ([#43](https://github.com/CoderHelm/coderhelm-platform/pull/43))
- fix(worker): make Jira repo selection smart via code evidence ([#42](https://github.com/CoderHelm/coderhelm-platform/pull/42))
- fix(worker): defer on writer-slot contention instead of failing the run ([#41](https://github.com/CoderHelm/coderhelm-platform/pull/41))
- fix(auth): land invited teammates on their real team, not their personal team ([#40](https://github.com/CoderHelm/coderhelm-platform/pull/40))
- fix(worker): stop repair runs reverting user pushes ([#39](https://github.com/CoderHelm/coderhelm-platform/pull/39))

### Dashboard and docs [#dashboard-and-docs-3]

- feat(dashboard): repo role dropdown in repo settings ([#46](https://github.com/CoderHelm/coderhelm/pull/46))

## Tagged releases [#tagged-releases]

The platform was tagged during its first weeks:

- [`jira-app-production`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/jira-app-production) (2026-10-24): ci: publish the Jira app automatically on every change (#278)
- [`v0.6.0`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.6.0) (2026-07-23): execution sandbox: agent verifies against real build/lint/test output (+ Node-version faithfulness)
- [`v0.5.1`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.5.1) (2026-07-22): squash run commits at PR creation
- [`v0.5.0`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.5.0) (2026-07-22): race-safe branch writes
- [`v0.4.0`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.4.0) (2026-07-22): stuck-run recovery + toolchain pin
- [`v0.3.3`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.3.3) (2026-07-03): reset & re-run endpoint
- [`v0.3.2`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.3.2) (2026-07-03): durable run cancellation
- [`v0.3.1`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.3.1) (2026-07-03): human-closed PRs stop the run; never reopen/process
- [`v0.3.0`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.3.0) (2026-07-03): restore_file tool: byte-exact file recovery without LLM round-trip
- [`v0.2.4`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.2.4) (2026-07-03): awaiting_ci cap measures time-in-state
- [`v0.2.3`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.2.3) (2026-07-03): stale in-flight runs no longer block ticket triggers
- [`v0.2.2`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.2.2) (2026-07-03): feedback CI handoff: conflict pushes go awaiting_ci; skip path marks green draft PRs ready
- [`v0.2.1`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.2.1) (2026-07-03): stale run-error clearing; re-review reopens closed PRs and strips the Partial title marker
- [`v0.2.0`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.2.0) (2026-07-03): pipeline-quality overhaul: fail-closed gates, syntax gate, atomic edits, salvage, security fixes, Opus 4.8
- [`v0.1.1`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.1.1) (2026-07-03): repo routing: bare-name matches demoted to LLM hint
- [`v0.1.0`](https://github.com/CoderHelm/coderhelm-platform/releases/tag/v0.1.0) (2026-07-02): repo-snapshot search, trigger gate, run-lifecycle overhaul
