Skip to content

fix(control-center): live QQT lifecycle updates and version accuracy (v0.12.1) - #88

Merged
eybersjp merged 25 commits into
mainfrom
fix/control-center-live-v012
Oct 13, 2026
Merged

eybersjp merged 25 commits into
mainfrom
fix/control-center-live-v012

Conversation

@eybersjp

@eybersjp eybersjp commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

DKF v0.12.1 — Control Center Live State Repair

Root cause

The Control Center SPA only re-rendered on initial load/navigation, retained a hardcoded v0.7.0 badge, and /v1/status reported a hardcoded 0.6.1 frameworkVersion. The v0.12 scale/context projection had no UI. In a nested workspace such as QQT/EC-QQT, the dashboard could show state from the wrong current working directory without identifying it.

Changes

  • Poll visible Control Center views every 5 seconds, refresh on tab visibility and user command; preserve scroll and serialize concurrent refreshes.
  • Clearly show unavailable or failed refresh status instead of pretending that stale data is live; cache policy is no-store.
  • Show monitored projectRoot, workflow revision/stage/status/last-changed timestamp/active task/contract, and v0.12 Scale & Context projection.
  • Distinguish recorded stages from independently verified acceptance. Do not present unverified state as approved.
  • Resolve the running executable version from its package or colocated plugin manifest, ahead of an older target-project manifest.
  • Responsive/mobile and keyboard focus improvements; read-only state API, no new write authority.
  • Update legacy version assertions, live UI VM polling/failure tests, consecutive snapshot revision tests, and npm-package installed-plugin consumer test.
  • Align current docs, changelog, package, plugin manifest, and Autopilot version to 0.12.1.

Preservation / security

  • No database migration, approval mutation, state reset, or new T04 State Engine V2 code.
  • Existing snapshot files, authorizations and control-plane policies preserved.
  • Explicit v0.13 deferral for canonical event ledger, migration and Windows crash-durable restore.

Verification required before merge/release

  • Entire npm run release:validate and package consumer smoke on the final exact SHA, both ubuntu-latest and windows-latest.
  • Confirm regression test exercises actual browser script and version fallback under stale nested project plugin.
  • Keep CI failures and runtime gates visible; do not treat a green step from a superseded commit as final verification.
  • Use established maintainer release-command workflow for v0.12.1 after merge, with GitHub release and npm independently verified.

QQT activation boundary

The Windows Control Center running in the user's local EC-QQT workspace cannot be replaced by a remote repository commit. After verified release, stop old Control Center processes, install development-kit@0.12.1 --project from inside EC-QQT, and restart there. Preserve existing .development-kit state and back up the old plugin before any local installation.

@eybersjp eybersjp changed the title fix: Control Center live refresh and v0.12 state projection fix(control-center): live QQT lifecycle updates and version accuracy (v0.12.1) Oct 13, 2026
@eybersjp
eybersjp marked this pull request as ready for review October 13, 2026 14:54
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-13T14:58:19.725914Z 13bda4b Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@eybersjp
eybersjp merged commit 65240a5 into main Oct 13, 2026
3 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 13bda4b622

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

<p><strong>Auto-Open Setting:</strong> \${cachedStatus.settings.controlCenter.autoOpen ? 'On' : 'Off'}</p>
</div>
\`;
const scale = await apiFetch('/v1/scale-context');

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Read health before invoking the recovering status endpoint

When current.json points to a missing or corrupt newest snapshot but an older valid revision exists, refreshStatus() first calls /v1/status, whose getCurrentState() path invokes recoverLatestValidState() and rewrites the pointer. Fetching /v1/scale-context only afterward therefore makes this newly added read-only view silently roll state back and report unverified instead of the intended recovery-required or degraded condition; use a non-mutating status read or obtain the health projection before any recovering getter.

AGENTS.md reference: AGENTS.md:L19-L19

Useful? React with 👍 / 👎.

refreshing = true;
try {
await renderView();
document.getElementById('refresh-indicator').textContent = 'Checked ' + new Date().toLocaleTimeString();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Stop announcing every successful polling cycle

While the tab is visible, the five-second timer changes this role="status"/aria-live="polite" element to a new timestamp after every successful refresh, causing screen readers to announce an endless stream of routine heartbeat messages. Reserve the live region for failures or user-triggered refreshes, or keep successful automatic-poll timestamps outside the live region.

AGENTS.md reference: AGENTS.md:L19-L19

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant