Skip to content

Code UX 0.9.10

Choose a tag to compare

@numnx numnx released this 16 Jul 19:32
df94b69

Code UX 0.9.10

Code UX 0.9.10 is a performance and reliability release for sustained high-concurrency orchestration, durable restart recovery, faster Git and Docker operations, bounded runtime memory, clearer workflow status, and installable cross-platform desktop candidates. It was promoted through release PR #3140.

Release Snapshot

Item Details
Version 0.9.10
Release commit df94b697174b3343ba843c83bbc59b33b0638920
Release PR #3140
Included dev sync #3142, #3144, #3146, #3148, #3150, #3152, #3154, #3157, #3158, #3160
Scope 383 files changed across orchestration, provider runtime, Git/Docker helpers, Electron/CI, dashboard, tests, security, and documentation

What’s New

High-Concurrency Orchestration

Wide DAGs now keep scheduling, persistence, provider activity, realtime delivery, and logging resource-bounded instead of retaining high-cardinality state until the Node.js heap is exhausted.

  • Bounds provider activity text, invocation messages, recent-activity caches, snapshot caches, WebSocket queued bytes, structured-log writes, subprocess output, and database/WAL work.
  • Batches wide-DAG task-run, QA-cycle, merge-gate, and workflow-evidence queries while keeping live DAG projections linear and memoized.
  • Parses append-only provider telemetry incrementally and applies suffix-only conversation updates instead of repeatedly rebuilding full histories.
  • Runs Task QA in provider-aware waves of up to four, keeps compact hosts fully utilized, and reserves interactive capacity only on larger hosts.
  • Adds a local-only 400-task adversarial DAG with wide fan-out, layered joins, cross edges, requested-change repair, Sprint QA, CI repair, forced restarts, resource ceilings, and cleanup assertions.

Durable Restart Recovery

Planning and task execution can continue their persisted provider-native sessions after a runtime restart rather than silently starting unrelated fresh work.

  • Resumes interrupted planning in the exact recorded provider conversation and preserved workspace when continuation is supported.
  • Continues completed coding from Git finalization, and resumes QA reviews, QA follow-ups, CI repair, merge-conflict repair, and hosted provider work without duplicate invocations.
  • Preserves asynchronous hosted QA follow-ups in awaiting_provider, reconciles remote truth after restart, and refunds restart-interrupted guardrail attempts idempotently.
  • Reconciles stale provider work, workspace ownership, task state, QA state, and merge state without duplicating active work.

Faster Git and Docker Operations

Active projects now reuse project-scoped Git helpers and bounded workspace sidecars instead of repeatedly creating short-lived containers for individual commands.

  • Reuses one warm helper per Git common directory and runtime owner across selected-project and active-sprint leases, with concurrent command execution and no owner-handoff stop/start gap.
  • Reuses bounded workspace sidecars, verified setup images, and shared runtime-volume readiness while preserving project, repository, credential, and runtime-owner isolation.
  • Makes worker branches collision-safe with remote probing, atomic compare-and-swap publication, ambiguous-push reconciliation, canonical macOS worktree ownership, and fewer repeated fetch/ref scans.
  • Scopes cleanup by runtime owner so isolated Code UX runtimes sharing Docker cannot delete each other’s helpers, workspaces, provider containers, volumes, or test assets.

Provider Runtime and Security

Provider dispatch and prompt transport are more capacity-aware and safer under large workloads.

  • Uses a fresh Jules active-session inventory, reserves externally active work against the configured cap, and applies learned retry backoff while keeping the provider create response authoritative for races.
  • Streams oversized stdin-capable provider prompts from restrictive files instead of exposing them through host or container argument lists.
  • Stops duplicating local CLI prompts in session-tracking storage and uses SHA-256-derived names for ephemeral network helpers.
  • Refreshes the embedded models.dev catalogue used by runtime pricing and model selection.

Dashboard and Live Experience

Sprint and task workflow evidence is now presented consistently across the dashboard, DAG, and live views.

  • Orders sprint phases as Planning, Coding, QA, Pull Request, CI, Merge, and Completion while task/DAG surfaces retain task-specific workflow states.
  • Promotes only real, unassigned human intervention to sprint-level “Human needed”; resolved, worker-actionable, or stale attention does not block the sprint.
  • Exposes Sprints and a focused upper Live view in Easy and Standard modes, adds Schedule in Standard, and keeps detailed task, invocation, and Git evidence in Expert mode.
  • Stores each chat mutation once, aliases project/thread subscriptions without duplicate frames, and avoids heavy snapshot work when no subscriber needs it.
  • Improves dropdown and action-menu viewport clamping, resizing, scrolling, focus behavior, accessibility, and DAG render memoization.

Cross-Platform Release Validation

Release candidates now prove that the actual desktop packages install and start on their native operating systems.

  • Packages, installs, starts, and verifies packaged backend and renderer readiness on Linux, macOS, and Windows.
  • Runs the full Linux, macOS, and Windows Playwright matrix for main-target release validation.
  • Reuses the compiled artifact for isolated npm tarball installation and native runtime verification.
  • Keeps manual desktop diagnostics artifact-only and uploads built candidates even when an installed-app smoke fails, preserving release evidence.
  • Updates the Electron, Electron Builder, pnpm, and cross-platform dependency toolchain while retaining deterministic frozen-lockfile installs.

Fixes

OOM and QA Context Growth

  • Fixed the multi-gigabyte heap-growth path that could terminate Node.js with Reached heap limit during sustained provider invocation updates.
  • Task QA now receives the current task’s complete specification and details, the latest activity evidence, and only the titles of completed sibling tasks.
  • Sprint QA keeps the ordered full task list until its estimate exceeds 100,000 tokens, then uses the first half of each task instruction to bound exceptional prompts.

CI Repair and Human Handoffs

  • Charges one CI-repair guardrail attempt per actual provider invocation instead of scheduler replay or publication recovery.
  • Returns no-change results to the provider repair path and avoids spending another attempt when an interrupted invocation is resumed.
  • Deduplicates worker and feature-gate handoffs, resets the exact ledger subject when intervention is resolved, and supports taskless final-merge repair subjects.
  • Keeps automatic QA and CI follow-up running until a genuine configured guardrail is reached.
  • Makes restart-heavy DAG validation accept repeated changes_requested outcomes only when durable recovery evidence and a distinct repair completion prove a valid cycle, while rejecting late, spurious, or reordered histories.

Electron Installation and Startup

  • Fixed packaged Electron dependency resolution, including the Windows startup failure where zod could not be imported.
  • Validates a copy-safe, hoisted production runtime dependency tree before Electron Builder can package it.
  • Silent Windows installs skip the interactive beta page before nsDialogs initializes, explicitly select current-user mode, preserve NSIS’s required final unquoted /D= destination, and retry only the exact transient 0xC0000005 status with bounded backoff.
  • Isolates custom NSIS plugins from incompatible bundled tooling and validates the installer on windows-latest.
  • Accepts the embedded DMG license non-interactively and makes validated macOS smoke teardown deterministic without changing production shutdown behavior.
  • Uses the correct Linux executable path and retains native package artifacts for diagnostics.

Git, Docker, and Realtime Reliability

  • Fixed stopped-helper races, setup-image lock-parent removal, unsafe container-name reclamation, anonymous-volume leakage, foreign-runtime cleanup, macOS /var alias ownership, and invalid ancestor .git mount widening.
  • Fixed branch publication ambiguity and latest-invocation push reconciliation so completed work does not incorrectly enter intervention.
  • Bounds failed-job log warnings so unavailable historical logs do not overwhelm current sprint status.
  • Prevents duplicate conversation frames and disconnects slow WebSocket clients before queued payloads grow without limit.

Validation

Check Result
Typecheck & Lint Passed locally, on the release PR, and after merge to main
Backend Tests & Coverage Passed; latest local run completed 6,156 tests with 12 skipped, and GitHub coverage gates passed
Dashboard Tests Passed locally, on the release PR, and after merge
Security Audit Passed with no high-severity audit failure
Playwright E2E Passed; all 18 Linux, macOS, and Windows purpose shards
Electron Release Candidates Passed; packages installed and started on Linux, macOS, and Windows
DAG Orchestration Passed across Linux Docker, Windows Electron, and macOS Electron lanes, including restart recovery
OpenRouter Sprint E2E Passed after merge to main
CodeQL Analysis Passed for Actions and JavaScript/TypeScript before and after merge

Additional local validation:

pnpm run ci
pnpm run check:docs-web
pnpm exec vitest run tests/backend/ci/workflow-health.test.ts tests/backend/scripts/mockup-sprint-pentest-runner.test.ts
pnpm run build
  • The standard Docker CI/QA/restart DAG completed with forced restarts, requested-change repair, sprint-level CI repair, Sprint QA, terminal completion, and zero residual workspace volumes.
  • Rapid orchestration, Electron/HOST QA, merge-conflict, standard DAG, and repeated 129-task stress suites passed during release hardening.
  • The 400-task scenario completed 400/400 tasks and 8/8 forced restarts without OOM, stalls, or dependency violations.

Risk and Rollback

  • Primary risk is concentrated in scheduling, persistence, provider recovery, Git-helper lifecycle, Docker cleanup, desktop packaging, and dashboard workflow projections.
  • The persistence additions are backward-compatible and do not require destructive rollback work.
  • npm versions are immutable after publication; any post-publication defect should be corrected with a new patch release rather than attempting to republish 0.9.10.

Known Follow-Up

  • The functional 400-task run passed, but its deliberately strict workflow-p50 wrapper remained above the 35-second performance ratchet and is retained as a future optimization target.
  • GitHub currently warns that actions/upload-artifact@v4 targets Node.js 20 and is being forced onto Node.js 24; update to the next supported action major when available.

Included Hardening PRs

  • #3138 — bound provider invocation memory and harden sustained orchestration.
  • #3141 — improve container startup, Git helpers, restart recovery, QA/CI behavior, and dashboard workflow evidence.
  • #3143 — canonicalize host worktree ownership.
  • #3145 — terminate Electron startup smoke reliably.
  • #3147 — harden restart recovery and native release smoke.
  • #3149 — strengthen network-helper name hashing for CodeQL.
  • #3151 — harden Windows installer smoke recovery.
  • #3153 — stabilize silent Windows installer smoke.
  • #3156 — harden the Windows installer and dependency toolchain.
  • #3159 — harden restart-aware QA DAG assertions.