claude-code-session-manager 0.35.10 → 0.35.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.html CHANGED
@@ -7,7 +7,7 @@
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
9
  <link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;0,6..72,700;1,6..72,400&family=Geist:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap" rel="stylesheet">
10
- <script type="module" crossorigin src="./assets/index-B1hI9l9p.js"></script>
10
+ <script type="module" crossorigin src="./assets/index-CEht6zJc.js"></script>
11
11
  <link rel="modulepreload" crossorigin href="./assets/monaco-editor-BW5C4Iv1.js">
12
12
  <link rel="stylesheet" crossorigin href="./assets/monaco-editor-BTnBOi8r.css">
13
13
  <link rel="stylesheet" crossorigin href="./assets/index-C7NyYuXu.css">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-session-manager",
3
- "version": "0.35.10",
3
+ "version": "0.35.11",
4
4
  "description": "Local cockpit for the Claude Code CLI — multi-tab terminal, full config surface, scheduler, voice dictation, and live observability.",
5
5
  "type": "module",
6
6
  "main": "src/main/index.cjs",
@@ -2098,6 +2098,7 @@ async function reverifyNeedsReview() {
2098
2098
  }
2099
2099
  if (healed.length) {
2100
2100
  const healSet = new Set(healed);
2101
+ const promoted = [];
2101
2102
  await mutate((s) => {
2102
2103
  for (const j of s.jobs) {
2103
2104
  if (j.status === 'needs_review' && healSet.has(j.slug)) {
@@ -2106,8 +2107,32 @@ async function reverifyNeedsReview() {
2106
2107
  delete j.verifierVerdict;
2107
2108
  }
2108
2109
  }
2110
+ // Mirror the live-completion auto-promote (spawnJob, ~line 1583): a
2111
+ // healed fix-plan job means its original's work is logically done too.
2112
+ // Without this, a job healed here (boot/periodic reverify) never
2113
+ // releases its original from needs_review — only a fix-plan job that
2114
+ // completes during a live run gets promoted, leaving the boot-heal
2115
+ // path unable to fully resolve the fix-plan lineages it just healed
2116
+ // (2026-07-12: 521-fix-*/523-fix-* healed but their originals stayed
2117
+ // stuck needs_review).
2118
+ for (const slug of healed) {
2119
+ if (!isFixPlanSlug(slug)) continue;
2120
+ const orig = healTargetForFix(slug, s.jobs);
2121
+ if (orig) {
2122
+ const priorStatus = orig.status;
2123
+ orig.status = 'completed';
2124
+ orig.exitCode = 0;
2125
+ orig.error = null;
2126
+ orig.completedBy = slug;
2127
+ if (priorStatus === 'needs_review') delete orig.verifierVerdict;
2128
+ promoted.push(`${orig.slug} (was ${priorStatus})`);
2129
+ }
2130
+ }
2109
2131
  });
2110
2132
  console.log(`[scheduler] boot reverify: healed ${healed.length} stale needs_review → completed (${healed.join(', ')})`);
2133
+ if (promoted.length) {
2134
+ console.log(`[scheduler] boot reverify: auto-promoted ${promoted.length} original(s) via healed fix-plan job(s): ${promoted.join(', ')}`);
2135
+ }
2111
2136
  await broadcast();
2112
2137
  }
2113
2138
  if (leftForReview.length) {