orbit-thread 1.2.0 → 1.2.1

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
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.1 — 12 October 2026
4
+
5
+ - Fix Orbit Resume reporting "No verified milestones recorded" for valid handoffs that use `## Completed this session`. Resume now reads both headings.
6
+ - Fix Orbit Resume reading only the first line of each handoff section; every section now runs to the next `##` heading or the end of the file (LF and CRLF), still capped at six entries.
7
+ - `## Completed milestones` remains the canonical heading; when both exist the canonical section wins and entries are not duplicated.
8
+ - No change to the handoff format, read-only behaviour, redaction, stale-handoff detection, 50-line limit or Git safety. Existing v1.2.0 installations and handoffs keep working; `orbit-thread update` refreshes the version.
9
+
3
10
  ## 1.2.0 — 12 October 2026
4
11
 
5
12
  - Add **Orbit Resume**, a third canonical skill that recovers project context at the start of a fresh Codex or Claude Code session from the latest usable handoff, current Git state and only the living docs the task needs.
@@ -1,10 +1,10 @@
1
1
  # npm publication and releases
2
2
 
3
- Orbit Thread v1.2.0 adds Orbit Resume to the Orbit Thread line, which succeeded Orbit Handoff v1.0.x in v1.1.0.
3
+ Orbit Thread v1.2.1 is a compatibility patch for Orbit Resume (v1.2.0 added Resume to the Orbit Thread line, which succeeded Orbit Handoff v1.0.x in v1.1.0).
4
4
 
5
- `orbit-thread@1.1.0` is already published. v1.2.0 is a new version.
5
+ `orbit-thread@1.2.0` is already published. v1.2.1 is a new version.
6
6
 
7
- Historical `orbit-handoff@1.0.0`, `orbit-handoff@1.0.1` and `orbit-thread@1.1.0` releases are immutable. Do not republish, unpublish or move their release tags.
7
+ Historical `orbit-handoff@1.0.0`, `orbit-handoff@1.0.1`, `orbit-thread@1.1.0` and `orbit-thread@1.2.0` releases are immutable. Do not republish, unpublish or move their release tags.
8
8
 
9
9
  The new primary package is:
10
10
 
@@ -35,11 +35,11 @@ claude plugin validate . --strict
35
35
  Inspect:
36
36
 
37
37
  ```text
38
- orbit-thread-1.2.0.tgz
39
- dist/orbit-thread-plugin-1.2.0.zip
38
+ orbit-thread-1.2.1.tgz
39
+ dist/orbit-thread-plugin-1.2.1.zip
40
40
  ```
41
41
 
42
- The npm tarball should contain 28 files (version 1.2.0, including `lib/resume.mjs` and `plugin/skills/orbit-resume/`). The plugin ZIP should contain the portable `plugin.json`, the three canonical skills and the listing icon. Neither should contain tests, `dist/`, credentials or other build residue.
42
+ The npm tarball should contain 28 files (version 1.2.1, including `lib/resume.mjs` and `plugin/skills/orbit-resume/`). The plugin ZIP should contain the portable `plugin.json`, the three canonical skills and the listing icon. Neither should contain tests, `dist/`, credentials or other build residue.
43
43
 
44
44
  Confirm all three canonical skills are present:
45
45
 
@@ -56,7 +56,7 @@ and that the packed CLI can install, setup, configure, doctor, update and uninst
56
56
  After release checks pass:
57
57
 
58
58
  ```sh
59
- npm publish ./orbit-thread-1.2.0.tgz --access public --registry https://registry.npmjs.org/
59
+ npm publish ./orbit-thread-1.2.1.tgz --access public --registry https://registry.npmjs.org/
60
60
  ```
61
61
 
62
62
  Complete npm's normal browser/2FA challenge if prompted. Never weaken npm account security to automate publication.
@@ -78,7 +78,7 @@ npx orbit-thread@latest doctor --agent both --scope project
78
78
  npx orbit-thread@latest uninstall --agent both --scope project --yes
79
79
  ```
80
80
 
81
- Also confirm `npx orbit-thread@latest resume` runs read-only in the disposable repository. Verify `latest` resolves to `1.2.0` and package metadata points to `shab1h-gh/orbit-thread`.
81
+ Also confirm `npx orbit-thread@latest resume` runs read-only in the disposable repository. Verify `latest` resolves to `1.2.1` and package metadata points to `shab1h-gh/orbit-thread`.
82
82
 
83
83
  ## Existing Orbit Handoff users
84
84
 
@@ -6,10 +6,10 @@ Provider-directory review is separate from npm, GitHub and standalone installati
6
6
 
7
7
  ## OpenAI / ChatGPT Plugins Directory
8
8
 
9
- Orbit Thread v1.2.0 is submitted as:
9
+ Orbit Thread v1.2.1 is submitted as:
10
10
 
11
11
  ```text
12
- dist/orbit-thread-plugin-1.2.0.zip
12
+ dist/orbit-thread-plugin-1.2.1.zip
13
13
  ```
14
14
 
15
15
  Build it with:
@@ -22,10 +22,10 @@ The ZIP contains portable `plugin.json`, all three canonical skills, OpenAI inte
22
22
 
23
23
  ### Submission flow
24
24
 
25
- 1. Complete release validation and build the final v1.2.0 ZIP from the release commit/tag.
25
+ 1. Complete release validation and build the final v1.2.1 ZIP from the release commit/tag.
26
26
  2. Open the OpenAI Plugins publisher dashboard:
27
27
  `https://platform.openai.com/plugins`
28
- 3. Upload `orbit-thread-plugin-1.2.0.zip`.
28
+ 3. Upload `orbit-thread-plugin-1.2.1.zip`.
29
29
  4. Complete automated checks and resolve genuine findings.
30
30
  5. Review listing metadata and required policy/data-handling declarations.
31
31
  6. Choose **Submit for review**.
@@ -63,7 +63,7 @@ claude plugin validate ./plugin --strict
63
63
  claude plugin validate . --strict
64
64
  ```
65
65
 
66
- Then use the directory management/submission surface in Claude, connect the GitHub account that owns `shab1h-gh/orbit-thread`, select the repository/plugin, complete the listing details and submit it for review. Use the immutable v1.2.0 release/tag once created.
66
+ Then use the directory management/submission surface in Claude, connect the GitHub account that owns `shab1h-gh/orbit-thread`, select the repository/plugin, complete the listing details and submit it for review. Use the immutable v1.2.1 release/tag once created.
67
67
 
68
68
  A successful GitHub marketplace installation does not mean the plugin is approved for Anthropic's public directory.
69
69
 
@@ -237,3 +237,15 @@ regression test confirms they do not reach terminal output.
237
237
  - Merge PR #3, then tag v1.2.0 from the merged release commit.
238
238
  - Publish `orbit-thread@1.2.0` and repeat the public-registry smoke test described in
239
239
  [PUBLISHING.md](PUBLISHING.md).
240
+
241
+ ## Orbit Resume v1.2.1 validation
242
+
243
+ Compatibility patch (`fix/resume-completed-heading`): Resume now accepts `## Completed this session` as an alias of the canonical `## Completed milestones`. The canonical section takes precedence when both exist; the handoff format is unchanged. The v1.2.0 section above is a historical record and is unchanged.
244
+
245
+ ### Verified locally
246
+
247
+ Results are recorded in the release PR and final report; the checks run were `npm test` (including regression tests for both headings, precedence, missing sections and redaction under the legacy heading), `npm run validate`, `npm run scan:public`, `npm run build:plugin`, `npm pack`, `npm run smoke:pack`, `claude plugin validate ./plugin --strict`, `claude plugin validate . --strict` and `git diff --check`.
248
+
249
+ ### Compatibility with v1.2.0 installations
250
+
251
+ A project installed with the published `orbit-thread@1.2.0` is updated in place by the 1.2.1 CLI; installed skills, `.orbit-thread/config.json`, living docs and existing handoffs are preserved.
package/lib/resume.mjs CHANGED
@@ -38,7 +38,7 @@ function readHandoff(root) {
38
38
  state: 'valid', text, updated: `${updated[3]}-${updated[2]}-${updated[1]}`,
39
39
  fields: {
40
40
  objective,
41
- completed: section(text, 'Completed milestones'),
41
+ completed: firstSection(text, ['Completed milestones', 'Completed this session']),
42
42
  unfinished: section(text, 'In progress'),
43
43
  risks: section(text, 'Open issues / risks'),
44
44
  verification: section(text, 'Verification'),
@@ -53,11 +53,20 @@ function readHandoff(root) {
53
53
 
54
54
  function section(text, title) {
55
55
  const escaped = title.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
56
- const match = text.match(new RegExp(`^##\\s+${escaped}\\s*\\r?\\n([\\s\\S]*?)(?=^##\\s+|\\s*$)`, 'm'));
56
+ const match = text.match(new RegExp(`^##\\s+${escaped}\\s*\\r?\\n([\\s\\S]*?)(?=^##\\s+|(?![\\s\\S]))`, 'm'));
57
57
  if (!match) return [];
58
58
  return match[1].split(/\r?\n/).map(line => line.trim()).filter(line => line && !/^<!--/.test(line)).slice(0, 6).map(line => scrub(line));
59
59
  }
60
60
 
61
+ // Canonical heading first; legacy alias only used when the canonical section is absent or empty.
62
+ function firstSection(text, titles) {
63
+ for (const title of titles) {
64
+ const lines = section(text, title);
65
+ if (lines.length) return lines;
66
+ }
67
+ return [];
68
+ }
69
+
61
70
  function git(root, args) {
62
71
  try {
63
72
  return execFileSync('git', args, { cwd: root, encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 3000 }).trim();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orbit-thread",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Token-efficient project setup, checkpoints and coding-session continuity for Codex and Claude Code.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "orbit-thread",
3
3
  "displayName": "Orbit Thread",
4
- "version": "1.2.0",
4
+ "version": "1.2.1",
5
5
  "description": "Token-efficient project setup, checkpoints and coding-session continuity.",
6
6
  "author": { "name": "Shabih Anwar", "url": "https://github.com/shab1h-gh" },
7
7
  "homepage": "https://github.com/shab1h-gh/orbit-thread",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "orbit-thread",
4
- "version": "1.2.0",
4
+ "version": "1.2.1",
5
5
  "description": "Token-efficient project setup, checkpoints and coding-session continuity.",
6
6
  "author": { "name": "Shabih Anwar", "url": "https://github.com/shab1h-gh" },
7
7
  "homepage": "https://github.com/shab1h-gh/orbit-thread",