Skip to content

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 18:04
· 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