Repository navigation
v0.16.0
·
75 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
devin-2api v0.16.0
Full Changelog: v0.15.0...v0.16.0
Features
- feat(brand): adopt D> logo across panel, docs site, and README
- feat(selfupdate): in-panel zero-downtime self-update via transient orchestrator
- feat(deploy): support macOS in install.sh bootstrap
- feat(ccpanel): rebuild accounts page as table-first pool view
- feat(ccpanel): add server-side bucketed cells to logs matrix
- feat(deploy): add curl-able install.sh bootstrap for Linux
- feat(adapter): wire upstream video channel
- feat(adapter): wire upstream document channel and prompt_cache_key
- feat(adapter): signal stale model catalog via ErrStaleCatalog
- feat(store): queue runtime_state writes behind a single-writer pump
- feat(store): add GROUP BY variants of LogRecentRPM
- feat(devin): match model aliases punctuation-insensitively
- feat(ccpanel): render newly landed admin fields
- feat(rategate): export upstream throttle EMA in gate stats
- feat(ccpanel): add in-process runtime-metrics history ring
- feat(detached): persist completed entries across reuseport handoffs
- feat(server): watch listen port for foreign REUSEPORT holders
- feat(ccpanel): stamp quota sampler writer identity into runtime_state
- feat(ccpanel): add quota sampler heartbeat to runtime-metrics
- feat(ccpanel): surface store_opens ledger in runtime-metrics
- feat(store): record process identity in store_opens on Open
- feat(rategate): export pending_windows buffer depth
- feat(ccpanel): add coverage field and exclude warm pings in sends_per_row
- feat(store): emit store opening line before db work
- feat(debuglog): count rejected-row insert failures
- feat(ccpanel): expose quota_samples persist-loss counters
- feat(detached): persist lifecycle events to detached_events ledger
- feat(debuglog): retry dir claim once after transient write-conn stall
- feat(ccpanel): aggregate top-level detached stats across all lanes
- feat(debuglog): stamp upstream_done_ms as non-stream egress baseline
- feat(store): add slack columns to log_cells rollup
- feat(debuglog): record yield probe fields in upstream_attempts
- feat(rategate): cumulative per-class wait totals and ping admit split
- feat(debuglog): record per-dir late write count in meta.json
- feat(warm): record ping outcomes in a bounded event ring
- feat(rategate): record wait estimate in sample ring for ew calibration
- feat(store): add log_cells backfill for pre-coverage gap
Fixes
- fix(selfupdate): split Unix process ops behind build tags for Windows
- fix(devin): complete tool-call turns lacking stop markers
- fix(devin): treat phase=final_answer as stream completion
- fix(responses): emit namespaced tool names and accept additional_tools
- fix(deploy): guard svc_pid — launchctl print exits 113 on unloaded service
- fix(tools): surface census skips and unknown holder uid
- perf(ccpanel): add TTL-tiered result cache in front of /admin|/dashboard/stats
- fix(ccpanel): bound swr background refresh with a timeout
- perf(adapter): compute rategate stats views outside the lock
- perf(adapter): cache rendered tool-description section by tools hash
- fix(adapter): close audit-hunted shutdown, panic, and alloc defects
- fix(skills): repair cross-skill references after vendoring
- fix(protocensus): unwrap 04 JSONL envelope and type managed-search payloads
- fix(debuglog): close dead-queue send windows, flag rotated reads
- fix(devin): drain detached registry on adapter close
- fix(devin): move lock-held sqlite writes into async queues
- perf(store): add reusable per-dict zstd delta encoder
- fix(store): bound maintenance deletes and chunk index import
- fix(store): bound CAS manifest chunk count before allocation
- perf(ccpanel): skip escaped-form probing for maskToken-safe tokens
- perf(ccpanel): collapse per-model and per-token RPM queries into GROUP BY scans
- perf(ccpanel): fold rpm totals into the first cell scan
- fix(ccpanel): scope status_codes by token identity
- fix(cmd/devin-2api): truncate holder cmdline on rune boundary
- fix(cmd/probe): bypass ambient proxy, close store, rune-safe truncation
- fix(api): tolerate absent content uniformly across dialects
- fix(api/chat): reject requests that decode to zero messages
- fix(api/chat): fall back to max_tokens when max_completion_tokens is dropped
- fix(api/anthropic): emit text fallback for server tool results
- fix(api/chat): omit empty reasoning_content field
- fix(api/chat): skip server tool result events instead of panicking
- fix(httpproxy): skip cached IPs that just failed dialing
- fix(panel): keyboard and screen-reader accessibility pass
- fix(config): accept single-quoted TOML credential values
- fix(app): derive alias capability keys from modelEntry
- fix(config): write small state files atomically
- fix(app): emit protocol-shaped pre-pipeline rejects
- fix(panel): misc small defects across shared JS, logs.html, accounts.css
- fix(panel): adaptive units and decimal cap in number formatting
- fix(panel): guard stats races and clear stale pies on empty results
- perf(panel): use before_id keyset cursor for sequential log paging
- fix(panel): escape model names and status code in HTML tooltips
- fix(config): reject punctuation-folded alias key duplicates
- fix(store): bound capacity strip per Maintain tick
- fix(devin): skip block marshal on detach-blob carry hit
- fix(store): update 0019_detached_blobs apply signature to dbtx
- fix(detach): refuse detach while the registry is draining
- fix(server): require provenance env for SO_REUSEPORT join
- fix(config): clear healthz last-good flag on reload recovery
- fix(config): serve last-known-good on boot load failure
- fix(ccpanel): warn when quota round skips on empty pool
- fix(ccpanel): flush pending quota_samples on drain
- fix(config): degrade lane on unreadable credentials_file
- fix(debuglog): bound flushAll group txs at 32MB or 16384 rows
- fix(store): run read-then-write startup txs under BEGIN IMMEDIATE
- fix(store): run WriteDebugBatch under BEGIN IMMEDIATE
- fix(store): update 0018_store_opens apply signature to dbtx
- fix(obs): expose pending_bytes_max and dropped_payload_bytes in logs view
- fix(store): run migrations under BEGIN IMMEDIATE to avoid BUSY_SNAPSHOT
- fix(store): route claim txs through instrumented writeTx
- fix(devin): sum detached aborted counter in merge
- fix(devin): admit detached intent lock-free at client disconnect
- fix(store): chunk ReconcileCells gap fill per tx
- fix(store): budget wal checkpoint by live frames, not file size
- fix(store): bound delete chunks by matched bytes as well as dir count
- fix(debuglog): retry claimDir once on raw SQLITE_BUSY
- perf(store): seed debug_payload_bytes asynchronously off the Open path
- fix(detached): sweep expired entries during stats() walk
- fix(debuglog): refresh meta.json on post-Complete detached events
- fix(ccpanel): split quota sample persist onto its own store-write budget
- fix(gate): flush pending gate_windows on drain
- fix(rategate): deepen gate_windows persist replay buffer to 60
- fix(app): hand off detach decision before pump exit on cancel
- perf(store): chunk gate_windows/lane_attempt_causes retention deletes
- fix(store): batch DeleteLogsBefore by id keyset
- fix(authtoken): bound sync-write enqueue and per-task store ctx
- fix(modelreg): move store writes outside registry mutex
- fix(ccpanel): latch quota sampler off after drain begins
- fix(pool): prefer probed-free sibling on yield failover
- fix(detached): evict cache entry by origin dir on panel abort
- fix(debuglog): record dirless logs row when claim fails
- perf(store): bound checkpoint hold and chunk CAS mark-sweep
- fix(app): suspend housekeeping during drain and on handoff
- fix(debuglog): stamp request end on the handler goroutine
- fix(rategate): charge expectedWait serialization only for queue excess
- fix(debuglog): exempt detached markers from Complete's closed gate
- fix(ccpanel): replay failed quota_samples persists on next sample
- fix(debuglog): gate drift warn behind same-sign streak
Other
- test(devin): drain queued events before asserting cancel in attach-miss test
- build(site): bump vite to 6.4.3 and esbuild to 0.25.12 via overrides
- chore(skills): drop code-review, fix-it, observability vendored skills
- docs: refresh feature docs for media inputs, search, pool, self-update
- docs(site): add VitePress user docs site with EN/CN locales and Pages CI
- test(devin): poll for detached registry admit after client cancel
- Merge branch 'main' of github.com:WncFht/devin2api
- test(devin): wait for async cooldown queue before reading persisted state
- Merge pull request #8 from WncFht/dependabot/github_actions/actions-b1c26865b9
- build(deps): Bump docker/setup-buildx-action
- test(config): derive file-miss assertion from os.ReadFile on this platform
- test(panel-verify): add audit-shots screenshot harness
- refactor(ccpanel): rebuild settings, index and login pages
- refactor(ccpanel): rebuild tokens and accounts pages
- refactor(ccpanel): rebuild stats, trend and models pages
- refactor(ccpanel): rebuild logs page on shared contracts
- refactor(ccpanel): converge shared UI layer on canonical contracts
- docs(accounts): state post-commit immutability contract for cfg
- docs(adapter): record detached_blob as a delta-Partial consumer
- refactor(scripts): group scripts/ into concern dirs and shorten corpus path
- docs(skill): record upstream binary acquisition chain for protoextract
- build(proto): refresh upstream descriptors from Devin 3.10.31
- docs: scrub local topology identifiers from published files
- refactor(llm): generalize signatures and server tool results in the IR
- docs: apply user-facing writing pass across README and docs
- refactor(panel): converge KPI/value colors on shared .tone-/.kpi-
- chore(skills): localize all skills to Chinese
- docs: correct stale claims found by full docs-guard audit
- refactor(panel): consolidate css values onto token scales
- refactor(panel): unify accounts fetch layer
- refactor(panel): move stats table inline styles to classes
- refactor(panel): move chat modal inline styles to classes
- refactor(panel): move accounts page inline styles to classes
- refactor(panel): move models table inline styles to classes
- refactor(panel): move model-test modal inline styles to classes
- refactor(panel): move settings page inline styles to classes
- refactor(panel): share pagination component across logs and models
- docs(skills): localize writing-user-docs and docs-guard to Chinese
- refactor(panel): drop leading-underscore expando markers
- refactor(panel): allow scoping i18n retranslate to a subtree
- refactor(panel): drop unused toggleResponse and protocol select helpers
- refactor(panel): drop token row fallback and tidy tokens helpers
- refactor(panel): share filter combobox skeleton builder
- chore(skills): vendor code-review + four samber golang skills
- refactor(panel): share relative-time helpers between accounts layers
- refactor(panel): fold settings tbody events into shared delegation
- refactor(panel): fold models page events into shared delegation
- refactor(panel): drive token quota fields from a spec table
- refactor(panel): adopt shared helpers in stats and logs pages
- refactor(panel): add shared range, RPM and filter-combobox helpers
- Merge branch 'main' into refactor/arch-20260919
- Merge branch 'main' into refactor/arch-20260919
- refactor(panel): split debug log modal out of logs.js
- refactor(devin): drop pool fan-out wrappers subsumed by Snapshot
- refactor(panel): drive trend series from a spec table
- refactor(adapter): drop the ctx-based gate retry marker
- refactor(devin): share the singleflight-cache and event-ring skeletons
- refactor(panel): split ui.js into per-concern modules
- test(devin): drain detached ledger pump before asserting rows
- Merge branch 'worktree-agent-a86d1bc6b205ea60f'
- Merge branch 'worktree-agent-a90d3c33f3e5bca28'
- Merge branch 'worktree-agent-ad953ed459f5255b9'
- test(ccpanel): check persistQuotaSample errors in tests
- refactor(devin): drop dead observedModels bookkeeping
- refactor(panel): tokenize chat-message and upstream-modal colors
- refactor(store): single-pass usage marshal, unexport test-only helpers
- refactor(panel): split page-specific styles out of styles.css
- refactor(devin): concentrate the detach admit handshake in detached.go
- refactor(devin): split responseStream's pure policies out of the state machine
- refactor(main): single-source the forensic marker mechanism
- refactor(main): concentrate handoff-role gating into a role module
- refactor(devin): name the resend attempt and make attempt-scoped state explicit
- refactor(ccpanel): single-source the token pricing formula
- refactor(ccpanel): construct Handler from Deps, extract quotaSampler
- refactor(panel): unify modal handling behind shared Modal stack
- refactor(ccpanel): take pool telemetry as one Snapshot dep
- docs(skills): vendor writing-user-docs and docs-guard
- test(ccpanel): check persistQuotaSample errors in tests
- refactor(ccpanel): tighten settings lock and atomic usage
- refactor(api): unify model echo fallback chain
- refactor(accounts): share the account config projector
- refactor(cmd/devin-2api): merge forensic marker read-modify-write pairs
- refactor(devin): collapse pool observability fan-out into Snapshot
- refactor(panel): drop unreachable multimodal-fallback/custom-pricing editors
- refactor(store): unify write transactions on BEGIN IMMEDIATE
- refactor(devin): move admission interpretation home to gate
- refactor(app): collapse pre-pipeline error writers into one
- refactor(accounts): own account write-path types, stop importing ccpanel
- refactor(debuglog): concentrate dir-bound grammar into one module
- chore(store): regen tx-constructor allowlist for landed immediates
- test(store): guard raw tx constructors behind an allowlist
- refactor(gate): retire dead hold reject reason into quota
- chore(scripts): add best-effort WAL TRUNCATE checkpoint post-deploy
- test(devin): cover detached pump upstream-error finish path
- test(devin): cover detached pump ttl_expired finish path
- docs(quota-gate): document gate_windows persist path and loss counters
- docs(debuglog): refresh stale comments for closed-exempt markers