Code UX 0.9.9
Code UX 0.9.9
Code UX 0.9.9 promotes the validated integration state through release PR #3136, delivering complete English/German dashboard internationalization, production-ready workflows for six chat connectors, stronger orchestration and release reliability, and fail-closed package hygiene.
Release Snapshot
| Item | Details |
|---|---|
| Version | 0.9.9 |
| Release commit | fdc87ed9658d80250bb332cad2b99b0d189cff2e |
| Release PR | #3136 |
| Included dev sync | #3132 |
| Scope | 919 files changed across dashboard internationalization, chat connectors, orchestration/runtime reliability, validation, documentation, and release packaging |
What’s New
English and German Dashboard Internationalization
- Settings → Appearance now includes a Language selector for English and German, applying immediately without joining Settings dirty-state or Save/Reset behavior.
- The selected locale persists in browser-local storage, synchronizes across open tabs, updates the root HTML
langattribute, and falls back safely to English when storage is missing, invalid, or unavailable. - Dashboard-owned copy is translated across the application shell, onboarding, Overview, Projects, Sprints, sprint authoring, Quicksprints, Tasks, Chat, Agents, Live, Nodes, Scheduler, Memory, Knowledge, Browser Preview, File Browser, Custom Dashboards, Stats, and Settings.
- Locale-aware
Intlformatting now covers numbers, dates, times, relative time, lists, percentages, sizes, plurals, cost analytics, and provider-call summaries without changing underlying values. - Provider output, runtime/API/MCP messages, diagnostics, paths, source code, user-authored content, and English documentation bodies remain verbatim and outside the translation boundary.
- Feature-owned typed message catalogs, key/placeholder/plural parity checks, static-copy scanning, exact rationale-bearing exemptions, focused English/German tests, and navigation E2E coverage make incomplete localization fail visibly.
Complete Six-Provider Chat Connector Platform
- A typed provider-profile registry now defines setup fields, secrets, supported modes, authentication, ingress normalization, conversation identity, outbound behavior, verification, sessions, lifecycle metadata, and official references for Discord, WhatsApp, Telegram, Slack, Microsoft Teams, and iMessage.
- Discord adds signed HTTP interactions, Gateway session/reconnect behavior, bot-token replies, idempotency, and rate-limit handling.
- WhatsApp, Telegram, and Slack add official API ingress, acknowledgements, outbound replies, bounded provider verification, and explicit legacy bridge compatibility.
- Microsoft Teams adds Bot Connector Activity validation, fixed Microsoft metadata/JWKS trust, tenant/service URL policy, token caching, and reply delivery.
- iMessage adds a versioned native bridge protocol with a bounded subprocess and secret boundary plus health verification.
- Profiles advertise only implemented transport modes; registry presence remains a software contract rather than provider certification or an implied live credential pass.
Durable Connector State, Delivery, and Management
- Connector secrets and session state are encrypted and persisted atomically, with write-only credential handling and sanitized REST, MCP, dashboard, health, and verification responses.
- Authenticated ingress is idempotent at the durable insert boundary. Unbound channels fail explicitly, while ambiguous shared channels remain pending for disambiguation instead of guessing a project.
- Every outbound attempt uses a compare-and-set lease. Retryable failures use capped jittered backoff, provider
Retry-Afterguidance is persisted, ambiguous-delivery failures stop safely, and terminal cancellation cannot be revived by a late completion. - Startup independently recovers ingress, provider sessions, and expired outbound leases; shutdown cancels and settles connector work before storage closes.
- Settings now supports the complete connection workflow, including provider-specific configuration, verification, binding, session visibility, delivery inspection, approved retry/cancel actions, and redacted diagnostics.
- Deterministic fan-in tests exercise all six profiles through verification, binding, ingress, Chat reply, outbound delivery, restart recovery, and matching REST/MCP inspection. Optional live evidence remains credential-gated and restricted to fixed provider-controlled endpoints.
Release and Runtime Hardening
- The npm package now uses an explicit allowlist for every bundled
.code-uxasset instead of including the whole local runtime directory. - Release verification checks both
package.jsonand the finalnpm packmanifest, rejecting unexpected.code-uxcontent plus local logs, SQLite state, and environment files before installation. - Live dashboard animations use a paced paint loop so software-rendered or no-vsync browsers remain responsive while the pipeline and DAG continue updating.
- Runtime timestamps accept current ISO/Unix formats and the legacy 12-hour time-only format; invalid optional timestamps are omitted instead of interrupting Live.
- CI and documented development requirements are aligned on pnpm
11.13.0and Node22.13+. - Native package and Electron preparation now run the approved ONNX postinstall in CPU-only mode, avoiding the upstream optional CUDA/TensorRT download while proving the bundled CPU runtime loads.
Fixes
Connector Security and Reliability
- Fixed duplicate concurrent callbacks invoking Chat more than once by making the durable ingress insert the idempotency boundary.
- Fixed provider acknowledgement paths so post-ack model failures become durable failed deliveries instead of causing callback retry loops.
- Fixed outbound races across pollers/processes, expired sending leases after restart, provider retry hints, manual cancellation, and ambiguous-send retry safety.
- Fixed connector startup/shutdown ordering, reconnect timer cleanup, resumable session recovery, optional-provider readiness isolation, and repeated lifecycle starts.
- Fixed credential, authorization header, signed URL, payload, and response-body exposure risks by keeping verification and health diagnostics sanitized.
Internationalization and Accessibility
- Closed remaining German coverage gaps in Custom Dashboards, Nodes, chat connector Settings, Stats cost panels, Tasks, and workflow-status presentation.
- Fixed English/German accessible names, focus restoration, live regions, keyboard interaction, responsive behavior, and test expectations without translating protocol identifiers or authored/runtime data.
- Fixed generated documentation parity and the translated Tasks page landmark used by navigation E2E.
- Normalized six extra end-of-file blank lines left by the integrated localization changes so the release diff passes whitespace validation.
Sprint, QA, and Delivery Status Accuracy
- Fixed stale QA, CI, merge, and attention evidence from earlier sprint runs leaking into current sprint cards and workflow badges.
- Fixed duplicate reviewer rows from repeated attempts and ensured completed review cycles verify coding follow-ups from a fresh branch snapshot rather than an obsolete resumed workspace.
- Fixed startup recovery leaving QA rows stuck when their structured invocation lacked provider-runtime linkage.
- Fixed completed 100% sprints suppressing QA/CI/merge evidence while preserving suppression during genuinely active coding.
- Fixed merge-conflict and merge-required presentation overriding inactive or terminal sprint state.
Live and Analytics Responsiveness
- Fixed animated backgrounds running unbounded in environments without dependable vsync, reducing Live rendering contention.
- Fixed invalid optional runtime timestamps disrupting Live rendering and added locale-aware legacy time parsing.
- Fixed remaining hard-coded cost-analytics pricing coverage, provenance, provider-call, token, and data-quality labels.
Release Packaging
- Fixed
.code-ux/debug.logbeing eligible for inclusion through the previous broad package directory entry. The file was found only in a local test pack, was never tracked or pushed, and is excluded by the explicit release allowlist. - Added a release-install regression gate that fails on broad or unexpected
.code-uxentries and on packed runtime logs, databases, or environment files. - Fixed release-install and desktop packaging dependence on the optional ONNX NuGet download; package smoke now imports the installed CPU runtime directly.
Validation
| Check | Result |
|---|---|
| Quality guardrails | Passed; existing advisory inventory only |
| Security audit | Passed; no known vulnerabilities |
| Typecheck and lint | Passed |
| Backend tests and coverage | 460 files; 5,925 passed, 12 skipped; 84.38% lines, 84.08% functions, 73.05% branches, 83.09% statements |
| Dashboard tests | 270 files; 2,514 passed, 1 skipped |
| Production build | Passed |
| Documentation parity | Passed after regenerating the affected public documentation mirror |
| Dashboard i18n static coverage | Passed; 651 production files and 326 exact rationale-bearing exemptions checked |
| Packed npm install | Local @codeuxai/codeux@0.9.9 pack contained 1,469 allowlisted entries; isolated install, bundled ONNX CPU import, and codeux --help passed. GitHub package smoke also passed; no local debug log was present |
| Diff validation | git diff --check main passed |
| Publication preflight | npm version 0.9.9, tag v0.9.9, and GitHub Release v0.9.9 were available before push |
| Playwright E2E | Passed; all 18 Linux, macOS, and Windows purpose shards completed successfully |
| CodeQL analysis | Passed for Actions and JavaScript/TypeScript |
| Cross-platform release candidates | Passed for Linux, macOS, and Windows desktop packages |
Additional local validation:
pnpm run ci
pnpm run check:docs-web
pnpm run check:dashboard-i18n
CODE_UX_SKIP_RELEASE_INSTALL_BUILD=1 node scripts/verify-release-install.mjs
git diff --check mainRisk and Rollback
- Primary risk is concentrated in the breadth of translated dashboard surfaces, provider-specific authentication/session behavior, connector state migration and recovery, and shared sprint/QA status projections.
- Translation is presentation-only and browser-local; backend contracts and persisted domain values are unchanged. Connector secrets remain write-only/encrypted, provider diagnostics are redacted, and optional connector outages do not affect global readiness.
- Rollback before publication: revert this release PR from
mainand keepv0.9.8active. - Rollback after publication: npm versions are immutable; publish a corrective patch release rather than attempting to republish
0.9.9.
Known Follow-Up
- English and German are the only complete dashboard locales in this release. Additional languages require full-catalog, formatter, accessibility, and E2E coverage before they can be enabled.
- Teams and iMessage do not issue live credential checks from the optional evidence lane; their deterministic contract paths remain covered, while provider certification and production credential validation remain operator responsibilities.
Full Merged PR Patch Log
Integration PRs
- #3132 — sync the
0.9.8release lineage and release-time fixes back intodev - #3128 — complete and verify all six chat connectors
- #3131 — deliver the dashboard internationalization foundation
Chat Connector Tasks
- #3062 — extract the typed connector profile registry
- #3069 — complete Discord
- #3065 — complete WhatsApp
- #3066 — complete Telegram
- #3068 — complete Slack
- #3070 — complete Microsoft Teams
- #3067 — complete the iMessage bridge
- #3072 — encrypt and atomically persist connector state
- #3108 — harden connector routing and lifecycle recovery
- #3111 — wire connector verification into REST and MCP
- #3119 — complete the dashboard connector workflow
- #3122 — publish the connector verification matrix
- #3127 — prove all connector paths end to end
Dashboard Internationalization Tasks
- #3078 — build the dashboard i18n runtime
- #3095 — internationalize the application shell
- #3089 — translate onboarding
- #3092 — add language selection and translate Settings chrome
- #3093 — translate operational Settings
- #3112 — translate model and memory Settings
- #3088 — translate agent and guidance Settings
- #3118 — translate integrations and MCP Settings
- #3091 — translate Overview
- #3086 — translate project management
- #3100 — translate Sprints
- #3113 — translate sprint authoring and Quicksprints
- #3096 — translate Tasks
- #3099 — translate dashboard Chat
- #3114 — translate agent management
- #3115 — translate Live
- #3087 — translate Node Flows
- #3090 — translate Scheduler
- #3097 — translate Memory
- #3084 — translate Knowledge
- #3094 — translate Browser Preview
- #3083 — translate File Browser
- #3085 — translate Custom Dashboards
- #3098 — translate Stats and analytics
- #3126 — enforce complete i18n coverage
- #3130 — document dashboard internationalization
- #3134 — close remaining German coverage and regressions
- #3133 — regenerate documentation mirrors
- #3135 — finalize internationalization integration artifacts
Release Branch
0479d04203807fdcd9af054d58ebefa74ef42647— bump Code UX to0.9.9, harden npm package contents, document release verification, synchronize Live documentation, and normalize release whitespace5f7d283df2b08a551c87f9d46e43cd9e6a56aa83— stabilize cross-platform credential, connector, Tasks, route, and Electron validation976eea8a7a559b1699a2addd231ceb7a254f0f9d— make native package and desktop dependency preparation deterministic while retaining CPU runtime validation