Repository navigation
v0.11.0
Mates become teammates with a setup of their own: each one gets its own configuration, a conductor that works with you and a worker that does the hands-on part, and "crewmate" now reads "Mate" wherever you see it. New installs start on the KAS engine, which no longer needs kiro-cli, and chat gains Escape to stop, a manual sidebar order and forks from the message menu. The Schedule form sets time and failure limits per job, long chats stream lighter, and a long list of security and platform fixes lands.
Mates with a conductor and a worker of their own
- Mate 2.0: every mate owns an agent file under
~/.kiro/mates/agents/, talks to you through a conductor chat that keeps its notes, and hands hands-on work to a worker session that follows its Profile and gets its skills; existing mates move over once at startup, with a notice saying what changed. - Workers that come back: a conductor can message an archived worker and revive it first, a worker's report wakes its mate after a restart, and a worker tab marks a released worker.
- Say Mate: the Mates page, roster, dialogs, settings rows and chat header now say Mate where they said crewmate, and the translations follow.
- Check-ins and imports: an opt-in Heartbeat check-in on the Goals tab wakes a mate every 30, 60, 120 or 240 minutes, the Profile shows monitor status, and one mate can be imported from a
.crewmatefile. - Pages a mate writes: a mate builds and themes its own Dashboard page, which goes live on apply with one call to roll back; it can look at its page as a PNG, keep progress on the page instead of in chat, show its worker sessions there and send its weekly report as a printable page.
- Tools on request (preview): with a mate's own preview switched on, off by default, it can find tools its worker lacks and request them through a card.
- Easier to follow: reopening a mate's chat lands on the last message you read, older history loads as you scroll up, your message is steered into the running turn and answered promptly, and a mate's direct message posts a notification.
Chat you can stop, fork and read
- Stop and switch mid-turn: Escape in the composer stops the running turn, a model picked while a reply streams takes effect at the turn boundary instead of failing, and Optimize prompt works while a turn runs and can be cancelled.
- Fork from the message menu: with Tail-only Fork on, a message's menu offers Fork with later messages only and Fork with earlier messages.
- Small conveniences: the message right-click menu adds Open link in new tab, and Tab and Shift+Tab indent and outdent list lines in the composer.
- Clearer transcripts: a row tells you when the agent saves a lesson and links to Review lessons, image reads show thumbnails of what they looked at, consecutive edits to one file merge into one row, every mid-conversation session reset is marked, and a reply cut off by compaction continues.
- Tabs and side panel: Settings → Chat → Sessions can open sidebar sessions in their own session tab, and Settings → Chat → Side panel gains Keep Side Panel Open and Pin Summary in Side Panel.
- Files, Git and comments: the Git tab lists every repo a chat works in, a folder the file tree cuts off opens in its own folder tab, code blocks in artifacts take line-anchored comments, and a mate's side panel documents take inline comments.
A sidebar, search and notifications that keep up
- Your own order: dropping a session between two unpinned rows switches the sort to Manual and offers Sorted by hand with Undo, Alt+Up and Alt+Down move a focused row, and the order and sort choice live on the gateway so every browser shows the same list.
- Broadcast and defaults: the sidebar's Broadcast message sends one message to many sessions, Settings → Chat names a Default Sidebar Folder for New Chats, and the pinned band is labeled while a tag filter narrows the list.
- Search: a
title:prefix limits a session search to titles, and Chinese queries are split into words instead of single characters. - Notifications: notes stack by sender and clear by group, Fix with Crew opens a new chat pre-filled with the notification and a request for next steps, and a note an agent publishes links back to its session.
Schedules and the command line
- Limits per job: the Schedule job form sets a run time limit and an auto-pause limit (0 means never), the board says when a job is in failure backoff, and a Runs as switch picks Custom agent or Mate, with a mate's jobs listed as Mate with a by-mate filter; an
app.jsoncron can setstrict_scheduleto start on the minute. - Command line:
kirocrew spawn runtakes--model,--agentand--crew,kirocrew agent createandupdatetake--model,kirocrew cron addandupdatetake--auto-pause-after, and a chat permission prompt accepts a typed reply;spawn_runtasks can carry a short label.
Voice and themes
- Voice: a setting picks the Text-to-Speech language, Settings → Voice → Fine-tuning can send a dictation when you deliberately stop it, voice settings answer "Is my audio kept?" for the chosen provider, and Read aloud speaks on your device when the gateway host cannot.
- Themes: Nu Disco joins the built-in themes, the Create Theme dialog gains a Paste CSS tab with a copyable design prompt for an AI, overlays can draw behind content, and installed packs can replace the welcome-screen ghost.
KAS by default, more from every backend
- KAS first: new installs with no saved harness choice start on KAS, listed before Kiro CLI and shown as Kiro Agent with each harness's logo; an explicit Kiro CLI choice is kept.
- No kiro-cli needed: the desktop app ships the pinned KAS engine,
install.shcan fetch it, the app stops bundling kiro-cli and detects your own install, credit usage is read from Crew's sign-in, and the engine switch now sits in Settings → Developer → Feature Previews. - MCP on KAS: elicitation requests from MCP servers are now answered, an MCP change applies to a live session in place instead of resetting every chat, and
agent.kas_persist_mcp_sign_in, off by default, keeps remote MCP sign-ins across sessions. - Other backends: a running pi turn can be steered, pi member threads get the mate panel, opencode takes a message added to a running turn, Side Chat runs read-only tools on the DeepSeek harness, and Kiro side chats refuse credential paths.
- Models and usage: Opus 5.5, Sonnet 5.5, Fable 5.1 and MiniMax windows are registered, and the Usage tab no longer shows estimated kiro-cli tokens.
Remote sessions, apps and skills
- Coder workspaces: a chat can run its workspace on a Coder workspace while the agent engine stays on the gateway, with files, a terminal, a Settings card and a composer chip.
- More sources: Bitbucket Server pull requests read through
dashboard.bitbucket_server_hosts, Azure DevOps watches wake on edited review comments, and first-run and Settings import can read an Amazon Quick setup. - Apps: an installed app learns when a newer version is published, the store offers updates for external-registry apps, the install consent gate shows a community registry's review tier, and ChatEmbed hosts can hide parts of the chat and show a stop button.
- Living UI skill: a built-in
living-uiskill teaches agents how motion, focus and readouts should behave in widgets and Dashboard pages, with a preview harness and a gallery example.
Lighter and faster
- Smoother streaming: a streaming reply re-parses only its last paragraph, background sessions notify the page once per frame, and settled rows no longer redraw on every chunk.
- Quicker starts: a new chat's memory lookup runs beside session startup, the prompt leaves out the Browser section when browsing is not set up, skills a turn cannot use are not injected, Crew's own MCP servers load less at start, and cold searches share one scoring pass.
Notable fixes
Chat and sessions. A new chat, fork or import stays open when an older session list arrives late, Back during a new chat returns to the session you left, the composer draft survives a memory mode switch, a staged @mention deletes whole, a throttled turn is re-sent with one copy of the prompt, and a Claude seat usage limit is reported as a limit, not retried as throttling. A side conversation comes back after a reload.
Channels. Slack mirrors a turn's whole reply to a linked thread, clears its working status on cancel and uploads inline images from the session's own folder, the Slack App Home cron list honors each job's timezone, Telegram stops re-announcing a held message, and Weixin keeps its QR-signed token after reconnecting.
Schedules. A cron mutation whose save fails is rolled back, a run that hits its deadline raises an alert, and chat and schedules keep working on a host with no timezone data.
Desktop and updates. The system-wide summon hotkey is opt-in on new installs, the updater installs the newest build instead of a superseded download and honors proxy settings, macOS Back and Forward swipes walk history, and the macOS updater no longer crashes on updates above 1 GiB.
Security and access. Shell expansion no longer slips past the cloud metadata denial, rm -rf of root or home is denied in its common spellings, a remote MCP probe URL is vetted for SSRF, the CLI proves the gateway peer before sending the local secret, the owner gate covers session history, knowledge reads and task actions, mate records live in a gateway-only directory, and each harness's own permission files are write-protected. A split AWS key pair or a cut link in a stream is redacted as one piece, and certifi is updated for an advisory.
What's Changed
- perf(memory): stem each distinct word once instead of once per lesson by @unstablebrainiac in #2944
- fix: resolve MCP callback port via marker and export bound port by @chenmingwei23 in #2927
- fix(browser): Fall back to compatible Chromium on systems with old libcups by @RohanK6 in #2897
- fix(prepare-pr): report when a PR closes no issue, and read the link back by @chenmingwei23 in #2535
- feat(research): per-campaign model pick threaded to the worker slot (#822) by @NicholasRBowers in #2994
- feat: notify on critical host memory posture by @rubencu in #2396
- test: raise backend coverage 87.22% -> 88.84% (+3,558 statements) by @CrysisDeu in #3005
- feat(knowledge): add .jsonl and .ndjson to FileReader.SUPPORTED by @johann-sew in #3000
- docs: say what the dispatch RFC's local path actually is by @CrysisDeu in #2957
- ci(fork-guard): split the two causes of an unresolved PR head by @CrysisDeu in #2949
- fix(i18n): translate the Security panel's English-passthrough strings by @dwu96 in #2943
- feat(telegram): mirror a Telegram conversation's dashboard turns back to the chat by @chenmingwei23 in #2976
- fix(build): pin the website bundle's V8 heap ceiling so macOS desktop builds stop OOMing by @kyleseaman in #859
- feat(telegram): use sendRichMessage for table rendering by @chenmingwei23 in #2965
- fix(i18n): make Design Critique's own error messages translatable by @CrysisDeu in #3007
- fix(ci): retry readiness reads and publish a non-terminal verdict on transport failure (#2753) by @NicholasRBowers in #2995
- test: assert rate limiter fast path never sleeps instead of timing it (#3008) by @bolichen97 in #3023
- test: raise frontend coverage 84.71% -> 86.04% (+924 statements) by @CrysisDeu in #3014
- test(companion): anchor the re-enable reminder to the clock its store uses by @CrysisDeu in #3024
- fix(dashboard): offer Korean in the STT language picker by @raphael-shin in #3018
- fix(session-map): lock SessionMap and make each action one critical section by @chenmingwei23 in #3031
- test: freeze the clock the /side isolation assertion compares by @tjdwlsdlaek in #3034
- fix(telegram): key the mirror opt-out by the durable bucket and keep explicit binds by @chenmingwei23 in #3021
- feat(dev-fleet): auto-restart gateway after Pull+Build on live checkout by @RohanK6 in #2738
- ci(fork-review): split the resolver's two causes and retry a failed query by @CrysisDeu in #3042
- fix(acp): classify kiro-cli's nameless model-unavailable wording as transient by @rubencu in #2982
- perf(chat): skip the dispatch for a repeated identical slots frame by @rnoack1 in #2745
- fix(context): gate the [UI LANGUAGE] steer on shipped catalogs, not tag shape (#1130) by @chenmingwei23 in #3049
- fix: keep slack sessions transcript reads off the event loop (#3052) by @chenmingwei23 in #3064
- fix(i18n): render the Design Critique target kind in the user's language by @CrysisDeu in #3062
- fix(knowledge): record agent document ownership inside the ingest by @leonlaiyc in #3059
- chore: drop dangling ticket references from test docstrings by @rnoack1 in #2697
- fix(chat): anchor tool elapsed timer to persisted start timestamp by @RohanK6 in #3045
- fix(apps): a git-installed app could report success and install nothing by @Zedmor in #1205
- fix(i18n): read the Design Critique recognition tail from the catalog by @CrysisDeu in #3081
- fix: keep repo name visible in Issue Radar repo switcher (#3047) by @chenmingwei23 in #3079
- fix: offload blocking startup work in _init_services off the event loop (#3051) by @chenmingwei23 in #3068
- fix: offload apps-dir walk and instances-registry writes to threads (#3055) by @chenmingwei23 in #3067
- fix: offload acp spawn filesystem syscalls off the event loop (#3054) by @chenmingwei23 in #3072
- fix: venv-first interpreter resolution for stdio MCP servers (#1807) by @chenmingwei23 in #3060
- fix(chat): keep the follow-up toggle correct across rapid clicks by @rnoack1 in #2703
- fix(slack): cap concurrent Home Tab session collections by @leonlaiyc in #3082
- fix: derive a usable spec name from a non-Latin description (#3002) by @NicholasRBowers in #3094
- fix(dashboard): restore full-height expanded widgets by @ayahiro1729 in #3086
- perf(dashboard): read slot state at keypress time, not by subscribing by @rnoack1 in #2886
- feat(md-notebook): follow the active theme on markdown headings by @andreyaurelien in #3066
- fix(i18n): read the Design Critique start button from the catalog by @CrysisDeu in #3085
- feat(crew): Crew Mode — multi-topic chat via engineered orchestrator pipeline by @CrysisDeu in #1295
- fix: add Windows kiro-cli auth store to credential candidates (#2782) by @bolichen97 in #2799
- feat(app-store): guide public vs private repo install in Sources popover by @iamwhatever in #2977
- fix: restore reading position on session switch instead of pinning to bottom (#2774) by @iamwhatever in #2882
- fix(governance): warn when a policy leaves capability rows ungoverned by @iamwhatever in #2983
- feat(skills): add Dismiss All button for pending auto-generated skills by @iamwhatever in #3083
- fix: offload app register/deregister to executor in routes (#3075) by @iamwhatever in #3093
- refactor: centralize bundled-interpreter detection (#3017) by @iamwhatever in #3096
- fix(slack): judge an OPTIONS click when it arrives, not the turn before by @NicholasRBowers in #2756
- fix(markdown): add rehypeUnwrapBlocks to prevent React DOM reconciliation crash by @kyleseaman in #3092
- fix: persist autonudge stop tombstones by @JoernZheng in #2450
- fix(test): stage summary-cache staleness by pinning mtime, not by racing the clock (#2981) by @NicholasRBowers in #3095
- fix: mark the macOS tray icon as a monochrome template image (#1007) by @NicholasRBowers in #3098
- fix(test): resolve orphan-cache tooltip via i18n, unbreaking frontend shard 2 by @CrysisDeu in #3112
- perf(dashboard): memoise the persisted-message entry builder by @rnoack1 in #2863
- perf(memory): build the lesson cosine scorer once per query, not per row by @unstablebrainiac in #3109
- feat(bench): LongMemEval + LoCoMo memory benchmark harness by @CrysisDeu in #2123
- feat: add session-pulse feedback survey via Aperture by @miamanav in #2865
- fix(mochi): keep Mochi interactions from resurfacing the dashboard by @buluoray in #3114
- ci: add PR-body marker waiver to Screenshot Evidence for fork PRs (#3115) by @bolichen97 in #3128
- fix(acp): give session start its own timeout budget (#2946) by @patrigao in #3119
- fix: note that a theme mono face also styles code surfaces by @michellemxm in #3110
- fix(instances): name an older peer instead of leaking HTTP 405 by @CrysisDeu in #2513
- docs(rfc): perpetual agents revision 3 — Phase 0 results by @CrysisDeu in #3135
- fix: keep the companion overlay out of screen captures by @CrysisDeu in #3125
- test(website): stop happy-dom orphaned navigation failing the shard by @iamwhatever in #3123
- test: raise backend coverage 88.85% -> 89.57% (+1,574 statements) by @CrysisDeu in #3118
- test: raise frontend coverage 86.17% -> 88.29% (+1,470 statements) by @CrysisDeu in #3132
- fix(mochi): stop the pet overlay trapping the user behind a 403 page by @buluoray in #3105
- refactor(mcp): move core tool descriptors and handlers per domain by @CrysisDeu in #3127
- feat(desktop): configurable system-wide hotkey to summon the dashboard (#190) by @bolichen97 in #2801
- fix(chat): cap follow-up chip width and clamp long option labels by @kyleseaman in #3137
- fix(test): prevent happy-dom ECONNREFUSED by avoiding live <script> in DOM builders by @RohanK6 in #3087
- test: make Windows pipe-close assertion deterministic by @adiarora06 in #2915
- fix(dev-fleet): graceful prune when systemd session bus is absent by @RohanK6 in #3040
- fix(test): teach the pet-overlay window double about setContentProtection by @CrysisDeu in #3149
- fix: re-pin chat to bottom when the scroller viewport resizes by @patrigao in #3157
- fix(test): repoint mcp_core coverage patches at consuming modules (main red) by @CrysisDeu in #3156
- docs(prepare-pr): add no-visual-delta marker guidelines by @RohanK6 in #3131
- fix(dashboard): validate and bound slot-detail query params by @rnoack1 in #2866
- fix(settings): prevent Remote Crew panel jitter on disabled state by @RohanK6 in #2815
- fix(cli): shut down chat cleanly on ctrl-c by @konippi in #1787
- feat(mcp): make the stub opt-in per server, and one sharing switch over it by @chenmingwei23 in #2810
- feat(discord): mirror a Discord conversation's dashboard turns back to the chat by @chenmingwei23 in #3035
- ci(security): add OWASP top-ten ruleset to Semgrep scan by @iamwhatever in #3097
- feat: add Kiro account details panel by @solnikhil in #2168
- fix: flush the slot before stamping a session summary's signature by @michellemxm in #3167
- refactor(dashboard): move the route table into ordered slices by @CrysisDeu in #3160
- fix(installer): bound the interpreter probe so a wedged shim cannot hang the install by @patrigao in #3129
- fix(mcp-apps): honor SEP-1865's visibility default for app tool calls by @kyleseaman in #2823
- perf(dashboard): lazy-load mermaid and trim redundant boot requests by @kyleseaman in #769
- fix(chat): dismiss a chat tab without waiting on a peer's transcript by @NicholasRBowers in #3107
- feat(agents): name the harness and signed-in account on the usage card by @kyleseaman in #3147
- test: fence yaml.full_load in the unsafe-load guard by @bolichen97 in #3117
- refactor: move client port resolution to a light leaf module (#2933) by @bolichen97 in #3138
- test: patch moved mcp_core helpers where consumers import them (#3155) by @bolichen97 in #3159
- docs: add Ariana Morgan (@arimorgan) to README contributors by @bolichen97 in #3161
- fix(sandbox): let a governance floor override the unsandboxed-exec opt-in by @iamwhatever in #3168
- test(chat): pin the block-assembler seed gate to one parse per mount by @rnoack1 in #3091
- feat(context): time each first-turn context section by @hoang-phan98 in #3175
- fix(knowledge): run the duplicate-skip gate off the event loop by @CrysisDeu in #2507
- feat(core): teach atomic_write bytes and owner-only lockdown, migrate six sites by @smeyffret in #2037
- fix(security): stop redacting OAuth consent URLs without weakening secret detection by @pepmach in #1328
- fix(mcp): preserve remote entry fields on sync and redact header credentials by @pepmach in #1326
- fix(dashboard): stop reporting other products' memory as this gateway's by @chenmingwei23 in #2845
- feat(desktop): add a Developer setting to stop starting a local gateway in #2917
- fix: KiroCrew instead of KiroClaw by @rlunar in #3180
- feat: add pod prune and orphan-HOME age to pod ls (#2567) by @chenmingwei23 in #3172
- fix(browser): downscale screenshots on longest edge, not just width by @pilami in #1502
- feat(cron): perpetual-agent foundations — reachable wake budget + transient retry by @CrysisDeu in #3148
- perf: skip MCP overlay rewrite when a stat-only fingerprint matches (#2521) by @chenmingwei23 in #3170
- fix: defer session-map disk writes to a snapshot flush off the event loop (#2405) by @bolichen97 in #3186
- perf(embeddings): pin llama.cpp threads and prioritize interactive embeds by @hoang-phan98 in #3185
- refactor(app-store): tighten the row contract, consume the catalog, and give lists icons by @CrysisDeu in #2961
- test: fix the two frontend tests broken on main (#3174, #3179) by @chenmingwei23 in #3189
- fix(build): make build fails for anyone whose python comes from uv or mise by @kaizawa97 in #1599
- feat: gate reviewer freshness and head runs in pr_status.py (#2550) by @chenmingwei23 in #3173
- fix(config): refresh the stale version stamp an upgrade leaves in config.json (#3102) by @NicholasRBowers in #3158
- fix(dashboard): stop the session the turn runs on, not dashboard: by @tjdwlsdlaek in #3074
- fix: clear leaked Node timers before happy-dom teardown (#3090) by @chenmingwei23 in #3208
- fix(sidebar): make reveal-in-sidebar survive the drawer mount (#912) by @NicholasRBowers in #3215
- fix(chat): insert a dropped folder's path instead of uploading it (#743) by @NicholasRBowers in #3205
- fix: resolve block-scalar values in skill frontmatter (#3182) by @bolichen97 in #3194
- fix(telegram): make the length splitter table-aware (#3010) by @bolichen97 in #3141
- fix(sandbox): sweep inherited fds in the probe child before unshare (#3150) by @NicholasRBowers in #3195
- feat(spec-builder): app-wide default model for spec generation (#3111) by @NicholasRBowers in #3163
- docs(rfc): perpetual agents — typed gates + spend-after-writeback (LoopX comparison) by @CrysisDeu in #3229
- refactor: hoist function-local kiro_crew.agent imports to module scope (#1050) by @chenmingwei23 in #3228
- fix(sidebar): persist reveal filter clearing, harden the flash path (#912) by @NicholasRBowers in #3222
- feat(chat): click-to-enlarge lightbox for mermaid diagrams (#3099) by @NicholasRBowers in #3214
- fix: label telemetry prior-window pair and To-90% cell with units (#1552) by @chenmingwei23 in #3238
- fix(appstore): add title to AppListRow meta line so truncation is named (#1555) by @chenmingwei23 in #3236
- fix: consolidate the three Node-discovery implementations (#1605) by @chenmingwei23 in #3230
- feat(app-store): consume the editorial document for rail order by @CrysisDeu in #3235
- fix(palette): keep-typing empty state below a scope's query minimum (#1830) by @bolichen97 in #3239
- docs: add new contributors to README by @bolichen97 in #3251
- refactor: consolidate the four SKILL.md frontmatter parsers (#3201) by @chenmingwei23 in #3246
- test(mcp-gateway): pin rewrite_agents params to fingerprint by @konippi in #3244
- fix: embed semantic memory at write time, rank retrieval from stored vectors (#3216) by @chenmingwei23 in #3243
- feat(dashboard): Git panel with repo status/log + auto-open Git and folder tabs by @alejacre in #1636
- fix(security): give deny rules a file search's scope by @patrigao in #2638
- fix: complete Slack OAuth scopes in app manifest by @rlunar in #3217
- feat(terminal): configurable default shell setting (#2831) by @NicholasRBowers in #2859
- feat(agent): let the chat turn ceiling be raised above 2h for unattended runs by @rubencu in #2858
- feat(md-notebook): render markdown tables in a note by @andreyaurelien in #3077
- refactor: converge skill-provider preview frontmatter onto SKILL_LOADER (#3249) by @chenmingwei23 in #3269
- fix: take auto_research campaigns DB off the event loop (#3050) by @chenmingwei23 in #3198
- fix(slack): private-channel manifest contract tests, over-grant ratchet, and reinstall docs (#3206) by @chenmingwei23 in #3224
- fix: queue digest chunks behind a dispatched injection (#3273) by @NicholasRBowers in #3281
- feat(chat): show the resolved model in the turn-stats footer in #3272
- fix(telegram): only send a table as a Rich Message when it parses as one by @chenmingwei23 in #3212
- fix(crew-companion): resolve all 33 pre-existing eslint warnings by @prateek98121 in #3200
- fix(chat): draw the single-chat row set in split view panes by @chenmingwei23 in #3302
- fix: pair settings captions with controls via label htmlFor (#3283) by @bolichen97 in #3303
- fix(test_dashboard_server_startup_coverage): adopt short_sock_dir in dashboard startup coverage socket tests by @tlobinger in #3319
- fix(sidebar): refresh session search results when a title changes by @rnoack1 in #3223
- feat(chat-sdk): own the composer's draft behaviour, starting with the side panel by @chenmingwei23 in #3291
- feat: surface "the agent asked you something" as a session status by @kyleseaman in #3151
- feat(app-store): render editorial spotlights with curator artwork by @CrysisDeu in #3258
- fix(security): an imported settings archive could schedule arbitrary shell commands by @kaizawa97 in #1627
- fix(apps): honor the configured registry branch over per-app declarations (#3330) by @NicholasRBowers in #3343
- fix(mochi): guard native Settings close against unsaved edits (#3326) by @NicholasRBowers in #3341
- fix: collapse per-completion assistant response inside subagent turn by @iamwhatever in #3207
- fix(mochi): bind native settings close after handleClose exists by @leeclarkuk in #3325
- fix(chat): retarget the panel to the pane a launch card was clicked in by @chenmingwei23 in #3334
- fix(mcp-gateway): gatewayd self-exits when its socket path disappears by @chenmingwei23 in #3329
- fix(slack): warn when a tracked channel is unreadable by the installed token by @bolichen97 in #3336
- perf(chat): animate the streaming shimmer on the compositor by @rnoack1 in #2743
- feat(themes): surface scoper-dropped overrides.css rules in Settings by @michellemxm in #2883
- fix(dev-fleet): expose provision run ids in fleet payload for reload reattach (#321) by @bolichen97 in #3338
- test(dashboard): assert strict and mixed internal-API buckets cannot overlap by @rnoack1 in #3256
- perf(dashboard): coalesce slot broadcasts so a burst of mutations emits one frame by @rnoack1 in #3234
- fix(chat): load older history without self-blocking or skipping messages by @rnoack1 in #3339
- fix(app-store): confirm Install-from-Path success and route to Library by @iamwhatever in #3143
- fix: recover the composer IME guard from an abandoned composition (#3345) by @bolichen97 in #3366
- feat: add the KAS ACP backend plumbing, not yet selectable by @iamwhatever in #3340
- test(website): close two shard races and document the barrier rule by @iamwhatever in #3367
- feat(crews): generate crew avatars as Kiro ghosts by @CrysisDeu in #3263
- refactor(electron): track gateway ownership as one state, not three booleans (#2282) by @iamwhatever in #3368
- fix(followup): keep scroll-layout option chips from overlapping the next chip by @iamwhatever in #3372
- ci(frontend): reduce vitest worker memory pressure by @adiarora06 in #3364
- test: stabilize flaky widget-tag streaming assertion (#3314) by @bolichen97 in #3378
- feat(file-explorer): open the file's location from the viewer by @kyleseaman in #3346
- fix: keep Restart & Update disabled after install is dispatched by @iamwhatever in #3380
- fix: keep local acks when a stale notifications fetch resolves (#2519) by @iamwhatever in #3370
- feat(browser): move browsing from the MCP proxy to the Playwright CLI by @bolichen97 in #3233
- fix(skills): resolve package/ skill keys unambiguously instead of guessing by @bolichen97 in #3369
- fix(prepare-pr): reword no-issue opt-out so it cannot form a close-on-merge trigger by @bolichen97 in #3389
- fix(i18n): report character count in side-panel oversize refusal (#3306) by @bolichen97 in #3394
- refactor: share one incognito-transcript classifier (#2464) by @iamwhatever in #3388
- feat: keep the kiro harness first-class as byo harnesses land by @CrysisDeu in #3400
- test: stabilize flaky Scroll to Latest pill assertion (#3288) by @bolichen97 in #3404
- fix(test): close the happy-dom iframe teardown race that fails shards by @iamwhatever in #3398
- ci: gate per-file coverage at 80% with a shrink-only baseline by @CrysisDeu in #3377
- feat: render the editorial featured list as app and collection cards by @CrysisDeu in #3386
- docs(chat): point the unwired transcript options at the reason, not a closed issue by @chenmingwei23 in #3422
- fix: stop auto-speak repeating the whole reply after a segment reset by @iamwhatever in #3415
- test: scope usage interception to this file's slot keys (#3264) by @iamwhatever in #3407
- fix(settings): use the shared switch for WeChat's enable control by @iamwhatever in #3405
- fix(source): queue source fetches at the memory ceiling instead of refusing by @kyleseaman in #3391
- feat: add a session summary panel to the chat side panel by @michellemxm in #3169
- fix(dashboard): keep the agent's purpose on the session-list status line by @CrysisDeu in #3419
- fix(security): scrub KIRO_API_KEY from the gateway environ like every other credential by @bolichen97 in #3401
- fix(publish): drop unsafe-eval from published widget CSP by @bolichen97 in #3374
- fix(dev-fleet): offer Cancel staged cutover on the live row by @bolichen97 in #3357
- fix(mcp): allow headers on remote MCP specs in Add Custom modal by @bolichen97 in #3347
- fix(sidebar): stop treating a finished turn as an unanswered question by @CrysisDeu in #3416
- fix: survive enterprise MCP registry governance instead of failing silently by @kyleseaman in #3409
- fix: route AcpClient._spawn PID-file tracking off the event loop (#3412) by @bolichen97 in #3442
- fix: hide mochi file chip shell actions outside the electron shell (#3411) by @bolichen97 in #3443
- fix(dashboard): derive side-panel oversize character target from byte density by @adiarora06 in #3439
- test: normalize mocked createObjectURL to a well-formed blob: URI by @adiarora06 in #3441
- fix(queue): use theme text color in queued message edit input by @cabbey in #3425
- test(mcp-gateway): add ambient-read tripwire for the rewrite pass (#3187) by @iamwhatever in #3453
- fix(cron): call record_success on CronService success path (#3428) by @iamwhatever in #3446
- fix(settings): render WeChat's session-folder setting like every other channel's by @chenmingwei23 in #3279
- fix: guard page-context Notification construction on Android Chrome by @Premshay in #1889
- fix: stop filtering bundled hooks + add wrapper-revision staleness (#3362, #3373) by @iamwhatever in #3437
- fix(prompt): stop promising direct calls for deferred MCP tools by @chenmingwei23 in #3464
- feat(mcp): make the Tool Search deferral thresholds configurable by @chenmingwei23 in #3465
- feat(instances): dropdown crew switcher and editable crew settings by @bolichen97 in #3232
- fix: map optional dataclass config fields to nullable schema types (#3468) by @bolichen97 in #3477
- docs(spec): document fixCjkAutolinkBoundaries and its undecidable boundary by @buluoray in #3448
- fix: allow Asana MCP OAuth authorization by @LucaButBoring in #3452
- fix(sandbox): put an aggregate cgroup ceiling on kirocrew-agents.slice by @chenmingwei23 in #3344
- fix: size the app shell in dvh so mobile browser UI shows the composer by @Premshay in #2011
- feat: install the playwright cli without a preexisting node toolchain by @bolichen97 in #3277
- fix: preserve channel binding across context-overflow recycle by @pepmach in #3499
- ci: make frontend shard failures name their reason in the job log (#3455) by @bolichen97 in #3487
- test: replace wall-clock sync in the subagent reap-race test with events by @adiarora06 in #3490
- docs(deploy): state the API Gateway rationale security-first, not as guardrail evasion by @chenmingwei23 in #3479
- test: wait on the SSE signal watchdog tests actually assert on by @adiarora06 in #3481
- fix(memory): guard _cosine_sim against mismatched dimensions by @adiarora06 in #3483
- fix(settings): stop WeChat folder copy promising a Save button and confirm the commit (#3461) by @bolichen97 in #3494
- fix(ci): replace single-user premise in four reviewer lanes with deployment-neutral framing (#3451) by @bolichen97 in #3485
- fix(playwright-cli): correct four installer defects and cut meta-test sediment by @bolichen97 in #3506
- fix(browser-cli): let mise reshim find mise during playwright-cli install by @iamwhatever in #3513
- feat(kas): enable KAS as a working chat backend by @iamwhatever in #3435
- ci(security): add supply-chain attack detection Semgrep rules by @iamwhatever in #3440
- fix: remove forced npm registry pins by @iamwhatever in #3376
- feat(knowledge): move settings to Knowledge page Settings tab by @iamwhatever in #3335
- feat(release): promote tested artifacts by immutable digest by @pepmach in #996
- fix(browser): retarget the skills #3233 left pointing at the MCP tools by @chenmingwei23 in #3424
- test: pin the vitest blob wire format the reconcile diagnostic parses (#3496) by @chenmingwei23 in #3512
- fix: prune repairs entries with channel bindings instead of deleting by @pepmach in #3500
- perf(dashboard): pre-compress hashed assets so the gateway can serve them compressed by @kyleseaman in #766
- fix(subagent): show the resolved turn cap in timeout errors, not 0 by @rubencu in #3491
- fix: gate launchd logs branch on installed agent and non-empty log by @minglong51 in #3492
- feat(dashboard): surface context usage as percentage and k-token count by @JohnCrickett in #1491
- fix(desktop): replay update state to a reloaded renderer (#809) by @NicholasRBowers in #2988
- feat(channels): one connect/disconnect row per channel by @NicholasRBowers in #3006
- feat(ci): add a first-principles review lane by @CrysisDeu in #3436
- feat(mcp): predict which MCP servers can safely share a backend by @chenmingwei23 in #3250
- feat(connections): mint the OAuth approval URL when the user clicks Connect by @pepmach in #3154
- feat(settings): add session summaries toggle and guidance skill by @michellemxm in #3382
- fix(spec-builder): container for the decision tray, instant approval feedback by @kyleseaman in #3402
- test: lift 188 baselined files over the per-file 80% floor by @CrysisDeu in #3476
- feat(connections): nightly account-free OAuth metadata probe by @pepmach in #3261
- docs(rfc): recommend supporting pluggable model providers in #2107
- fix: tell a spent OAuth approval apart from a failed relay delivery by @pepmach in #2426
- fix(dev-fleet): discover the main checkout instead of assuming ~/kirocrew by @bolichen97 in #3406
- build: give Windows the same build targets as macOS and Linux by @bolichen97 in #3480
- test(dashboard): cover chat_mirror branches below 80% floor by @chenmingwei23 in #3549
- fix(skills): stop dispositioning a maintainer ruling as deferred work by @chenmingwei23 in #3568
- fix(instances): make connect_timeout_secs user-configurable by @hazlijohar95 in #1997
- fix(test): rewrite stale cov80 tests for rewritten components by @chenmingwei23 in #3572
- feat(tips): curate tips for the features shipped this past month by @chenmingwei23 in #3518
- fix(packaging): drop console script for the deleted browser CLI in #3573
- fix(meetings): keep an explicitly empty agent roster on init in #3576
- fix: show the user message actions on touch devices at 40px targets by @Premshay in #2016
- fix(test): poll for thread death in sandboxed cron cancel test (#3570) by @patrigao in #3587
- fix(slack): report real task-runner progress in task run status in #3574
- fix: interrupt 'run this next' promotes the clicked queued message by @el-pedrito in #3590
- fix(review): let the Opus validation pass add a grounded finding by @chenmingwei23 in #3534
- fix(deploy): surface the public/no-auth warning at every point of publish by @chenmingwei23 in #3538
- fix(browser): adapt the browser install to non-apt Linux and token paste by @bolichen97 in #3530
- fix(dashboard): stop the topbar capsule overlapping the centered search by @kyleseaman in #3607
- fix(settings): resolve highlight anchors in the active locale by @leonlaiyc in #3586
- fix: let the notifications page scroll on mobile by @Premshay in #2009
- fix(agent): report a spec Kiro CLI refuses instead of failing silently by @kyleseaman in #3327
- fix(cron): add timeout to post-kill proc.communicate() to prevent executor pool deadlock by @ChrisBoomhower in #1481
- fix(agents): gate @server tool grants; warn on dangling refs (#3605) by @chenmingwei23 in #3617
- fix(tips): split learn-more link from dismissal identity doc (#3524) by @bolichen97 in #3555
- fix(chat): share one hover-none override for touch-unreachable actions (#3584) by @bolichen97 in #3609
- perf(cli): defer heavy dispatch imports — −0.8s per CLI call, −58MB per MCP backend by @chenmingwei23 in #3510
- fix(channels): keep a channel session bound when compaction fails by @leonlaiyc in #3613
- fix(dashboard): redact non-user content on the WS broadcast path (#1713) by @iamwhatever in #3628
- refactor: drop dead in-function imports, flatten nested ternaries by @bolichen97 in #3548
- fix: avoid case-colliding chat slice test names by @tarikermis in #3622
- feat(instances): let users pin the crew switcher open as a chip row by @iamwhatever in #3618
- feat(platform): let a deployment withhold installable-content registries and cloud deployment by @bolichen97 in #3536
- feat(acp): map KAS session/update discriminants to Crew displays by @iamwhatever in #3621
- fix(test): make the installer path-escaping test able to fail by @bolichen97 in #3627
- fix(agent): preserve unowned hook keys by @JoernZheng in #3120
- fix: gate builtin-skill sync destruction on tree-fingerprint provenance (#3433) by @bolichen97 in #3460
- fix(mcp): converge spec env semantics so Refresh sees truth and Apply mounts by @bolichen97 in #3545
- refactor(deploy): drop a shadow import and route redaction through one helper by @bolichen97 in #3639
- fix(chat): cap the ask_question card and scroll its questions by @buluoray in #3633
- ci: dispatch stuck PR Readiness recomputes oldest-first by @iamwhatever in #3643
- docs(dashboard): document GET /api/project/git by @leeclarkuk in #1814
- feat(sidebar): drag a folder onto another to nest it in board view by @Alexander-Yuan in #2655
- refactor(chat): send the older-history cursor from the server by @rnoack1 in #3354
- revert: remove session-pulse feedback survey via Aperture (#2865) by @bolichen97 in #3655
- fix(dashboard): stop the side panel opening itself on every new chat by @buluoray in #3634
- fix(ci): make the GPT 5.6 review converge across rounds instead of escalating by @bolichen97 in #3656
- refactor: flatten and de-duplicate branch logic in the acp module by @bolichen97 in #3667
- docs(prepare-pr): add proportionality gate to push back on over-engineered findings by @iamwhatever in #3668
- feat(acp): KAS native sub-agent progress + steering display by @iamwhatever in #3666
- fix(markdown): stop a bold-wrapped URL swallowing its closing delimiter by @buluoray in #3519
- test(mcp-apps): pin side-panel auto-open on first render (#2118) by @iamwhatever in #3657
- refactor(mcp): delete the inert PoolKey.user_identity dimension (#3604) by @chenmingwei23 in #3616
- fix(agent): don't spawn the computer-use backend when it can't be used by @chenmingwei23 in #3498
- fix(knowledge): list Org Mode (.org) in supported formats by @Liam-Wirth in #1910
- feat(watchdog): per-agent LLM-turn window overrides + stall-aware telemetry by @Xianwen-Peng in #3349
- fix(service): warn when service install drops kiro-cli API-key auth by @kyleseaman in #3285
- fix(security-panel): humanise the label of a companion-registered governed scope by @bolichen97 in #3678
- docs(mcp): distinguish connection from tool exposure by @adiarora06 in #3687
- fix(dev-fleet): surface inferred main checkout by @adiarora06 in #3682
- fix(instances): preserve explicit connect timeout by @leonlaiyc in #3592
- fix(i18n): preserve cross-tab choice over stale boot by @leonlaiyc in #3611
- fix(dashboard): preserve auto-speak tails across segments by @leonlaiyc in #3602
- fix: integrate the Windows desktop titlebar (rebase of #773) by @iamwhatever in #3516
- fix(mcp): report unverifiable OAuth probes as "Not verified" by @JPLachance in #1878
- feat(security): per-app WebSocket event scoping for app tokens by @buluoray in #714
- fix(apps): sign wire_target HMAC in gateway reverse proxy for percent-encoded query strings by @md-abusayeed in #2063
- feat(website): edition seam for the pre-boot shell (title, manifest, icons) by @ShotaroKataoka in #2202
- test(cron): pin Skip-is-success semantic; strike reset owned by CronScheduler._execute by @ChrisBoomhower in #2600
- fix(apps): null-guard page badge, isolate card render crashes (#3689) by @bolichen97 in #3698
- feat(acp): make the session-start budget configurable by @leozhad in #3644
- chore: clarify neutral shell copy by @LucaButBoring in #3635
- fix(dashboard): tell the user to sign in again instead of showing "invalid signature" by @tjdwlsdlaek in #3601
- fix(cloud): install voice dependencies during provisioning by @leonlaiyc in #3567
- fix: render uploaded images in sender's chat view on Windows (#3497) by @chenmingwei23 in #3553
- fix(acp): re-declare pooled MCP stubs on session/load so resumed sessions stay pooled by @chenmingwei23 in #3535
- fix: audit and notify when an inbound session binding is cleared by @pepmach in #3502
- fix(dashboard): show provider-appropriate STT settings for AWS Transcribe by @chenmingwei23 in #3577
- fix(mcp-gateway): invalidate an observed hazard when the server changes by @chenmingwei23 in #3593
- feat(deploy): require an acknowledgment before a public publish, and let an operator close the path by @chenmingwei23 in #3615
- fix(instances): sync the crew-switcher pin into remote panes by @iamwhatever in #3665
- feat(developer): give preview opt-ins their own Feature Previews page by @michellemxm in #3688
- fix(doctor): stop failing doctor on a dropped API-key report by @buluoray in #3705
- feat: summarize a session on demand from the panel by @michellemxm in #3672
- fix(artifacts): persist sorting and polish copy controls by @leonlaiyc in #2969
- fix(dashboard): surface why a /compact failed by @isotope14 in #2657
- fix: persist sync_status column on knowledge source insert (#3701) by @chenmingwei23 in #3708
- fix(apps): wrap Browse-tab card lists in per-card error boundaries (#3702) by @chenmingwei23 in #3710
- fix(cloud): clone public source from packaged installs by @leonlaiyc in #3608
- fix(chat): stop the session a linked slot's turn actually runs on by @leonlaiyc in #2594
- fix(mcp): make Apply report a failed reconcile and mark declared servers by @bolichen97 in #3673
- ci(release): enable namespace sandbox in release test job by @bolichen97 in #3728
- feat: CJK-aware session search with recency-weighted ranking by @bolichen97 in #3681
- refactor(apps): normalize InstalledApp manifests at the query boundary (#3706) by @bolichen97 in #3726
- fix(knowledge): show a readable status for a source awaiting confirmation by @NicholasRBowers in #3735
- fix: collapse resizable rails on a phone viewport by @buluoray in #3703
- fix(skills): tighten prepare-pr explicit closing-trailer grammar by @isotope14 in #3721
- fix(prompt): use markdown link syntax for PR URLs to prevent CJK autolink greediness by @iamwhatever in #3756
- fix(ui): stop action-row buttons clipping their labels by @buluoray in #3755
- feat(messaging): shared fence-safe markdown splitter (no call sites yet) by @pepmach in #3763
- feat(chat): flag a conflicted pull request on its session chip by @NicholasRBowers in #3760
- fix(teams): retry outbound sends once on 429, honoring Retry-After by @adiarora06 in #3740
- fix(dashboard): surface agent-switch failures by @leonlaiyc in #2846
- fix(desktop): drop the native Linux frame on CSD desktops so one header serves as the title bar (#3606) by @chenmingwei23 in #3695
- fix(apps): trim trailing empty line before append index in Notes preview by @isotope14 in #3757
- fix(apps): key Library card boundary on full data identity (#3719) by @md-abusayeed in #3764
- fix(discord): keep fence open in retained live buffer and preserve indentation across rotation by @pepmach in #3712
- fix(autopilot): offload previous-result reads by @leonlaiyc in #3772
- fix(system): let the card layouts narrow on a phone by @buluoray in #3778
- fix(system): stop breaking metric values across lines by @buluoray in #3773
- refactor(acp): convert harness-identity negatives to positive form (KAS Group C) by @iamwhatever in #3775
- fix(onboarding): stop the import chapter closing itself after a reopen by @buluoray in #3784
- fix(autopilot): offload completion result reads by @leonlaiyc in #3783
- fix: name and focus the read-only provider-hooks scrollport by @buluoray in #3791
- fix(wecom): recognize commands after group mentions by @leonlaiyc in #3787
- fix(telegram): strip @BotUsername suffix before command matching by @adiarora06 in #3736
- fix(ui): add min-w-0 to three flex-1 inputs that clip trailing controls (#3789) by @chenmingwei23 in #3793
- fix: apply the performance rail's fixed width only when there is room by @buluoray in #3796
- fix: stop the chat hero eating the first screen on a phone by @buluoray in #3799
- chore: restrain interruption cards to default-to-silence by @iamwhatever in #3739
- fix(lessons): apply the create route's session gate to lesson deletes by @rubencu in #3226
- fix(ui): stop rendering an interrupted goal-loop session as actively working by @rubencu in #3539
- fix(ci): guard vulnerability exception maintenance by @leonlaiyc in #3800
- fix(memory): reject a null or empty semantic value instead of storing it by @rnoack1 in #3255
- fix: unlink temp files when queued entries are discarded (#3768) by @bolichen97 in #3776
- fix(capabilities): collapse list+detail shells to one pane on a phone by @buluoray in #3770
- fix(logs): make the toolbar reachable and stop breaking identifiers by @buluoray in #3765
- refactor: lay the top bar out in three tracks so the search survives narrow windows by @CrysisDeu in #3663
- fix: translate the Knowledge embedded-item count by @buluoray in #3801
- fix: align prepare-pr template headings with PULL_REQUEST_TEMPLATE.md by @RohanK6 in #3805
- fix: derive knowledge formats copy and accept lists from config by @NicholasRBowers in #3558
- fix(security): require a real bool for dangerously_skip_permissions by @adiarora06 in #3731
- feat: preview notification sound on per-category dropdown change by @jbnunn in #3581
- feat(prepare-pr): extract local reviewer briefs from CI workflows by @pepmach in #3399
- fix(kas): base-prompt fallback for prompt-less agents + doctor KAS status by @iamwhatever in #3744
- perf(security): gate the self-floor descent behind an O(n) necessary condition (#3603) by @chenmingwei23 in #3692
- feat(mcp): dashboard-control server as an assignable per-agent set by @chenmingwei23 in #3473
- docs(secrets): document env-variable routes and warn on ignored .env keys by @RohanK6 in #3727
- fix(instances): make token mint timeout user-configurable by @chenmingwei23 in #3571
- feat(browser): native command-bus gateway + browser MCP tool by @iamwhatever in #3751
- feat(chat): show an indicator while older messages are loading by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3245
- feat: defer crons and refuse spawns under critical memory posture by @rubencu in https://github.com/kirodotdev/KiroCrew/pull/2432
- fix: load persisted voice settings on dashboard-only gateways by @Premshay in https://github.com/kirodotdev/KiroCrew/pull/1891
- fix(dev-fleet): refuse force-remove on dirty+unmerged worktrees, restrict branch ref deletion to merged PRs by @qh2244 in https://github.com/kirodotdev/KiroCrew/pull/1588
- feat: cap aggregate agent memory via MemoryHigh on the agent slice by @rubencu in https://github.com/kirodotdev/KiroCrew/pull/2431
- fix(sandbox): apply resource limits to synchronous spawns after exec by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3177
- feat(issues): show Jira issue details in the Issues side panel by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3311
- fix(mcp-gateway): stop opted-in servers from silently degrading to unpooled by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3511
- fix(code-review-sage): collapse the rail to a strip on a phone by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3813
- docs: add uninstall and clean reinstall steps by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3819
- fix(session): bound the per-session semaphore against a stray release by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3750
- feat(cron): show a script cron's source in the job detail view (#3270) by @NicholasRBowers in https://github.com/kirodotdev/KiroCrew/pull/3287
- fix(issue-radar): show one pane at a time on a phone by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3818
- refactor: route the MCP OAuth banner gate through security's canonical predicate (#2403) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3825
- feat(dev-fleet): allow force-removing kept worktrees in Prune modal by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3312
- fix(issue-radar): collapse the narrow rail for every navigating control by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3832
- docs(knowledge): define the Knowledge Library's role & success criteria by @cixuuz in https://github.com/kirodotdev/KiroCrew/pull/3834
- fix: scope busy-send Steer/Queue mode to the session slot (#3821) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3833
- fix: guard memory files against placeholder consolidation output by @mnaameh in https://github.com/kirodotdev/KiroCrew/pull/2601
- feat: render the app storefront from the published catalog by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3779
- feat(sessions): redesign the session list rows by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/3766
- fix(ci): stop the CPU-cost burst-immunity test from intermittently failing CI by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3809
- fix(md-notebook): handle Save/Clear PAT failures instead of hanging by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3745
- refactor(acp): consolidate KAS wire parsing + declare provider H14 caps by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3823
- fix: signal clipped tab strips and unclip the artifact header row by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3843
- fix(apps): lay the collapsed rail across the top at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3840
- fix(issue-radar): stack the issue detail pane at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3835
- fix(pages): lay the collapsed rail across the top at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3842
- fix(spec-builder): make the workspace usable at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3844
- fix(webhooks): give the token label field its own line at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3846
- fix(hooks): stop the matcher field collapsing beside its own actions by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3861
- fix(settings): stack the releases list above the notes at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3849
- fix(spec-builder): keep the phase controls reachable at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3859
- fix(tests): make full local test suite pass without external dependencies by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3847
- fix(apps): stack the meetings and pptx-maker splits at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3858
- fix(install): don't build the frontend against an under-floor Node by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3857
- fix(cron): give cron message its own 50k cap instead of shared 5k (#1682) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3829
- refactor(acp): route AcpSessionHandle metadata pct through sanitize_pct by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3867
- fix(knowledge): clarify spend copy and expose failed files (#2145) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3839
- fix(security): lock the revoked-nonce store down through restrict_to_owner by @leonlaiyc in https://github.com/kirodotdev/KiroCrew/pull/3871
- fix(memory): apply the session-recognition gate to the mutating memory routes by @rubencu in https://github.com/kirodotdev/KiroCrew/pull/3817
- fix(detail-panel): give the panel the full width at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3874
- fix(papyrus): give the editor the full width at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3873
- fix(apps): reach the file tree and note list from the top at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3868
- fix: bind the scroll-edge listener to a node that mounts late by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3851
- fix(instances): thread the configured connect timeout into restart and diagnostics ssh calls by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3814
- fix(acp): backend-subagent permission requests get main-agent mode parity by @Xianwen-Peng in https://github.com/kirodotdev/KiroCrew/pull/3786
- fix(memory): store a lesson's NOT-clause as its own field (#2321) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3652
- fix(artifacts): give the side panels the width at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3878
- refactor(terminal): unify panel shell, remove dead transfer plumbing, translate i18n, clamp width by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3872
- feat(jira): Show linked issues in the Issues panel by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3864
- feat(cli): surface the built-in denied-command catalog in policy show by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3489
- fix(i18n): list the per-app stylesheet exemptions as exact paths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3880
- fix(i18n): stop naming Finder on non-macOS gateways by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/3403
- test(browser-cli): stop the redaction-timing ratio test flaking on CI by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3852
- fix(artifacts): don't auto-reveal a full-pane comments panel on a phone by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3882
- docs(skills): sharpen sage-review, browser-recording, worktree-dev, crystallize guidance by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3848
- fix(topbar): stop clipping the mobile menu button, and let the file tree scroll by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3887
- refactor(memory): consolidate lesson category validation and field redaction into shared helpers by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3883
- fix(mobile): let the software keyboard resize the layout viewport by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3893
- feat(dev-fleet): UX/Design follow-up improvements for Prune force-override by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3866
- fix(sessions): tighten session-list spacing, 2px colour bar, left folder unread dot by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/3903
- fix: stop virtuoso list rows overflowing their pane on narrow viewports by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3902
- fix(chat): stop a long session title pushing the header controls off screen by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3891
- fix(dashboard): strip agent bookkeeping keys on config PUT by @KarlLeen in https://github.com/kirodotdev/KiroCrew/pull/2578
- fix(test): preserve the terminal report when xdist dies with INTERNALERROR (#2803) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3924
- fix(sessions): board folder indent parity with list view (#3909) by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3922
- fix(playwright-cli): make playwright-cli.sh chmod bsd-compatible (macos) by @tlobinger in https://github.com/kirodotdev/KiroCrew/pull/3916
- fix(dashboard): stop clipping the topbar unread badge by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3915
- fix(sidebar): put folder rows and session rows on one left edge by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3905
- fix(kas): emit context_window_update in SSE stream for API consumers by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3917
- fix(prepare-pr): read repo's PULL_REQUEST_TEMPLATE.md directly, remove bundled copy by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3906
- fix(dev-fleet): Polish prune force-override UX for unverifiable rows and verbose locales by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3907
- fix(tests): eliminate orphan temp dirs and add AUTOSDE rule by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3926
- fix(mobile): pin the command palette to the visual viewport, not the layout one by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3912
- refactor: flatten nested guards and drop dead code in toplevel by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3935
- docs: add new contributors to README by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3932
- fix(dashboard): show idle span on stalled subagent card, hedge the wording by @cixuuz in https://github.com/kirodotdev/KiroCrew/pull/3919
- test(e2e): assert sidebar folder alignment guides by measured x (#3914) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3942
- fix(overview): let the skill-budget row wrap so the skill name is visible by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3921
- fix(test_provider): make consent-recheck provider tests deterministic under load by @tlobinger in https://github.com/kirodotdev/KiroCrew/pull/3661
- fix(dashboard): stop board view becoming the default sidebar layout by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3933
- fix(channels): give the transcript the viewport at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3913
- refactor(dashboard): flatten the turn-metric exhausted ternary by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3936
- fix(knowledge): skip ingestion-errored sources in sync_all by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3948
- feat(knowledge): isolate workload effort pools by @atomsbaza in https://github.com/kirodotdev/KiroCrew/pull/3944
- fix(dashboard): keep healthy WS clients registered when a fan-out runs off-loop by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3962
- fix(electron): route updater logging into gateway-launch.log by @rubencu in https://github.com/kirodotdev/KiroCrew/pull/3950
- refactor(messaging): dedupe two predicates and correct stale comments by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3971
- fix(channels): add min-w-0 to composer mention wrapper (#3947) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3968
- fix(terminal): clamp viewport on first render and window resize by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3958
- fix(knowledge): apply ACP extraction effort by @atomsbaza in https://github.com/kirodotdev/KiroCrew/pull/3967
- fix(chat): pipelined sends cause duplicate bubbles and orphaned optimistic rows by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3963
- fix(config): stop the migration backup leaking a .bak beside a foreign path by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3972
- feat(instances): pin individual crews out of the switcher as chips by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3683
- fix: inset the mobile nav drawer from the top edge by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3978
- fix(dev-fleet): reclaim a stopped pod's isolated HOME on worktree removal by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3965
- fix(chat): drive optimistic-timeout sweep from a client-side timer by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3975
- refactor(dashboard): resolve one serving loop instead of latching three copies by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3976
- fix(chat): let a touch swipe scroll the tab strip, not reorder it by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3980
- docs: add greysonevins to contributors by @greysonevins in https://github.com/kirodotdev/KiroCrew/pull/3977
- feat(apps): add Design Tweak builtin (visual select-to-edit) by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/1122
- feat: federated session search across connected instances by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3826
- fix: let capability panes reach the card edge at phone widths by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3985
- fix(cron): clear last_result on every command-cron exit path by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3199
- fix(code-review-sage): keep the section nav on the collapsed mobile bar by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3982
- fix(tests): use absolute paths via _REPO_ROOT instead of relative Path('src/...') by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3986
- fix(chat): keep board column panning from closing the mobile pane by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3989
- fix: stop a mid-turn steer from stranding the reasoning block below the answer by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3992
- fix(dev-fleet): trap confirmation popover focus by @aniketshukla1 in https://github.com/kirodotdev/KiroCrew/pull/2549
- fix(heartbeat): warn and count SEL prune failures instead of failing silent by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3994
- fix(jira): harden per-host token credential path (Docker leak, scrub gap, missing docs) by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3957
- fix(desktop): show an installing overlay during the update handoff by @rubencu in https://github.com/kirodotdev/KiroCrew/pull/3955
- feat(hooks): Add regex/contains matcher modes and declarative skills injection by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3952
- feat(cloud): add 'kirocrew cloud logout' to switch Kiro accounts by @coozgan in https://github.com/kirodotdev/KiroCrew/pull/2735
- fix: let the installed-app card's action cluster leave the text row on phones by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4005
- docs: RFCs for nav placement seam and append-only session transcript by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4022
- fix(dev-fleet): harden auto-restart UX and error specificity by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4013
- fix(dashboard): show system metrics on mobile as passive capsule readout by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3959
- fix(cron): re-arm the timer on job completion instead of waiting out the poll cap by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3812
- fix: rank the session list by settled activity, not every streamed row by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4038
- fix(chat): stop the resize badge from covering a portrait attachment chip by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4009
- fix(topbar): centre the phone search trigger instead of pinning it left by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4034
- fix(mcp): name the oauth_endpoints.json remedy in the OAuth rejection banner by @jeeshofone in https://github.com/kirodotdev/KiroCrew/pull/4007
- feat: ACP backend logging + shell command tool-pill fallback by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3910
- feat(skills): surface the auto-approve setting in the review panel and notification by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3943
- fix(security): close 7 coordinated-disclosure findings from external audit by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3836
- feat(browser): Settings toggle to use the built-in browser, with playwright-cli fallback by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/3822
- fix(sidebar): put the session row's type scale on the 4px grid by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4030
- feat: stream the model's reasoning on the collapsed thinking row by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4033
- fix: make the backend own the settled ordering key, and keep a running turn recent by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4044
- fix: give transcript row geometry a single owner by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4029
- feat: install apps the official catalog lists, at their pinned commit by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3659
- fix(issue-radar): move the detail header inside the pane's scroller by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/3984
- fix: anchor papyrus URL/name validators with \Z to reject trailing newline (#4040) by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4048
- feat(instances): reach the crew switcher at phone widths by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4046
- fix(chat): cue clipped attachment chips with scroll-edge fades (#4024) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4050
- fix(subagent): emit result paths in the home spelling the reader can use by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4047
- refactor(dashboard): derive the session-row glyph and subtitle from one resolver by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/4055
- fix(chat): pin the header rename editor to the session it opened on by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3991
- feat(md-notebook): render mermaid diagrams in the note preview by @andreyaurelien in https://github.com/kirodotdev/KiroCrew/pull/3294
- fix(issue-radar): give the app's own pages a narrow-first gutter by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4066
- fix: make the narrow viewport the layout baseline, not the exception by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4039
- fix(dashboard): cue clipped chip strips with scroll-edge fades (#4053) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4071
- fix(dashboard): make the Btn danger variant visible without hover by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/4051
- fix(update): reset the install mutation when an aborted dispatch ends without a restart by @rubencu in https://github.com/kirodotdev/KiroCrew/pull/4059
- fix(config): read back two dropped config fields on load by @zakil-02 in https://github.com/kirodotdev/KiroCrew/pull/1516
- fix: align a tool row's icon with the message column's text edge by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4062
- fix(dev-fleet): restart survives navigate-away; tool timer uses persisted anchor by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4012
- docs(rfc): add the session address model RFC by @NicholasRBowers in https://github.com/kirodotdev/KiroCrew/pull/4077
- fix: stop the schedule table's message column collapsing to zero by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4086
- refactor: simplify the metrics module's reader list, prune plan and flags by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4091
- fix(apps): give the remaining builtin apps a narrow-first page gutter by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/4078
- feat(chat): move pinned messages into a side-panel tab by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3894
- feat(mcp): surface the sharing assessment the gateway already computes by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3960
- fix(chat): render tag-like prose placeholders verbatim by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3999
- feat: show what wakes a crew in the crew editor by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4061
- perf(dashboard): offload SEL audit-log reads off the event loop by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3995
- fix: tell a failed credit fetch apart from a warming one in the top bar by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4058
- perf(chat): render slot detail off the event loop by @patrigao in https://github.com/kirodotdev/KiroCrew/pull/4096
- feat(chat): filter the session list by tag from the filter menu by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3993
- fix: correct file_send 403 denial message and stale session-path docstring (#4092) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4098
- feat(md-notebook): render markdown images in the note preview by @andreyaurelien in https://github.com/kirodotdev/KiroCrew/pull/4090
- docs: point official-store publishing at the KiroCrewApps catalog by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4101
- test: stop the suite leaking host state and cut its inode footprint by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4065
- fix(chat): cancel a superseded older-history fetch on session switch by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4001
- fix(schedule): pin the jobs-table Actions column sticky-right (#4089) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4097
- fix(publish): read the publish outcome, not the url by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/3941
- test(apps): exclude reserved names from the builtin-discovery name strategy (#4099) by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4107
- fix(dashboard): clamp InfoTip auto-placement to the viewport (#4104) by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4114
- test: extend truncate_summary edge-case coverage by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4105
- feat(chat): Reload session -- relaunch the agent process in place, conversation preserved by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4026
- feat(telegram): add /kirocrew dashboard command for mobile login by @gspivey in https://github.com/kirodotdev/KiroCrew/pull/2025
- fix(mcp): reach a gateway started on a non-default port by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/2671
- fix(dashboard): normalize InstalledApp manifests at the query boundary by @isotope14 in https://github.com/kirodotdev/KiroCrew/pull/3722
- fix(instances): pair the internal-API credential with the port it guards by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3879
- fix(acp): harden child permission routing per post-merge review of #3786 by @Xianwen-Peng in https://github.com/kirodotdev/KiroCrew/pull/3889
- fix(sandbox): migrate 10 builtin-app preexec_fn spawns to post-exec shim (#3990) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4004
- feat(mcp-gateway): hold tool-result image blocks to the inline-image budget (#4010) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4025
- fix(sage): resume the reviewer from disk instead of keeping it loaded by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4064
- test: take the review subtractions #4065 could not land in time by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4113
- feat(files): play video and audio inline in the file viewer by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4027
- fix(chat): focus the composer via a stable data-attr (#4088) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4119
- fix: give the narrow tabbed pane one owner for its top inset by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4155
- test: assert ReDoS linearity structurally, not by timed ratio by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4122
- refactor: invert two trailing conditionals into guard clauses by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4170
- test: await the slack backfill instead of racing it by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4189
- chore: reuse the shared dashboard API stub in the pane-inset harness by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4166
- fix(crews): stop Capabilities roster flashing empty on background refetch by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4144
- fix(schedule): make the armed Delete state self-explanatory on touch (#4120) by @NicholasRBowers in https://github.com/kirodotdev/KiroCrew/pull/4148
- feat(md-notebook): colour fenced code blocks in the note preview by @shrihan-vijay in https://github.com/kirodotdev/KiroCrew/pull/4171
- test: make two host-sensitive assertions independent of the interpreter by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4176
- fix(chat): confirm a sent message from its own response, not a suppressed echo by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4135
- fix(ci): tell the advisory review lanes what a BLOCK actually does by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4168
- fix: put the narrow-viewport gutter, chrome and chat on one 16px line by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4154
- refactor(chat): register the filters that can hide a reveal target (#4141) by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4149
- perf(sidebar): cache relative-time day boundaries instead of rebuilding per row by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4146
- fix(dashboard): scope composer focus lookup to the active pane (#4124) by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4160
- perf(sidebar): resolve slot-derived state by lookup, not per-render spread by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4147
- fix(composer): keyboard + screen-reader access to paste hover preview by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4143
- test(crew): assert durability against queue.json, not the whole store by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4150
- fix: pin windows signing to sha256 so each artifact signs once by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4169
- fix: gate browser readiness on the required revision, not an engine prefix by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4173
- test(dashboard): guard MCP call sites against the internal auth allowlists by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3996
- fix(chat): keep a code-block user bubble inside a phone viewport by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4116
- fix(dashboard): split ChatSidebar drag into mouse+touch sensors (#4208) by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4221
- fix(website): accept > inside a quoted attribute value in the verbatim-tag diverter by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4156
- fix: pace sprite animation at its fps instead of display refresh rate by @rubencu in https://github.com/kirodotdev/KiroCrew/pull/4204
- refactor(pod): drop dead code and flatten four pod-module branches by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4121
- fix: scope the chat-column guard to --mc-content-width, land two 20px surfaces by @prateek98121 in https://github.com/kirodotdev/KiroCrew/pull/4203
- feat: publish the signed windows installer and enable its updater by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4182
- fix: improve notification panel text contrast over busy backgrounds by @amadsalmon in https://github.com/kirodotdev/KiroCrew/pull/3029
- fix(dashboard): seed chat folders from the slots WS frame so the sidebar groups on first paint by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4145
- fix(artifacts): make the library usable on a phone by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4151
- fix(chat): open a reasoning block per burst, not one per turn by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4178
- fix(sessions): reap an orphan whose parent is a subreaper, not just init by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4110
- fix(dashboard): count a subagent's processes and MCP stubs by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3954
- fix: hoist the empty-message 400 above every /api/chat dispatch branch (#4223) by @patrigao in https://github.com/kirodotdev/KiroCrew/pull/4233
- fix(security): a generated skill could run arbitrary code past the script validator by @kaizawa97 in https://github.com/kirodotdev/KiroCrew/pull/1535
- docs: fix a stale pointer and stop restating the flake tells by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4125
- feat(desktop): ship Linux deb and rpm packages with per-format update lanes by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4174
- fix(acp): name the MCP server a stalled session start waited for by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4242
- feat(connections): resolve cross-provider tool-name collisions via registry-declared aliases by @pepmach in https://github.com/kirodotdev/KiroCrew/pull/3260
- test: make two nondeterministic backend tests hermetic (#4236) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4252
- fix(i18n): promote framed send_failed out of the designTweak namespace (#4240) by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4251
- fix(security): appending --help ran any command with no approval prompt by @kaizawa97 in https://github.com/kirodotdev/KiroCrew/pull/1531
- fix(chat): read the command for a shell pill whose title is a kind label by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4257
- docs: add new contributors to README by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4256
- fix: name directive refusals and repair Slack stream team routing by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4280
- fix: browse with the engine Kiro Crew installs, not the CLI default by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4266
- feat(files): render xlsx spreadsheets inline in the file viewer by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3875
- ci: run the eleven test suites the shards deselected by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4248
- fix(sandbox): stop a busy /tmp and a stray thread disabling the sandbox by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4197
- feat(update): add pluggable update provider seam for enterprise self-update by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4049
- fix(test): make the probe HOME sentinel an absolute path (#4267) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4281
- fix(dashboard): surface refused regenerate/switch-variant via ErrorNotice (#4202) by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4238
- fix(voice): keep an in-flight transcription when Chat unmounts by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4288
- fix(cron): validate name on PATCH /api/crons/{id} by @chuqijiang2026 in https://github.com/kirodotdev/KiroCrew/pull/4289
- fix(slack): stop mangling markdown images into broken Slack links by @pepmach in https://github.com/kirodotdev/KiroCrew/pull/4310
- ci: fail Windows build on installer without its blockmap (#4301) by @patrigao in https://github.com/kirodotdev/KiroCrew/pull/4308
- fix(dashboard): pin Actions columns sticky-right in McpTab and WebhooksPage tables (#4299) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4314
- docs(docker): add troubleshooting guide for containerized deployments by @Luccas-carvalho in https://github.com/kirodotdev/KiroCrew/pull/1915
- fix(history): prevent stale cache after session rewrites by @konippi in https://github.com/kirodotdev/KiroCrew/pull/1841
- fix(security): a workflow script could read host internals past the sandbox validator by @kaizawa97 in https://github.com/kirodotdev/KiroCrew/pull/1624
- feat: continue a turn when a Stop hook returns a block decision by @LucaButBoring in https://github.com/kirodotdev/KiroCrew/pull/2065
- feat: custom session color picker beyond the 7 generated swatches by @el-pedrito in https://github.com/kirodotdev/KiroCrew/pull/2362
- feat(chat): expand the session row's +N source-link chip by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/2495
- feat(stt): add Parakeet (NVIDIA) local provider via parakeet-mlx by @gbrunoo in https://github.com/kirodotdev/KiroCrew/pull/2597
- feat(chat): load older history when the transcript is scrolled to the top by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/2822
- fix(channels): record resolved agent in session metadata on channel transport writes by @leozhad in https://github.com/kirodotdev/KiroCrew/pull/2891
- fix(desktop): ship iconutil-built icns so small mac icons render by @anant-kaushik in https://github.com/kirodotdev/KiroCrew/pull/2905
- fix(knowledge): offload folder watcher flush and claim writes by @leonlaiyc in https://github.com/kirodotdev/KiroCrew/pull/2979
- feat(onboarding-import): add Gemini CLI / Antigravity as an import source by @logesh4v in https://github.com/kirodotdev/KiroCrew/pull/3003
- fix(auth): name the sides on the non-loopback mixed-path denial too by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4112
- fix(installer): bound interpreter probe with POSIX watchdog for macOS by @veerjain-1 in https://github.com/kirodotdev/KiroCrew/pull/3146
- fix: notify Discord when a resumed session binding is lost by @pepmach in https://github.com/kirodotdev/KiroCrew/pull/3501
- fix(website): bump brace-expansion overrides past DoS CVEs by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4330
- docs(chat): record the in-house virtualizer decision in the module header by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4325
- fix(acp): classify a rejected Kiro credential as terminal, not a backend fault by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4324
- feat: give the Windows agent tree a Job object resource ceiling by @mcryan77 in https://github.com/kirodotdev/KiroCrew/pull/4250
- fix(subagent): keep the exception type and request id in a failed subagent's error by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4335
- feat: publish Windows on stable, unwedge terminal theming, make black a real gate by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4244
- ci: execute the sandbox assertions, not just collect them by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4285
- fix(dashboard): seam pinned Actions columns, pin Hooks table (#4102) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4296
- fix(desktop): reclaim the windows update cache on uninstall by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4300
- refactor(dashboard): drop os import shadows and dedup fuzzy scanning by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4302
- fix(dashboard): keep long digests inside the subagent completion card by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4337
- build(deps): bump actions/cache from 4.3.0 to 6.1.0 by @dependabot[bot] in https://github.com/kirodotdev/KiroCrew/pull/3318
- fix(markdown): keep an inline classed code element from rendering a block div in a paragraph by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4362
- docs: add the 0.3.0 changelog entry and pin the changelog to version bumps by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4284
- refactor(artifacts): keep the scroll axis on the page at one column by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4246
- fix(apps): verify proxy HMAC over the raw request-target (#4192) by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4206
- fix(sidebar): consolidate filter dimensions into one declaration (#4329) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4372
- fix(dashboard): extract useArmedDelete, fix concurrent deletes (#4342) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4375
- test(apps): ratchet against decoded proxy-target reconstruction by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/4377
- feat: brand the macOS DMG and Windows installer first download by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4298
- fix: consume the Enter the IME guard swallows by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4216
- chore: remove the dead PyInstaller desktop build path by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4229
- refactor: drop the overview page's apply & restart button by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4232
- fix(sidebar): exclude open tabs from the older-sessions list by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4212
- fix(chat): remove the unconfirmed-message notice and its timeout sweep by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4180
- feat: add pierre-backed diffs, editing and a project file tree by @krishdhasmana in https://github.com/kirodotdev/KiroCrew/pull/4072
- fix(dashboard): stop clipping the notification badge and its glow by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/4392
- fix(chat): key group rows on first message identity, not index (#4357) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4383
- feat: source the Explore shelf from registries only by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4200
- ci: raise coverage floors to 88% backend / 89% frontend by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3104
- fix(pierre): align the edit caret with its row on the split diff surface by @krishdhasmana in https://github.com/kirodotdev/KiroCrew/pull/4405
- fix(chat): make sent bubbles hug their content and stop transcript images from shifting by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4378
- refactor(workflows): drop dead clamps, dedupe, fix false comments by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4382
- fix(history): close preserved-mtime fill race in meta and recent caches by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4311
- fix(meetings): render all-day calendar events date-only (#4328) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4380
- fix(about): stop offering nightly as a one-click channel switch by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4387
- fix(dashboard): collapse hooks actions row to overflow pattern (#4297) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4334
- fix(chat): keep the side panel full height after a dock round trip by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4415
- refactor(chat): name the side panel's ephemeral Q&A view Side Chat by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4080
- fix(ui): install tailwindcss-animate so the shadcn primitives animate by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4213
- fix(dashboard): give slot teardown a single owner by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4191
- fix: give the tool-call detail toggles their own row by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4226
- ci: fail a PR that deletes or edits a shipped changelog section by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4369
- ci: raise coverage floors to 90% on both lanes by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4422
- docs: add new contributors to README by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4424
- fix(ui): use normalized title in ApprovalCard shell branch (#4396) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4420
- fix(ci): regenerate website lockfile for @pierre/theme@1.1.0 (#4417) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4427
- fix(crew): resolve crew name to its agent template by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3383
- fix(knowledge): take ingested item ids from the commit callback by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/3397
- fix(crews): require an explicit Agent Template when creating a crew by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4161
- feat(mcp): measure a server shareability on purpose, and remember it by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4295
- refactor: make onboarding-import sources registerable by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4303
- chore: drop the legacy frozen-bundle probe from find-bin by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4442
- fix(a11y): add focus-visible ring to SubagentCompletionCard scroll region (#4408) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4429
- fix(history): gen-guard the unlocked _msg_cache fill publish (#4385) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4413
- feat(dashboard): add click-to-copy for inline code spans by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4433
- fix(skills): key the repo_scope gate on the session project, not the process cwd by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4323
- fix(i18n): align steer and queue copy across locales by @leonlaiyc in https://github.com/kirodotdev/KiroCrew/pull/2850
- fix(dashboard): stop a partial /api/system frame crashing the app shell by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4452
- fix(knowledge): take created ids from writes, not source diffs (#4431) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4443
- fix(issue-radar): localize AI summaries to the dashboard language by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4318
- fix(chat): pin the nudge that opened the turn so the jump stays one turn away by @buluoray in https://github.com/kirodotdev/KiroCrew/pull/4449
- feat(apps): let a deployment pin its own app registry, and tier its trust by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4412
- fix(dashboard): stop a per-slot mode change revoking the global YOLO grant by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4416
- fix(history): extend generation guard to _folded_cache and _snippet_cache (#4414) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4450
- test(security): pin read-only bash help-probe classification by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4249
- feat(notes): match the left rail type ramp to the sessions list by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/4451
- ci: let UX and First Principles reviews block PR readiness by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4253
- fix(i18n): rename pinned-prompt jump tooltip to "turn" (#4455) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4463
- chore: fail docs-lint on a git conflict marker left in a doc by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4458
- refactor(acp): collapse offloaded liveness-consult guard into liveness.py by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4398
- fix: recover Windows desktop gateway ports by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4265
- fix: stop stamping origin onto external registry rows by name (#4397) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4423
- fix(security): credential paths were readable by respelling them with a variable or cd by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4243
- feat(skills): add five-whys guided dive-deep research mode by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4060
- fix(dashboard): route guard-less Enter-submit inputs through the IME guard (#4234) by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4305
- fix(issue-radar): title the investigate session at creation by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4319
- fix(slack): fail closed when a corrupt config.json would reopen the enterprise allowlist by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/3949
- fix(mcp): count what a measurement pass measured, not what it tried by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4460
- fix(notes): size the sort-menu section labels to the menu, not the rail by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/4486
- fix(agent): prefer relocatable bin/kirocrew.cmd on Windows (#4439) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4465
- fix(chat): preserve thinking blocks across tab switches by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4476
- fix(chat): align the running indicator with the transcript's left edge by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4474
- test(windows): fix the expected-failures matcher and restore link-guard coverage by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4467
- fix(security-panel): distinguish a broken profile from a deliberate lockdown by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4403
- fix(dashboard): adapt meter-bar numbers to the fill beneath them by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4480
- fix(dev-fleet): let the page notices fill the content column by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4496
- fix: make probe-derived system metrics optional in SystemData (#4466) by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4493
- feat(i18n): gate catalog values that are still English by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4471
- fix(skills): gate auto-skill detection on recurrence, not effort by @iamwhatever in https://github.com/kirodotdev/KiroCrew/pull/4469
- feat(mcp): let a measurement earn a shareability verdict, and stub what it allows by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4320
- feat(apps): give Channels, Dev Fleet and Workflows their own icons by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4492
- feat(notes): adopt Obsidian's heading ramp for the document body by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/4497
- docs(chat): document and test the jump anchor opener-run walk (#4473) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4519
- test: fix four vacuous loop-liveness asserts and two shared-state races by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4512
- feat(i18n): keep product names in English, translate Ops Mission Control by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4483
- fix(mcp-gateway): bound the first initialize handshake and reap a wedged backend by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4509
- fix(aidlc): break equal-timestamp ties newest-first in list_activities (#4518) by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4524
- test(aidlc): drive list-ordering off a stub clock, not the returned dict by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4525
- fix: deterministic list_projects order on equal timestamps (#4507) by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4517
- ci(a11y): diff-only gate for keyboard focus cues by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4485
- refactor(five-whys): flatten chained ternaries and a redundant flag by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4542
- fix(sidebar): rebuild the relative-time day cache when the timezone changes by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4340
- style: black-format chat_runner.py and graduate from baseline by @cabbey in https://github.com/kirodotdev/KiroCrew/pull/4406
- fix: resume cron turn once after post-token transient error (#4228) by @NicholasRBowers in https://github.com/kirodotdev/KiroCrew/pull/4547
- fix: wrap update-card capture harness in a router so scenes render (#4056) by @NicholasRBowers in https://github.com/kirodotdev/KiroCrew/pull/4544
- fix(autonudge): stop a monitoring loop that proved it cannot get approval by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4479
- feat(issue-radar): let the Investigate and Review agents write in your language by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4353
- fix(gateway): derive the caller's app once in the auth middleware by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4500
- fix(issue-radar): copy the issue/PR link on a non-secure origin, and report a failed copy by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4516
- feat(issue-radar): edit an issue's assignees from the detail pane by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4522
- fix(sessions): make the open-items overflow row expand the block by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/4432
- fix(chat): put the transcript rows on a 4px grid by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4511
- fix(security): respect quoted separators in _extract_base_command by @cabbey in https://github.com/kirodotdev/KiroCrew/pull/4231
- fix: judge a git checkout out of date by commit distance by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4494
- test: bound the suite's memory so a full run fits on a small laptop by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4529
- ci: stop the e2e chromium install eating the job budget by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4575
- feat(md-notebook): run auto-sync in the backend on a user-set interval by @michellemxm in https://github.com/kirodotdev/KiroCrew/pull/4440
- fix(gateway): clear headless run marker on shutdown by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3352
- fix(snapshot): refuse malformed cron JSON during merge by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3353
- fix(frontend): hide feature request seed prompt by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3365
- fix(instance-tab-bar): make crew pin checkbox toggle on keyboard and re-render by @cixuuz in https://github.com/kirodotdev/KiroCrew/pull/4581
- fix(mcp): stop cycling the broker when a stub switch is toggled by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4470
- fix(chat): anchor preserved reasoning on the following tool call by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4578
- fix(dashboard): declutter the side-panel header — content tabs lead, panel chrome trails by @xuejinT in https://github.com/kirodotdev/KiroCrew/pull/4584
- fix(test_acp_client_more_coverage): use short socket dirs in acp-client and gatewayd coverage tests by @tlobinger in https://github.com/kirodotdev/KiroCrew/pull/4595
- test: install mint grant recorder before grant visibility (#4593) by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4597
- fix: gatewayd cannot spawn any pooled MCP backend -- log-only redact() fail-closes by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4563
- fix(usage): account for background LLM turns at their two chokepoints by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4484
- fix: re-introduce session-pulse survey with reopen, disclosure, surface-scope, and cross-instance identity fixes by @miamanav in https://github.com/kirodotdev/KiroCrew/pull/4341
- fix(test_playwright_cli_installer): fix macos killpg permissionerror in pwcli rebootstrap test by @tlobinger in https://github.com/kirodotdev/KiroCrew/pull/4603
- fix(mcp-gateway): pool env-declaring servers by default by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4566
- fix(dev-fleet): dependency-only sync when a console script is locked by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4541
- feat(i18n): interpolate the product name via defaultVariables by @ShotaroKataoka in https://github.com/kirodotdev/KiroCrew/pull/1964
- fix(meetings): poll while a start is initializing by @kaizawa97 in https://github.com/kirodotdev/KiroCrew/pull/1981
- fix(dev-fleet): gate background tasks off by default in tests by @leeclarkuk in https://github.com/kirodotdev/KiroCrew/pull/1992
- feat(discord): start allowed channel messages in threads by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3686
- feat(secrets): encrypted vault store with agent denylist by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3725
- fix(ci): retire single-user premise in shared opus review prompts by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3505
- fix(sandbox): reject fractional cgroup limits by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3684
- fix(config): enforce bounds on 4 numeric-string knobs at coercion site by @adiarora06 in https://github.com/kirodotdev/KiroCrew/pull/3733
- refactor(terminal): route 'Run in terminal' to app-wide dock, remove chat transfer by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/3886
- perf(history): update the tab-id chain index in place on save by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/3997
- fix(hooks): follow-up improvements from AI reviewer CONCERNS on PR #3952 by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4011
- chore: list todo-txt in the app registry by @LeTeutz in https://github.com/kirodotdev/KiroCrew/pull/4019
- feat: expose the markdown memory layer through a CLI read API (#3192) by @NicholasRBowers in https://github.com/kirodotdev/KiroCrew/pull/4139
- fix(apps): read process start time through a cross-platform shim by @leonlaiyc in https://github.com/kirodotdev/KiroCrew/pull/3931
- feat(metrics): hang-resilience telemetry for the child-permission hang class by @Xianwen-Peng in https://github.com/kirodotdev/KiroCrew/pull/4190
- fix(dashboard): broadcast a slot close before the teardown awaits by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4138
- feat(messaging): channel-neutral outbound file extraction (no callers) by @pepmach in https://github.com/kirodotdev/KiroCrew/pull/4313
- test(design_tweak): derive the write ceiling instead of probing it with 2080 writes by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4338
- fix: resolve the provider CLI off the event loop by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4195
- fix(chat): hand focus to the transcript when the earlier-messages bar unmounts by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4354
- feat(dashboard): add compose-panel auto-approve toggle to Task Runner by @josej4m in https://github.com/kirodotdev/KiroCrew/pull/4360
- fix(chat): exempt a note breadcrumb from the turn-start voice and status effects by @rnoack1 in https://github.com/kirodotdev/KiroCrew/pull/4366
- feat(babysit): emit a comparable progress key and stop on no-progress by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4386
- fix(chat): stop a slow kiro-cli probe from disabling Continue by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4194
- refactor(dashboard): retire refreshTrigger from 13 React Query keys (#4179) by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4410
- fix(dev-fleet): process force-only worktree prunes so progress and toast are correct by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4133
- fix(fork): inherit the parent session's tags by @jeeshofone in https://github.com/kirodotdev/KiroCrew/pull/4419
- feat(chat): search files in a folder tab, recursively by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4158
- docs: propose everything-is-an-app tenet and the app boundary by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4444
- feat(command-bar): opt-in launcher behind the quick-search gesture by @chenmingwei23 in https://github.com/kirodotdev/KiroCrew/pull/4446
- feat(dashboard): derive board columns from live session state by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4468
- fix(a11y): restore the keyboard focus ring and key it on :focus-visible by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4481
- docs: record where the app-store RFC diverged on categories by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4495
- fix(mochi): widen the exact-trust label budget and add a full-command tooltip (#4462) by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4508
- fix(dashboard): label the agent picker's set-default control instead of a bare star by @dwu96 in https://github.com/kirodotdev/KiroCrew/pull/4526
- fix(test_spawn_exec_shim): fix macos/deep-worktree host-env failures in test_spawn_exec_shim.py by @tlobinger in https://github.com/kirodotdev/KiroCrew/pull/4527
- refactor(mcp): send artifact PATCHes through the verb helper by @leonlaiyc in https://github.com/kirodotdev/KiroCrew/pull/4537
- fix(crew-store): survive a read that races a concurrent store replace by @leonlaiyc in https://github.com/kirodotdev/KiroCrew/pull/4539
- fix(agent): retry the agent-config rename on a Windows sharing violation by @leonlaiyc in https://github.com/kirodotdev/KiroCrew/pull/4548
- fix(i18n): route two display counts through fmtNumber by @DeryFerd in https://github.com/kirodotdev/KiroCrew/pull/4551
- feat(search): match session search on PR/MR/issue numbers by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4567
- fix(topbar): let pinned crew chips adapt to their own track by @CrysisDeu in https://github.com/kirodotdev/KiroCrew/pull/4401
- refactor(telegram): dedupe task tracking, poll backoff and table scanning by @bolichen97 in https://github.com/kirodotdev/KiroCrew/pull/4571
- fix(chat): render injected notices as system notes, not user bubbles by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4586
- fix(dashboard): reconcile stale in-memory slot window from disk on refresh by @RohanK6 in https://github.com/kirodotdev/KiroCrew/pull/4434
- fix(sessions): answer a session dropped on its own pane with its own copy by @kyleseaman in https://github.com/kirodotdev/KiroCrew/pull/4573
- ch