Josh Avant
ce67ffb70e
feat(agents): add tool-free isolated completion ( #114343 )
...
* feat: add isolated pure-inference completion
* fix(google): block ambient system prompt writes
* docs: refresh generated map
2026-07-30 13:24:45 -05:00
Vincent Koc
0822e8d39e
fix(qa): preserve missing Ollama cache telemetry ( #116424 )
2026-07-30 16:37:54 +00:00
Peter Steinberger
7fa95e2656
feat(ui): add composable skill references ( #116330 )
...
* feat(ui): add composable skill references
* fix(ui): align skill reference CI contracts
* fix(ui): scope skill references to WebChat
2026-07-30 04:07:02 -07:00
pash-openai
e52354ea13
fix(build): pin typebox to a published release ( #116333 )
2026-07-30 09:58:51 +00:00
Riive
82af1bf7d4
fix(cron): stop replaying old schedule slots after a cron job is edited ( #115779 )
...
* fix(cron): bound restart catch-up to the active schedule
Editing a recurring job's schedule made the gateway fire it immediately on
the next restart. Startup catch-up compares the new schedule's previous slot
against lastRunAtMs, which still belongs to the retired schedule, so a slot
that never existed under the old schedule counted as missed.
Record when scheduling inputs take effect and replay a missed slot only when
it is newer than that. Jobs whose schedule never changed carry no stamp and
keep replaying every computed slot, so catch-up is unchanged for them.
The missed-slot predicate was duplicated in the runnable check and the
backoff-deferral pass; both now share one helper so the bound cannot drift.
Fixes #91944
* fix(cron): protect schedule activation ownership
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-30 10:07:13 +08:00
Vincent Koc
12e5eb6a23
fix(ui): clarify model setup flows ( #116086 )
2026-07-30 09:47:57 +08:00
Peter Steinberger
25d3c39130
fix(protocol): allow config hint documentation URLs ( #116063 )
2026-07-29 16:09:11 -04:00
Peter Steinberger
e0ab154e5e
fix(ui): explain unavailable MCP tool catalogs ( #115994 )
...
* fix(ui): explain undiscovered MCP tools
* fix(ui): scope MCP discovery notices to the viewed connector
2026-07-29 15:12:08 -04:00
Shakker
2cdedd7eeb
test: isolate gateway sequence lifecycle coverage
2026-07-29 20:05:56 +01:00
Shakker
403a9b778b
test: cover gateway sequence reset on restart
2026-07-29 20:05:56 +01:00
Shakker
dbcd479007
test: cover gateway sequence reset on reconnect
2026-07-29 20:05:56 +01:00
Shakker
ab3f52c367
fix: reset gateway event sequence on reconnect
2026-07-29 20:05:56 +01:00
Peter Steinberger
ff72f287c3
fix(gateway): declare viewer presence explicitly instead of deriving it from subscriptions ( #116001 )
...
* fix(gateway): declare viewer presence explicitly instead of deriving it from subscriptions
* refactor(ui): isolate viewer presence lifecycle ownership
* chore(protocol): register viewer presence schema owner
* fix(ui): keep viewer presence cleared after detach
* chore: drop changelog edits from this PR
CHANGELOG.md is release-owned; release generation derives entries from merged
PRs. Release-note context stays in the PR body.
2026-07-29 13:56:54 -04:00
Jason (Json)
cf927f7b1b
fix(memory): keep rollbacks compatible after recall metadata upgrade ( #116003 )
...
* fix(memory): keep agent database rollbacks compatible
* fix(memory): satisfy rollback migration guards
2026-07-29 11:19:22 -06:00
Peter Steinberger
4229e96e0e
feat(media): lazy playback transcode for exotic containers ( #115987 )
...
* feat(media): add lazy playback transcodes
* fix(media): harden playback transcodes
* fix(media): normalize raw AAC and WAV playback
* fix(media): finalize playback cache and codec policy
* fix(media): serialize playback cache enforcement
* fix(media): retain playback transcodes for seven days
* fix(media): keep playback internals private
2026-07-29 12:33:42 -04:00
Yiğit ERDOĞAN
6ec3dbd92d
fix(ai): tool calls fail when an unsupported schema keyword is nested ( #115741 )
...
* fix(ai): tool calls fail when an unsupported schema keyword is nested
The strip walked only properties, items, anyOf, oneOf and allOf, copying every
other value through untouched. A keyword the model rejects therefore survived
inside additionalProperties, prefixItems, patternProperties, contains,
propertyNames, not, if/then/else, dependentSchemas and $defs, and the request
was refused by the provider even though the strip reported success.
Walk the same containers the caller already enumerates in
agent-tools-parameter-schema.ts.
* fix(ai): cover all nested schema containers
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-07-29 23:08:19 +08:00
Peter Steinberger
fde4658bf6
fix(ui): recover sessions and dashboards after prolonged outages ( #115654 )
...
* fix(ui): recover long-running sessions and dashboards
* fix(ui): expose browser-safe gateway timers
* refactor(ui): keep browser timer surface minimal
* refactor(gateway): extract pending request state
* fix(ci): refresh browser runtime and format baseline
* fix(ci): exclude generated plugin outputs from targeted lint
* fix(ui): bound long-running connection and pane lifecycles
* refactor(ui): split long-running lifecycle regression coverage
* fix(ui): bound long-running media and lint ownership
* fix(security): preserve explicit workspace disable denylist
* fix(ci): preserve plugin manifest fallback lint
2026-07-29 10:09:51 -04:00
coder-master-0915
859fd0b11e
fix(markdown): keep IR text slicing UTF-16 safe ( #110643 )
...
* fix(markdown): keep IR text slicing UTF-16 safe
* fix(markdown): preserve UTF-16 IR boundaries
* chore(markdown): reconcile original merge-base
* fix(markdown): preserve UTF-16 IR boundaries
* test(markdown): verify portable UTF-16 boundaries
* fix(markdown): normalize safe slice offsets once
* fix(markdown): preserve safe slice SDK contract
* fix(markdown): preserve native UTF-16 slice semantics
---------
Co-authored-by: lizeyu-xydt <li.zeyu@xydigit.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 09:24:15 -04:00
Colin Johnson
306c02af57
feat(ui): preview session workspace images ( #95956 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 09:22:46 -04:00
Peter Steinberger
adf3178ae6
feat(gateway): expose MCP tool identity in effective tools ( #115870 )
...
* feat(gateway): expose MCP tool identity in effective-tools catalog
* docs(agents): comment utility-tool pass gate invariant
2026-07-29 08:41:04 -04:00
Vincent Koc
38abf500ba
fix(update): stabilize cross-version dev upgrades ( #115651 )
...
* fix(e2e): stabilize cross-version Parallels upgrades
* fix(e2e): avoid inline macOS guest probes
* fix(e2e): detach Windows dev updates
* fix(e2e): detach macOS guest updates with Node
* fix(e2e): initialize skipped upgrade config
* fix(update): use partial clone for dev checkout
* fix(update): keep Windows dev checkouts clean
* fix(e2e): pin Parallels dev update targets
* fix(e2e): own Parallels gateway restarts
* fix(e2e): verify pinned Parallels checkouts
* fix(e2e): forward Parallels update budgets
* fix(e2e): use canonical provider auth choices
* chore: leave changelog to release automation
* test(ui): stabilize route waits on loaded runners
2026-07-29 19:52:34 +08:00
tiffanychum
4b09214866
fix(ai): avoid websocket cache clobber on stale reused release ( #105634 )
...
* fix(ai): avoid websocket cache clobber on stale reused release
* fix(ai): prefer-const holdFirstReuse in websocket cache race test
* fix(ai): avoid websocket cache release clobber
* fix(ai): add curly braces for websocket cache delete guard
* fix(ai): owner-check websocket cache deletes without LOC growth
* ci: bump plugin SDK public surface budget pins to match main tip
* fix(ai): satisfy curly lint for websocket cache owner delete
* ci: allowlist readonly state db and format SDK surface pins
* style: oxfmt plugin-sdk surface report
* ci: drop duplicate readonly state db kysely allowlist entry
* test(ai): prove cached websocket lease ownership
Move the contributor stale-release regression into the canonical cached transport suite and prove authenticated real WebSocket close, cancellation, and queued idle expiry cannot evict a replacement lease.
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 07:52:04 -04:00
Peter Steinberger
8915f9c337
fix(gateway): prevent overlapping setup after wizard cancellation ( #115856 )
...
* fix(wizard): retain cancelled sessions until runner settles
* fix(wizard): purge cancelled sessions after settlement
* test(gateway): cover settled wizard replacement
* test(gateway): split wizard cancellation e2e
* test(gateway): fix wizard e2e env key types
* fix(gateway): forward daemon choice through wizard RPC
Co-authored-by: TheAngryPit <16145902+TheAngryPit@users.noreply.github.com >
* test(gateway): harden wizard cancellation cleanup
Co-authored-by: TheAngryPit <16145902+TheAngryPit@users.noreply.github.com >
* chore: drop changelog edit (release generation owns it)
---------
Co-authored-by: TheAngryPit <16145902+TheAngryPit@users.noreply.github.com >
2026-07-29 07:49:25 -04:00
Peter Steinberger
4c4aa2ed12
feat(gateway): manage audio and video attachments end to end ( #115842 )
...
* feat(gateway): manage audio and video attachments
* feat(gateway): preserve generated media metadata
* fix(gateway): align seeded managed media
* fix(gateway): scope pending media trust by URL
* fix(gateway): split managed media by trust
* fix(gateway): require terminal media trust unanimity
* fix(gateway): align managed media metadata types
* fix(gateway): refresh managed media contracts
* chore(ci): model managed media test seams
* test(sessions): expect canonical media kinds
2026-07-29 07:27:36 -04:00
Peter Steinberger
216f45af8e
fix(memory): preserve Windows session ownership ( #115851 )
...
* fix(memory): preserve Windows session ownership
* test(memory): cover custom and nested Windows transcripts
* fix(memory): retain nested and custom Windows transcripts
* fix(memory): isolate agent-local Windows transcript stores
* style(memory): format Windows ownership regression coverage
* fix(memory): validate physical transcript ownership boundaries
* fix(memory): bind external session paths to configured agent stores
* fix(memory): reject unowned shared transcript store roots
* fix(memory): restrict transcript archives to agent-owned roots
* refactor(memory): preserve canonical transcript corpus contracts
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 07:11:24 -04:00
loong
7bdd1f646b
fix(memory-host-sdk): resolve stable execPath for worker fork to survive Homebrew Node upgrades ( #99318 )
...
* fix(memory): survive Homebrew Node upgrades
Co-authored-by: 袁龙辉0668001277 <yuan.longhui@xydigit.com >
* test(whatsapp): isolate last-route coverage
* fix(deepinfra): preserve offline model compatibility
* test(memory): isolate migration cleanup lifecycle
* test: stabilize aggregate extension gates
* ci: retrigger pull request workflow
* test: preserve inherited Node options
* test(cli): tolerate cold hosted startup
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 06:49:02 -04:00
Vincent Koc
b6f70ea440
fix(setup): make Gemini recovery actionable ( #115835 )
2026-07-29 18:29:32 +08:00
coder-master-0915
745f780c34
fix(terminal-core): prevent String.replace $ pattern injection in display-string ( #111398 )
...
* fix(terminal-core): prevent $ pattern injection in replaceHomePath
The second argument of String.prototype.replace() interprets $ sequences
as special replacement patterns ($&, $`, $', $1-$9, $<name>). When the
user home directory path contains $ followed by special characters, the
replacement produces a corrupted path in the display string.
Using a replacer function (() => fallbackHome) instead of the raw string
argument prevents $ pattern interpretation, ensuring the literal home
directory path is used regardless of its content.
* test(terminal-core): cover literal dollar home paths
---------
Co-authored-by: lizeyu-xydt <li.zeyu@xydigit.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 06:24:49 -04:00
Peter Steinberger
20668eed03
fix(memory): quarantine writes from tainted agent turns ( #115818 )
...
* feat(memory): taint writes after network tools
* fix(memory): keep provenance mutations recoverable
* fix(memory): roll back failed provenance writes
* fix(memory): serialize provenance mutations
* docs(memory): explain flush provenance boundary
* refactor(memory): share provenance mutation wrapper
* docs(memory): clarify flush provenance fallback
* fix(memory): canonicalize provenance paths
2026-07-29 06:02:06 -04:00
Vincent Koc
25c375e47f
refactor: reuse canonical record guards ( #115810 )
...
* docs(agents): standardize canonical record guards
* refactor(model-catalog): use canonical record guard
* refactor(scripts): use canonical record guard
* refactor(ui): use canonical record guard
* refactor(codex): use canonical record guard
* refactor(agents): use canonical record guard
* refactor(sessions): use canonical record guard
* refactor(doctor): use canonical record guard
* refactor(infra): use canonical record guard
2026-07-29 11:43:36 +02:00
Peter Steinberger
4232126bba
chore: update dependencies across workspace ( #115677 )
...
* chore(deps): update dependencies
* fix(deps): restore CI compatibility
2026-07-29 05:16:42 -04:00
Peter Steinberger
a37a5a6575
feat(agents): add per-session tool overrides ( #115785 )
...
* feat(agents): per-session tool overrides (mcp/skills/web-search)
* test(agents): use tracked MCP temp dirs
2026-07-29 05:13:56 -04:00
Peter Steinberger
b148150281
fix(memory): reconcile derived FTS schemas ( #115775 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 04:54:50 -04:00
Vincent Koc
cc6b766079
fix(ui): guide users through missing or broken AI setup ( #115716 )
...
* fix(ui): block chat until inference is configured
* fix(ui): gate new sessions on configured inference
* fix(ui): gate custodian before inference starts
* fix(ui): clarify custodian setup navigation
* fix(ui): explain missing AI provider setup
* fix(ui): distinguish unavailable configured AI
* fix(ui): align inference setup fixtures
* test(ui): default mock gateway to working inference
* test(ui): align startup send gate coverage
* test(ui): inherit inference in gateway fixtures
* test(ui): normalize deferred gateway agents
* test(ui): update model setup sidebar fixture
2026-07-29 16:48:48 +08:00
Peter Steinberger
c5d0b7dd39
refactor: retire legacy provider and secret paths ( #115655 )
...
* refactor: retire legacy provider and secret paths
* fix: remove stale cache retention import
* test: remove retired secret marker fallback
2026-07-29 04:36:20 -04:00
Peter Steinberger
327432831a
fix(memory): reject malformed QMD result entries ( #115705 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 04:36:06 -04:00
Peter Steinberger
1b6ad8da8f
fix(memory): avoid phantom continuation pages ( #115722 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 04:24:19 -04:00
Peter Steinberger
5692baafc3
fix(memory): exclude annotation carriers from recall text ( #115719 )
2026-07-29 04:03:12 -04:00
Peter Steinberger
263d1763d7
fix(memory): fully disable derived FTS indexes ( #115685 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-29 04:01:25 -04:00
Vincent Koc
14940edf15
feat(skills): add Skill Workshop lifecycle hooks ( #115606 )
...
* feat(skills): add lifecycle hook contracts
* feat(plugins): expose skill hook contracts
* feat(plugins): identify skill evaluators
* feat(skills): persist proposal evaluation lifecycle
* feat(skills): add agent evaluation action
* feat(skills): emit committed skill lifecycle changes
* feat(gateway): expose skill proposal evaluation lifecycle
* feat(ui): add Skill Workshop evaluations
* fix(skills): bind lifecycle state to proposal revisions
* fix(skills): preserve lifecycle events without artifacts
* feat(cli): evaluate skill proposals
* fix(ui): bind evaluations to proposal revisions
* docs(skills): document lifecycle hook primitives
* chore(plugin-sdk): refresh skill hook surface
* fix(skills): harden proposal evaluator execution
* fix(plugins): isolate skill evaluator inputs
* fix(cli): align skill lifecycle deadlines
* fix(skills): preserve evaluation replay invariants
* test(ui): capture Skill Workshop evaluation proof
* fix(skills): bind apply to evaluated target tree
* fix(skills): preserve evaluation contract edges
* fix(skills): bound evaluation event storage
* chore(skills): keep lifecycle helpers internal
* refactor(skills): isolate evaluation persistence
* fix(skills): satisfy lifecycle validation gates
* chore(protocol): refresh Skill Workshop clients
* docs: refresh Skill Workshop map
* chore: keep release notes in PR metadata
* docs: refresh merged docs map
* fix(ci): type Code Mode catch errors
* fix(skills): freeze lifecycle observation payloads
* fix(protocol): keep proposal inspect backward-decodable
* fix(skills): enforce final evaluator bundle limits
* fix(skills): preserve lifecycle caller attribution
* chore: drop subsumed Code Mode formatting
* test(plugins): adapt lifecycle hook mocks
2026-07-29 15:49:44 +08:00
Peter Steinberger
6090386dc7
fix: make Codex harness caching and benchmark parity exact ( #115663 )
2026-07-29 03:33:36 -04:00
Vincent Koc
892907bf25
fix(agents): bound Code Mode repair retries ( #115729 )
2026-07-29 15:26:00 +08:00
Peter Steinberger
0babd1a73f
fix(tts): persist generated speech in media store ( #115647 )
2026-07-29 02:37:19 -04:00
Peter Steinberger
98a066c90e
fix(agents): project llama.cpp-safe tool schemas ( #115598 )
...
Co-authored-by: Jithin Mohandas <mohandasjithin@gmail.com >
2026-07-29 01:33:32 -04:00
Peter Steinberger
ad36646ed1
fix(gateway): reconnect nodes after transient socket failures ( #115539 )
...
* fix(gateway): reconnect nodes after transient socket failures
* fix(browser): refresh bundled gateway reconnect runtime
* fix(gateway): preserve callback-owned reconnect state
2026-07-29 01:15:26 -04:00
Peter Steinberger
34c90a8cb3
fix(process): prevent orphaned Windows child process trees ( #115535 )
...
* test(process): reproduce Windows taskkill process-tree leak
* fix(process): stop leaked Windows child process trees
Escalate only when Windows taskkill reports that graceful process-tree termination failed. Preserve awaited taskkill completion, grace-period fallback, one-shot signaling, and PID-reuse protection.
Closes #110789
Supersedes #112202
Co-authored-by: Mohammed Alkindi <alkndymhmd692@gmail.com >
---------
Co-authored-by: Mohammed Alkindi <alkndymhmd692@gmail.com >
2026-07-29 00:26:32 -04:00
Peter Steinberger
d41a56fca1
feat(memory): isolate curated entries by project ( #115438 )
...
* feat(memory): scope recall to active projects
* feat(memory): preserve project scope in promotion
* docs(memory): explain project-scoped recall
* fix(memory): chunk curated files per entry
* refactor(memory): narrow project scope internals
* fix(memory): exclude annotations from concept tags
* fix(memory): tighten project isolation boundaries
* fix(memory): preserve project path casing
* fix(memory): prioritize project bootstrap candidates
* docs: refresh memory architecture map
* test(memory): cover project scope schema repair
* fix(memory): complete project isolation paths
* fix(memory): close project ranking checks
* fix(memory): reinitialize search provider before ranking
* fix(memory): tolerate missing bootstrap paths
2026-07-28 23:55:49 -04:00
Peter Steinberger
e98675b4b2
refactor(code-mode): unify safe OpenAI tool filtering ( #115460 )
...
* refactor(code-mode): unify OpenAI tool surface filtering
* fix(code-mode): preserve transport visibility and test types
2026-07-28 21:12:43 -04:00
Peter Steinberger
5922dd4380
fix(memory): fall back to keyword search when embeddings cannot start ( #115397 )
...
* fix(memory): degrade bootstrap failures to keyword search
* docs(memory): clarify recovery status projection
* fix(memory): handle bootstrap embedding failures
* fix(memory): trust resolved provider diagnostics
* fix(memory): keep degraded syncs keyword-only
* fix(memory): confirm embedding recovery before semantic mode
* fix(memory): restore semantic readiness after recovery
2026-07-28 21:01:44 -04:00
Peter Steinberger
ad3f74f296
fix(chat): make web and terminal share one session state ( #115429 )
...
* fix(chat): consolidate web and terminal session state
* fix(chat): preserve live history across stale snapshots
2026-07-28 18:53:21 -04:00