@hanzlaa/rcode 4.10.1 → 4.10.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzlaa/rcode",
3
- "version": "4.10.1",
3
+ "version": "4.10.2",
4
4
  "description": "rcode — the AI team that never forgets. Persistent memory, specialist agents, and slash commands for AI IDEs. Works in Claude Code, Cursor, Gemini, VS Code, and Antigravity.",
5
5
  "main": "cli/index.js",
6
6
  "bin": {
@@ -382,6 +382,35 @@ TASK_COMMIT=$(git rev-parse --short HEAD)
382
382
  TASK_COMMITS+=("Task ${TASK_NUM}: ${TASK_COMMIT}")
383
383
  ```
384
384
 
385
+ **5.5. Sync dashboard state (closes the manual/`--wave N` state-sync gap):**
386
+
387
+ The dashboard reads task status from `.rcode/state.json`'s `phases[].sprints[].stories[]`, not from SUMMARY.md or git. `state story move` only works on a story that's already registered — and the planner does not register stories into state.json when it writes SPRINT.md (see `#590` fallback in `scanner.js`). Without this step, a task that is fully committed and tested still shows "todo" on the dashboard until the ENTIRE phase's status flips to complete, which is silently wrong for any partial/single-wave run (`--wave N`, a manually re-run single plan, a checkpoint-interrupted resume).
388
+
389
+ Run this after every task's commit, not just at the end of the plan:
390
+
391
+ ```bash
392
+ # Ensure the parent sprint is marked active (idempotent — no-op if already started)
393
+ node ".rcode/bin/rcode-tools.cjs" state sprint start --sprint "${SPRINT_ID}" >/dev/null 2>&1
394
+
395
+ # Try to move the story directly by its SPRINT.md task id first
396
+ MOVE_RESULT=$(node ".rcode/bin/rcode-tools.cjs" state story move --id "${TASK_ID}" --status done 2>&1)
397
+ if echo "$MOVE_RESULT" | grep -qi "not found"; then
398
+ # Story was never registered (planner doesn't pre-register) — register it now.
399
+ # state story add assigns ids in {sprint}.{N} sequence matching the order
400
+ # tasks are added, which matches SPRINT.md's own <task id> numbering as
401
+ # long as tasks are committed in the order they appear in the file.
402
+ node ".rcode/bin/rcode-tools.cjs" state story add --sprint "${SPRINT_ID}" --title "${TASK_TITLE}" >/dev/null 2>&1
403
+ node ".rcode/bin/rcode-tools.cjs" state story move --id "${TASK_ID}" --status done >/dev/null 2>&1
404
+ fi
405
+ ```
406
+
407
+ Non-fatal: if either `rcode-tools.cjs` call fails for a reason other than "not found" (e.g. state.json corrupted), log a one-line warning and continue — dashboard staleness is not a reason to fail a task that verified and committed successfully.
408
+
409
+ When the whole plan finishes (all tasks done), mark the sprint complete too:
410
+ ```bash
411
+ node ".rcode/bin/rcode-tools.cjs" state sprint complete --sprint "${SPRINT_ID}" >/dev/null 2>&1
412
+ ```
413
+
385
414
  **6. Check for untracked generated files:**
386
415
  ```bash
387
416
  git status --short | grep '^??'
@@ -28,7 +28,7 @@ export function DecisionsView() {
28
28
  if (!decisions.length) {
29
29
  return html`
30
30
  <div id="view-decisions" class="view active">
31
- <div class="view-title">Decisions (ADRs)</div>
31
+ <div class="view-title">Decisions (Architecture Decision Records — ADRs)</div>
32
32
  <div class="empty">
33
33
  No decisions recorded yet.
34
34
  <div class="empty-action">Decisions made during /rcode-council appear here</div>
@@ -47,7 +47,7 @@ export function DecisionsView() {
47
47
 
48
48
  return html`
49
49
  <div id="view-decisions" class="view active">
50
- <div class="view-title">Decisions (ADRs)</div>
50
+ <div class="view-title">Decisions (Architecture Decision Records — ADRs)</div>
51
51
  <div class="filter-bar">
52
52
  <input
53
53
  class="filter-input"