devrites 7.0.1 → 7.0.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/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  All notable changes to DevRites are documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and DevRites adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Releases are generated automatically by [semantic-release](https://semantic-release.gitbook.io/) from Conventional Commits on `main`.
4
4
 
5
+ ## [7.0.2](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.1...v7.0.2) (2026-10-20)
6
+
7
+ ### Fixed
8
+
9
+ * **devrites:** resume a workspace whose cursor holds the question ([#152](https://github.com/ViktorsBaikers/DevRites/issues/152)) ([de489b6](https://github.com/ViktorsBaikers/DevRites/commit/de489b6c9bd6a4d50b55060e4f46e1a7161607d0))
10
+
5
11
  ## [7.0.1](https://github.com/ViktorsBaikers/DevRites/compare/v7.0.0...v7.0.1) (2026-10-20)
6
12
 
7
13
  ### Added
package/README.md CHANGED
@@ -31,7 +31,7 @@ history can't lose it. After you clear the conversation, switch hosts, or hand
31
31
  the feature to another engineer, the next session reads the same plan,
32
32
  decisions, and evidence before it continues.
33
33
 
34
- **Status:** [`v7.0.1`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.0.1): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
34
+ **Status:** [`v7.0.2`](https://github.com/ViktorsBaikers/DevRites/releases/tag/v7.0.2): see [`CHANGELOG.md`](CHANGELOG.md) for release notes.
35
35
 
36
36
  This is the latest published release; `main` may contain unreleased work.
37
37
 
@@ -351,7 +351,7 @@ var (
351
351
  )
352
352
 
353
353
  // clearAwaiting resumes the workflow after a question is resolved: when state.md's
354
- // "Awaiting human" block references qid, it drops that block, flips Status back to
354
+ // "Awaiting human" block or cursor question_id references qid, it drops that block, flips Status back to
355
355
  // running, clears the Next step, and appends a Log entry. It is a no-op when the
356
356
  // workspace is not waiting on this question.
357
357
  func clearAwaiting(sfile, qid string) error {
@@ -386,8 +386,14 @@ func clearAwaiting(sfile, qid string) error {
386
386
  }
387
387
  }
388
388
  waitingOn, _ := state.CursorField(awaitingLines, state.CursorQuestionID)
389
+ cursorWaits := false
389
390
  if waitingOn != qid {
390
- return nil
391
+ // `state set question_id=<qid>` records the wait in the cursor table
392
+ // instead of an Awaiting human block.
393
+ if cursorQID, _ := state.CursorField(lines, state.CursorQuestionID); cursorQID != qid {
394
+ return nil
395
+ }
396
+ cursorWaits = true
391
397
  }
392
398
 
393
399
  // Rewrite: drop the awaiting block, reset Status/Next step, log the resolution.
@@ -424,6 +430,9 @@ func clearAwaiting(sfile, qid string) error {
424
430
  if inLog && !logAppended {
425
431
  out = append(out, fmt.Sprintf("- %s %s: resolved %s", ts, resumePolicy.Target, qid))
426
432
  }
433
+ if cursorWaits {
434
+ out = state.DeleteCursorField(out, state.CursorQuestionID)
435
+ }
427
436
  out, _ = state.SetCursorField(out, state.CursorStatus, "running")
428
437
  out, _ = state.SetCursorField(out, state.CursorNextAction, "(resume: `"+resumeCommand.Both()+"` to continue the workflow)")
429
438
  if err := fsutil.WriteFileAtomic(sfile, joinRecords(out), 0o644); err != nil {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devrites",
3
- "version": "7.0.1",
3
+ "version": "7.0.2",
4
4
  "description": "DevRites: a disciplined senior-engineer workflow pack for Claude Code, Codex, omp, pi, and Devin CLI",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "homepage": "https://github.com/ViktorsBaikers/DevRites#readme",