Repository navigation
Highlights
- Memory as one row per fact — semantic recall across authorized notebooks, plus a nightly tidy (#2229, #1129, #2323, #2232).
- Goals that handle getting stuck — a governor steps back, then pauses; people can resume or cancel (#2132, #2116, #2271).
- Reply to Slack conversations from the web UI, with unread dots for new agent replies (#2383, #2250).
- Smoother app connections — missing connections offered inline and continued after consent; per-user OAuth for admin-configured MCP servers (#2043, #1812).
- Admin decision rules that run on every turn and can be enforced from chat (#2192, #2334, #2336).
- Deploy resilience — retry-safe tool calls re-run after a deploy interrupt; people's turns run before background work (#2055, #2356).
- New options — DigitalOcean Managed Agents and E2B computer backends, Browser Use Cloud for browsing, Claude Haiku 5.5, GPT-6.1 Sol Ultrafast (#2128, #2370, #2367, #2109, #2143).
- Breaking: Codex and OpenCode harnesses removed;
session_tapedropped after migrating its data (#2277, #2273, #2281).
What's Changed
- Tighten webhook registration checks by @16francej in #1922
- Tighten Slack account policy handling by @16francej in #1923
- Show the newest suggested-activities run, not the oldest by @ReganBell in #1993
- Share source-auth signing and HTML/config helpers from chassis (LAB-161) by @ReganBell in #1995
- Prompt: keep working notes in Files so any sandbox can reach them by @ReganBell in #1994
- Delete unused functions from the admin inline script by @ReganBell in #1996
- Share the tool-descriptor parser between core and the CLI by @ReganBell in #1997
- Add app annotations as native chat attachments behind a per-user flag by @ReganBell in #2006
- Clarify Inbox filtering with a custom dropdown by @evebouf in #1814
- Let listed first-party origins call the web chat API by @tdfirth in #2004
- Remove dead rules from web UI shell.css by @ReganBell in #1999
- Tighten spacing below the Inbox email filter by @evebouf in #2008
- Use session visibility for agent transcript reads by @ReganBell in #2009
- Preview Markdown, tables and text attachments in app by @ReganBell in #2010
- Ignore git http-backend stdin EPIPE instead of crashing core by @ReganBell in #1893
- Record redacted cause when Composio authorization fails by @ReganBell in #2014
- docs: add master spec by @ReganBell in #2015
- Add a per-user option to open the web UI on a new chat by @16francej in #2012
- Retire legacy sandbox provider routing by @ReganBell in #2019
- Reuse an existing trusted-provider session on trusted launch by @16francej in #2025
- Stop discarding error information at the shared error paths by @ReganBell in #2018
- Fork from the clicked message inside forked conversations by @time-attack in #2005
- Stop sending a cron tick job every second by @time-attack in #2007
- Send inbox loop-item changes only to the users who can see the loop by @time-attack in #2002
- Give the inbox viewers test response a getHeader by @16francej in #2037
- Fix web-ui dependency audit findings by @16francej in #2029
- Point Slack sessions at Slack history for missing context by @16francej in #2032
- Let qm up replace a relinquished core cohort while its members finish admitted work by @ReganBell in #2047
- Abort inline turns before shutdown hands back their leases by @ReganBell in #2051
- Drop ECS task protection and the linger-until-drained deploy wait by @ReganBell in #2052
- Re-run retry-safe tool calls transparently when a deploy interrupts a turn by @ReganBell in #2055
- Replace background membership with a single owner record by @ReganBell in #2057
- Continue the Pi assistant turn on resume instead of prompting a note by @ReganBell in #2058
- Verify Slack state before repeating cut deliveries and sweep silent terminal runs by @ReganBell in #2053
- Drop unused busy() probes and accept retired INACTIVE deployments in rollout waits by @ReganBell in #2059
- Drop the Slack state pre-check before repeating cut reaction, pin and delete deliveries by @ReganBell in #2061
- Mark tool results recorded after shutdown as interrupted by @ReganBell in #2060
- Skip the stopped assistant entry when shutdown aborts a turn by @ReganBell in #2062
- Keep org runtime settings from overwriting each other across servers by @ReganBell in #1918
- Keep spend_usage_json from raising on invalid usage text on Postgres 18 by @ReganBell in #1919
- Install each seed skill once when several servers boot together by @ReganBell in #1920
- Record the latest granter on re-grant in the in-memory ACL store, as Postgres does by @ReganBell in #1921
- Round fractional paging parameters instead of failing with a 500 on Postgres by @ReganBell in #1924
- Keep query-string tokens out of server 500 logs by @ReganBell in #1925
- Match % and _ literally when filtering the audit log by resource by @ReganBell in #1926
- Explain an unconfigured keychain instead of answering not_found by @ReganBell in #1927
- Start retention cohort weeks on Monday instead of Thursday by @ReganBell in #1928
- Accept epoch timestamps sent as strings in expiresAt by @ReganBell in #1929
- Stop goal rounds after a model call fails at the provider by @16francej in #2041
- Make conversation forks responsive and batch history copies by @ReganBell in #2070
- Notify deployments when main goes green by @ReganBell in #2049
- Batch inbox ingestion, sidebar reads, and Slack catchup writes by @ReganBell in #2073
- Bump fastify and hono for new advisories by @ReganBell in #1805
- Contain background database failures instead of crashing core by @ReganBell in #2074
- Make the admin session listing cheap and bounded by @ReganBell in #2076
- Make pip usable in the default Modal sandbox image by @16francej in #2034
- connectors: let Linear OAuth tokens refresh by @ReganBell in #2048
- Typed provider errors: stop regex-matching error text in core by @ReganBell in #2068
- Require readable descriptions for background jobs by @ReganBell in #2084
- Fix tool-call summary spacing by @ReganBell in #2079
- Offer missing app connections inline and continue after consent by @16francej in #2043
- Add Claude Haiku 5.5 by @ReganBell in #2109
- Upgrade the dependencies behind new npm advisories so the core image builds by @ReganBell in #2111
- Run the core image's production npm audit in CI by @ReganBell in #2114
- sandbox: keep provider instance names within 63 chars by @ReganBell in #2115
- Let a person resume a paused goal by @ReganBell in #2116
- Keep publishing private; share separately by @16francej in #2026
- Send session-affinity headers to the model gateway by @16francej in #2118
- Record app page views by @16francej in #2027
- Post command approval cards in the requesting DM thread by @16francej in #2110
- Send session-affinity headers for gateway-mapped models by @16francej in #2122
- chore(pricing): sync model price table with provider pricing pages by @ReganBell in #2123
- Explain wall of shame categories and require each in review by @ReganBell in #2131
- Use the user timezone for Claude limit notices by @ReganBell in #2144
- Remove deprecated
audienceparam from apps publish schema by @16francej in #2130 - Check Wall of shame review reports in CI by @ReganBell in #2151
- Show a subagent's delegated task in its transcript by @ReganBell in #2150
- Allow 16 multiview panes and Chrome tab shortcuts in the desktop app by @ReganBell in #2153
- docs: add Legacy preservation to the wall of shame by @ReganBell in #2154
- Add Slack-style emoji shortcode completion to web chat by @ReganBell in #2158
- Take the shared computer lock when the computer is already running by @ReganBell in #2161
- Assign session titles before turn setup by @ReganBell in #2162
- Remove artificial swarm setting maximums by @16francej in #2141
- Fix flaky Codex OAuth startup cancel test by @16francej in #2165
- Add a goal governor that steps back, then pauses, when a goal is stuck by @16francej in #2132
- Repair device login capture and explicit credential writeback by @ReganBell in #2146
- Trim per-turn context: grouped memory deltas, recent-only deliveries, no onboarding block by @ReganBell in #2163
- Fix sessions tool; subagents inherit their parent's capabilities by @ReganBell in #2155
- Ship AWS CLI v2 in the E2B and Modal default images by @ReganBell in #2168
- Raise subagent tree run cap from 10 to 50 by @ReganBell in #2169
- Wake an idle parent when its subagent finishes by @ReganBell in #2170
- Wall of shame: Provider drift lens + agent-side lens triage by @ReganBell in #2171
- Wall of shame: move sandbox-contract example under Provider drift by @ReganBell in #2176
- docs: add Token performance to the wall of shame by @ReganBell in #2160
- Add web UI canvas and UI state skills behind ui_canvas by @16francej in #2178
- Pause a shared computer only after the last turn using it releases it by @ReganBell in #2179
- Avoid full-history scans when listing participant sessions by @16francej in #2166
- Revert web UI canvas and UI state skills by @16francej in #2188
- Add DigitalOcean Managed Agents as a sandbox backend by @16francej in #2128
- Show Slack profile photos throughout Inbox by @evebouf in #2193
- Add team scopes behind a feature flag by @16francej in #1987
- Pass the team store to the admin API by @16francej in #2197
- Hand off Slack work to other people by plain DM through a skill by @16francej in #2167
- Show Slack sender avatars with a source badge in Inbox by @evebouf in #2194
- Fix saved-instructions reads to exclude inherited policy by @ReganBell in #2201
- Keep gateway document requests below HTTP body limits by @16francej in #2200
- Share new channel apps with their channel by default by @ReganBell in #2202
- Always review the core Wall of shame lenses by @ReganBell in #2207
- Consolidate credential context into one owner-grouped inventory by @ReganBell in #2206
- Expose native admin actions through existing authenticated handlers by @ReganBell in #2208
- Add a custom date range to the admin spend view by @ebakan in #1797
- Add a token-authenticated spend export by @ebakan in #1798
- Make execute the sole command launcher by @ReganBell in #2205
- Send environment inventories once, then only changes by @ReganBell in #2209
- Expose indexed conversation search through sessions by @ReganBell in #2204
- Rank skill shortlists and add source-safe native discovery by @ReganBell in #2210
- Consolidate prompt orientation and policy composition by @ReganBell in #2203
- Apply custom spend windows explicitly and bound them by @ebakan in #2213
- Harden the spend export token and row order by @ebakan in #2211
- Count team members as members of their team scope by @16francej in #2215
- Let webhook owners edit a webhook's task in place by @16francej in #2212
- Suggested activities: lead with urgent owed work by @ReganBell in #2219
- Restart published apps that crash instead of serving 502s by @ReganBell in #2220
- Report published app crashes, failed starts and restarts to the admin error log by @ReganBell in #2222
- Select explicit sandboxes across file, app, and skill operations by @ReganBell in #2199
- Tie background jobs to their computer and keep refused credential drops usable by @ReganBell in #2227
- Report app start failures, restarts and outages on every deploy provider by @ReganBell in #2226
- Add Prod-like QA to the Wall of shame by @ReganBell in #2233
- Normalize delivery text before PostgreSQL persistence by @16francej in #2236
- Per-user OAuth sign-in for admin-configured MCP servers by @16francej in #1812
- request-access skill: drop one-time grant guidance by @ReganBell in #2234
- Store memory as one row per fact; agents add, edit and delete by id by @ReganBell in #2229
- Work a loop fire's batch through a bounded pool (maxConcurrentItems) by @pcapriolo-yc in #2091
- Fix app readiness and liveness probes found broken by live Fly and AWS QA by @ReganBell in #2238
- Add semantic recall across authorized memory notebooks by @16francej in #1129
- Send portal identity when starting self-connect by @16francej in #2244
- AGENTS.md: testing rule by @ReganBell in #2240
- Delete web-ui tests that only read source text by @ReganBell in #2242
- Make the Files upload helper work through HTTPS proxies by @ReganBell in #2246
- Delete core tests that read src/ text by @ReganBell in #2241
- Drop source-text assertions from mixed web-ui tests by @ReganBell in #2245
- Fix Copy link in the desktop app by @ReganBell in #2080
- Web UI: unread dots for new agent replies by @ReganBell in #2250
- Drop the unused session adopt route and run kept web-ui tests against real modules by @ReganBell in #2255
- Add authenticated dictation and live voice endpoints by @ReganBell in #2252
- Wall of shame: credential handle prefix band-aid by @ReganBell in #2257
- Keep long live turn streams updating with bounded tails by @ReganBell in #2260
- Let core decide which web chats a viewer can continue by @ReganBell in #2267
- Apply Devbar toggles synchronously by @ReganBell in #2268
- Admin Runtimes card: composer model picker rows and memory recall by @ReganBell in #2239
- Quiet multiview chrome with hover and keyboard controls by @ReganBell in #2264
- Use OpenAI limits for voice instead of our own caps by @ReganBell in #2259
- Nightly memory tidy; drop cron run modes so crons run as their owner by @ReganBell in #2232
- Automatically install and restart desktop updates by @ReganBell in #2263
- AWS apps: suspend instead of delete, rotate in the background, faster cold start by @ReganBell in #2261
- Let users cancel a goal by @ReganBell in #2271
- Show all conversations by default with quieter sidebar rows by @ReganBell in #2275
- Prompt: prefer platform tools over the browser by @ReganBell in #2276
- Remove the run task list by @ReganBell in #2274
- Keep memory vectors across gateway moves and bound index writes by @ReganBell in #2278
- Honor linked identities in room membership checks by @16francej in #2039
- Stop writing and reading session_tape by @ReganBell in #2273
- Remove Codex and OpenCode harnesses by @ReganBell in #2277
- Copy legacy tape step metadata into side tables before the tape is dropped by @ReganBell in #2280
- Add decision hooks with pluggable decision model providers by @16francej in #2192
- Plan durable-map scoped selects through their indexes by @ReganBell in #2282
- Skip legacy tape payloads too large to parse during step preparation by @ReganBell in #2299
- fix(mcp): call the configured MCP endpoint; list linked per-user MCP sign-ins by @16francej in #2290
- Stop stripping the bot mention from Slack messages by @16francej in #2256
- Drop session_tape once its step metadata has been copied out by @ReganBell in #2281
- Rank semantic memory in Postgres with pgvector by @ReganBell in #2323
- Drain full memory index batches within one tick by @ReganBell in #2326
- Speed up the app: serve web UI assets gzipped through the portal by @16francej in #2331
- Run turn_start decision rules when a model is already selected by @16francej in #2329
- Run turn_start decision rules on every turn, with turn context by @16francej in #2334
- Let admins enforce decision rules from chat by @16francej in #2336
- Remove decision question length limit by @16francej in #2338
- Hide automation runs from the sidebar and classify sessions by stored surface by @ReganBell in #2340
- Always review Historylessness in the Wall of shame by @ReganBell in #2337
- Store execute output once in tool results by @ReganBell in #2339
- Remove the turn-wall-clock admin resource by @ReganBell in #2341
- Check sandbox execution against the stored result by @ReganBell in #2345
- Remove per-entry security taint plumbing by @ReganBell in #2342
- Copy legacy tape steps automatically before the tape drop by @ReganBell in #2349
- Add GPT-6.1 Sol Ultrafast by @ReganBell in #2143
- Show Slack avatars for project members by @ReganBell in #2321
- Take Inbox Slack photos from the org directory by @ReganBell in #2325
- Keep goal state in session_goals, not the session log by @ReganBell in #2343
- Drop the unused turn_wall_clock_configs table by @ReganBell in #2350
- Set up a connector source before onboarding asks about work by @16francej in #2214
- Prefer hand-off over admin reads; no invented consent in subagent tasks by @16francej in #2230
- Let the server own a chat's model and show routed turns in the picker by @16francej in #2354
- Detect connector sources from existing signals by @16francej in #2359
- Install layer tools outside /workspace on DigitalOcean computers by @16francej in #2195
- Fix /sessions/ session links and make sessions searchable by title/id by @ReganBell in #2357
- Include a canonical web URL with each session search hit by @ReganBell in #2365
- Make subagent briefs peer-to-peer by @ReganBell in #2364
- Add per-user settings to unpin the latest prompt and steer mid-run sends by @16francej in #2333
- Keep admin-archived catalog skills archived across restarts by @16francej in #2330
- Tell resumed turns the recorded reason the last attempt stopped by @ReganBell in #2361
- Record a stopped turn as a system note, not a fake assistant reply by @ReganBell in #2363
- Stage Managed Agents scratch files inside the workspace by @16francej in #2335
- Resume/stop fast follows: one cause table, flag-based resume notes, Claude stop parity by @ReganBell in #2371
- Add E2B as a selectable agent-computer backend by @16francej in #2370
- Add Browser Use Cloud provider to the browse skill by @16francej in #2367
- Preserve human origins through delegated session turns by @ReganBell in #2375
- Tighten author headers in labeled chats by @ReganBell in #2376
- Resume from recorded context without a no-op prompt by @ReganBell in #2373
- Add local computer access to human desktop turns by @ReganBell in #2262
- Show a reply the model finished mid-run as a reply, not folded work by @ReganBell in #2381
- browse/kernel: profile names are secrets; no listing; verify account identity by @16francej in #2378
- Swarms: choose a model per worker at spawn by @16francej in #2377
- browse/kernel: use the shared Kernel credential through the broker by @16francej in #2384
- Let the deployment supply broker credentials from its environment, with an optional daily cap by @16francej in #2385
- browse: run first-time setup silently by @16francej in #2387
- Add per-scope pinned skills to the skills shortlist by @16francej in #2386
- Run people's turns first and park background work for them by @ReganBell in #2356
- Flush the Postgres error log before runtime stop resolves by @ReganBell in #2390
- Composio execute: report failure cause, longer tool timeout, bulk-read guidance by @16francej in #2389
- Keep the composer visible on every multiview pane by @ReganBell in #2391
- Hide finish_silently from silent wake turns in the web transcript by @ReganBell in #2395
- Canvas: always-on canvas and sharing by copy by @16francej in #2366
- Poll for the schema lock so concurrent migrations do not deadlock by @anurag in #2401
- Let notebooks without a records column migrate into fact rows by @anurag in #2400
- Keep the mobile session-tools sheet above the composer and align its rows by @16francej in #2402
- Restore secret-drop instructions agents can find by @16francej in #2403
- Make swarm message, notification, spawn and lifetime budgets opt-in by @16francej in #2406
- Keep older Slack backscroll when QM is tagged after a quiet gap by @ReganBell in #2409
- Mark calendar days in the model's replayed context by @ReganBell in #2411
- Tell the model how it reaches the person's Mac/PC by @ReganBell in #2412
- Reply to Slack conversations from the web UI by @ReganBell in #2383
- Audit Composio connection completions by @ReganBell in #2414
- Read only the current session's approvals by @ReganBell in #2419
- Name org credentials by slug everywhere by @ReganBell in #2413
- Draw a chat's transcript without waiting for its approvals by @ReganBell in #2421
New Contributors
Full Changelog: v0.1.14...v0.1.15