@kujolang/paperclip 0.1.5 → 0.1.7

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.
@@ -6,7 +6,7 @@
6
6
  | --- | --- | --- |
7
7
  | Paperclip | `2026.824.1` and later in the current compatibility train | SDK minimum and latest |
8
8
  | Node.js | `24.11.0` through the latest Node 24 release | minimum and latest Node 24 |
9
- | Kujo runtime | bundled `1.2.2` | five native targets |
9
+ | Kujo runtime | bundled `1.2.3` | five native targets |
10
10
 
11
11
  The plugin supports macOS arm64/x64, Linux arm64/x64, and Windows x64. CI runs the full plugin suite on each target at the minimum Node version. A separate compatibility job tests the minimum and latest Paperclip SDK against the minimum and latest Node 24 release.
12
12
 
@@ -12,6 +12,12 @@
12
12
  npx paperclipai plugin install @kujolang/paperclip
13
13
  ```
14
14
 
15
+ Use the package name without an exact version suffix until Paperclip ships
16
+ [paperclipai/paperclip#12745](https://github.com/paperclipai/paperclip/pull/12745).
17
+ Current hosts misparse exact scoped references such as
18
+ `@kujolang/paperclip@0.1.7`; the unversioned command above installs the current npm
19
+ release correctly.
20
+
15
21
  Restart Paperclip if it is running. Open an issue and confirm that the Kujo workspace appears in the current task view. On project and run pages, open the **Kujo** tab. No Classic Task Interface setting is required.
16
22
 
17
23
  The package installs `@kujolang/kujo-runtime` and one matching optional native package. Supported targets are macOS arm64/x64, Linux arm64/x64, and Windows x64. No Kujo package uses `preinstall`, `install`, or `postinstall`.
@@ -0,0 +1,263 @@
1
+ # Paperclip maintenance handoff
2
+
3
+ Updated September 3, 2026.
4
+
5
+ ## Current state
6
+
7
+ `@kujolang/paperclip` is ready for public use within its documented scope. Version
8
+ `0.1.7` is published on npm and GitHub. The released plugin:
9
+
10
+ - works in Paperclip's current task view without requiring the Classic Task Interface;
11
+ - provides Review, Context, and Failure Evidence workflows in the inline workspace and
12
+ the shared Kujo detail tab;
13
+ - uses the official Kujo logomark;
14
+ - protects both UI surfaces with browser behavior, accessibility, responsive, and
15
+ visual-regression checks;
16
+ - bundles checksummed Kujo components for every supported platform; and
17
+ - publishes through GitHub Actions with npm trusted publishing and provenance.
18
+
19
+ No known plugin defect blocks normal public use. The remaining work is upstream or
20
+ distribution work: the host-version change is waiting on Paperclip maintainers, and
21
+ catalog distribution is not available yet.
22
+
23
+ ## Next-agent brief
24
+
25
+ There is no plugin-owned release work waiting. Start with
26
+ [paperclipai/paperclip#12745](https://github.com/paperclipai/paperclip/pull/12745):
27
+ it is open, ready for review, mergeable, and green as of September 3, 2026. Respond to
28
+ maintainer feedback, but do not raise this plugin's manifest minimum while that change
29
+ is absent from a public Paperclip release.
30
+
31
+ After Paperclip publishes the fix:
32
+
33
+ 1. verify that `npx paperclipai plugin install @kujolang/paperclip@0.1.7` succeeds;
34
+ 2. replace the temporary `MINIMUM_HOST_VERSION = "0.0.0"` value in
35
+ `src/config/defaults.ts` with the real supported floor;
36
+ 3. update the compatibility tests and documentation;
37
+ 4. run `npm ci --ignore-scripts`, `npm run verify`, `npm run test:ui`, and the
38
+ minimum/latest clean-install matrix; and
39
+ 5. release a patch through the signed-tag workflow if the package changes.
40
+
41
+ Separately, check Paperclip's documentation for an official catalog or marketplace
42
+ submission path. None exists today, so catalog submission is parked rather than
43
+ failed. Do not create or use an unofficial listing process.
44
+
45
+ ## At a glance
46
+
47
+ | Work | State | Next action |
48
+ | --- | --- | --- |
49
+ | Exact scoped-version install | Upstream PR ready and green | Get Paperclip PR #12745 reviewed and merged |
50
+ | Real minimum host version | Externally blocked | Wait for a Paperclip release containing PR #12745 |
51
+ | Browser/UI regression coverage | Complete | Maintain the approved baselines with UI changes |
52
+ | Dependency updates | Complete | Continue normal Dependabot review |
53
+ | Paperclip catalog listing | Not currently available | Recheck when Paperclip publishes a marketplace process |
54
+ | Kujo plugin release | Complete | Verify and retain the v0.1.7 release evidence |
55
+
56
+ ## Work queue
57
+
58
+ ### 1. Fix pinned scoped-package installs in Paperclip
59
+
60
+ **Priority:** High
61
+ **Owner:** Paperclip host CLI, not this plugin
62
+
63
+ **State:** Implemented in a green upstream PR awaiting maintainer review
64
+
65
+ The Paperclip CLI currently misparses an exact scoped npm package reference:
66
+
67
+ ```bash
68
+ npx paperclipai plugin install @kujolang/paperclip@0.1.7
69
+ ```
70
+
71
+ It looks for a directory named `@kujolang/paperclip@0.1.7` after npm installs the
72
+ package. Installing the current version without a version suffix works:
73
+
74
+ ```bash
75
+ npx paperclipai plugin install @kujolang/paperclip
76
+ ```
77
+
78
+ The fix is implemented and pushed from the isolated worktree
79
+ `/Users/robertdevore/2026/paperclip-kujo-fixes` on branch
80
+ `codex/kujo-plugin-host-fixes`. The upstream pull request is
81
+ [paperclipai/paperclip#12745](https://github.com/paperclipai/paperclip/pull/12745).
82
+ It adds a shared npm-package-spec parser, CLI and server regression tests, and real
83
+ host-version detection. Local targeted verification passed 59 tests across four test
84
+ files, plus shared, CLI, and direct server TypeScript checks. The complete upstream CI
85
+ matrix, Greptile, Snyk, Socket, policy, and automated review checks passed. The PR is
86
+ ready for maintainer review.
87
+
88
+ Next steps:
89
+
90
+ 1. Address any maintainer review request.
91
+ 2. Merge through the upstream project's normal process.
92
+ 3. Verify a clean exact-version install from the first Paperclip release containing
93
+ the change.
94
+
95
+ Acceptance criteria:
96
+
97
+ - `@scope/name@version` installs the requested exact version;
98
+ - unscoped, scoped-without-version, file, and directory installs still work;
99
+ - regression tests cover scoped exact versions; and
100
+ - Kujo's upgrade and rollback documentation is retested and updated.
101
+
102
+ Tracking evidence: SignalBox capture
103
+ `cap_2bb9af3e-0a67-4b90-b242-d8edf54d3448` and signal
104
+ `sig_9bac6b5c-871d-42e0-91a2-7bd99f78f3c0`.
105
+
106
+ ### 2. Restore the real minimum-host manifest constraint
107
+
108
+ **Priority:** High
109
+ **Owner:** Paperclip host integration, followed by this plugin
110
+
111
+ **State:** Blocked until the upstream fix is released
112
+
113
+ Paperclip `2026.831.1` reported host version `0.0.0` to the plugin loader. The plugin
114
+ therefore keeps `MINIMUM_HOST_VERSION = "0.0.0"` in `src/config/defaults.ts` as a
115
+ temporary loader workaround. Documentation and CI enforce the actual supported floor,
116
+ Paperclip `2026.824.1`.
117
+
118
+ PR #12745 includes the host-version reporting fix, but the published Kujo plugin must
119
+ keep the temporary `0.0.0` manifest value until that change reaches a public Paperclip
120
+ release. Raising the floor earlier would reject users on the current host even though
121
+ their Paperclip version is otherwise supported.
122
+
123
+ After the upstream release:
124
+
125
+ 1. set the manifest minimum to the real supported host floor;
126
+ 2. update `tests/plugin.spec.ts` and `docs/COMPATIBILITY.md`;
127
+ 3. run the full verification matrix;
128
+ 4. install the packed plugin on the declared minimum and latest Paperclip versions; and
129
+ 5. issue a patch release if the published manifest changes.
130
+
131
+ Acceptance criteria: a compatible host loads the plugin, an older host rejects it with
132
+ a clear message, and no `0.0.0` compatibility exception remains.
133
+
134
+ ### 3. Add automated browser coverage for both UI surfaces
135
+
136
+ **Priority:** Medium
137
+ **Owner:** Plugin repository
138
+
139
+ **State:** Complete in plugin PR #11
140
+
141
+ The UI has contract tests, manual browser evidence, and automated browser and visual
142
+ regression coverage for:
143
+
144
+ - the inline current-task workspace registered through `taskDetailView`;
145
+ - the shared `detailTab` on project, issue, and run pages;
146
+ - Review, Context, and Failure Evidence actions and result states;
147
+ - the official Kujo mark and accessible labels; and
148
+ - light and dark themes at desktop and narrow widths.
149
+
150
+ The implementation uses Playwright with a deterministic SDK fixture. It covers the
151
+ current-task surface, the project and issue detail tabs, the read-only run detail tab,
152
+ all three primary actions, the official mark, accessible labels, and approved
153
+ desktop-light and narrow-dark screenshots. The `browser-ui` CI job installs its own
154
+ Chromium build and uploads the Playwright report on failure.
155
+
156
+ The hosted Linux browser job passed before merge. Pull requests and releases fail if
157
+ either surface disappears, loses its primary actions, or exceeds the approved visual
158
+ baseline tolerance. Lens also passed its full desktop/mobile accessibility and link
159
+ check with no findings at warning or higher.
160
+
161
+ ### 4. Review the open dependency pull requests
162
+
163
+ **Priority:** Medium
164
+ **Owner:** Plugin maintainers
165
+
166
+ **State:** Complete
167
+
168
+ The four reviewed Dependabot pull requests were [artifact attestation
169
+ #1](https://github.com/kujolang/paperclip/pull/1), [the grouped development update
170
+ #2](https://github.com/kujolang/paperclip/pull/2), [Zod
171
+ #3](https://github.com/kujolang/paperclip/pull/3), and [dependency review
172
+ #4](https://github.com/kujolang/paperclip/pull/4). All four are merged.
173
+
174
+ The grouped TypeScript 7 update initially failed because compiler types were implicit.
175
+ The repaired branch declares Node and React types explicitly. Local verification and
176
+ the complete hosted compatibility matrix passed before merge.
177
+
178
+ ### 5. Submit to the Paperclip catalog
179
+
180
+ **Priority:** Medium
181
+ **Owner:** Release or ecosystem maintainer
182
+
183
+ **State:** Waiting for an upstream submission channel
184
+
185
+ Paperclip's current implementation specification explicitly keeps a public plugin
186
+ marketplace and packaged public distribution out of scope. No official catalog
187
+ submission path is present in the upstream repository as of this update. Do not invent
188
+ an unofficial submission process.
189
+
190
+ Keep [CATALOG_SUBMISSION.md](CATALOG_SUBMISSION.md) ready as the evidence brief. When
191
+ Paperclip publishes a submission channel, attach the tagged release, npm provenance,
192
+ cross-platform checks, permissions summary, and current UI screenshots.
193
+
194
+ This is a distribution task, not a prerequisite for installing the public npm package.
195
+
196
+ ### 6. Cut the next release only after plugin-owned work lands
197
+
198
+ **Priority:** Medium
199
+
200
+ **Owner:** Plugin release maintainer
201
+
202
+ **State:** v0.1.7 released
203
+
204
+ Version 0.1.7 adds the plain-English install and first-use guide, monochrome npm and CI
205
+ badges, corrected Context Pack limits, documentation command validation, and current
206
+ runtime and type dependencies. Its tagged workflow runs the full repository, browser,
207
+ compatibility, supply-chain, packaging, and clean-install gates before publication
208
+ through npm trusted publishing.
209
+
210
+ ## Recommended next-agent sequence
211
+
212
+ 1. Monitor upstream PR #12745 through review and merge; do not change the published
213
+ minimum-host constraint yet.
214
+ 2. After an upstream Paperclip release contains the host fix, restore the real host
215
+ floor and run minimum/latest clean-install tests.
216
+ 3. Publish a follow-up patch only if restoring the manifest floor changes the package.
217
+
218
+ The catalog task stays parked until Paperclip exposes an official public submission
219
+ process.
220
+
221
+ ## Optional business work
222
+
223
+ The repository documents secure operation and incident response, but it does not promise
224
+ an SLA. If the plugin will be sold as an enterprise-supported product, define support
225
+ ownership, response targets, vulnerability intake, data-processing posture, and any
226
+ required compliance evidence. These are commercial-operating commitments, not missing
227
+ plugin functionality.
228
+
229
+ ## Guardrails
230
+
231
+ - Keep the plugin a thin integration over the pinned Kujo components. Do not duplicate
232
+ their implementations in TypeScript.
233
+ - Do not add a generic command runner or accept arbitrary workspace paths.
234
+ - Preserve bounded output, redaction, canonical workspace checks, and the two-stage
235
+ Context Pack read boundary.
236
+ - Do not add a Classic Task Interface requirement.
237
+ - Keep npm publishing tokenless through trusted publishing; do not add repository npm
238
+ tokens.
239
+ - Do not claim suggested checks ran unless the plugin has execution evidence.
240
+
241
+ ## Agent start checklist
242
+
243
+ 1. Read `AGENTS.md`, `README.md`, this handoff, and the document for the selected task.
244
+ 2. Confirm `git status --short --branch` is clean and create a focused branch.
245
+ 3. Run `npm ci --ignore-scripts` and `npm run verify` before changing behavior.
246
+ 4. Inspect current GitHub issues, pull requests, and workflow results.
247
+ 5. Make small signed commits, push them, and use required pull-request checks.
248
+ 6. For a release, follow [RELEASE_READINESS.md](RELEASE_READINESS.md), test a clean
249
+ public install, and verify the npm and GitHub artifacts after publication.
250
+
251
+ ## Completion standard
252
+
253
+ A maintenance item is complete only when its tests, documentation, compatibility
254
+ evidence, and hosted checks agree; the branch is merged; and the working tree is clean.
255
+ A version change is complete only after the signed tag, GitHub release, npm package,
256
+ provenance, and clean public install are all verified.
257
+
258
+ ## Release evidence
259
+
260
+ - GitHub release: <https://github.com/kujolang/paperclip/releases/tag/v0.1.7>
261
+ - release workflows: <https://github.com/kujolang/paperclip/actions/workflows/release.yml>
262
+ - npm package: <https://www.npmjs.com/package/@kujolang/paperclip/v/0.1.7>
263
+ - npm SLSA provenance: <https://registry.npmjs.org/-/npm/v1/attestations/@kujolang%2fpaperclip@0.1.7>
package/docs/README.md CHANGED
@@ -14,5 +14,6 @@ Start with [Installation](INSTALLATION.md), then [Usage](USAGE.md).
14
14
  | [Release readiness](RELEASE_READINESS.md) | Release order, test matrix, and operator checks. |
15
15
  | [Operations](OPERATIONS.md) | Health, audit, retention, upgrades, rollback, recovery, and incident response. |
16
16
  | [Catalog submission](CATALOG_SUBMISSION.md) | Paperclip catalog metadata and review evidence. |
17
+ | [Maintenance handoff](MAINTENANCE_HANDOFF.md) | Current release state, remaining work, priorities, and completion criteria. |
17
18
 
18
19
  Repository policy lives in [SECURITY.md](../SECURITY.md), [CONTRIBUTING.md](../CONTRIBUTING.md), and [AGENTS.md](../AGENTS.md).
@@ -6,6 +6,7 @@
6
6
  | --- | --- |
7
7
  | TypeScript strict typecheck | automated by `npm run verify` |
8
8
  | Unit/contract tests | automated by Vitest |
9
+ | Browser behavior and visual baselines | automated by Playwright in `browser-ui` CI |
9
10
  | Official Paperclip SDK worker harness | automated by Vitest |
10
11
  | Real ChangeBucket/PatchBrief fixture | automated by Vitest |
11
12
  | Real CaseFile redaction fixture | automated by Vitest |
@@ -27,7 +28,7 @@ The release order is platform runtime packages, neutral `@kujolang/kujo-runtime`
27
28
 
28
29
  The runtime release workflows build and smoke macOS arm64/x64, Linux arm64/x64, and Windows x64. Paperclip CI tests those five targets. A separate compatibility matrix tests Node.js 24.11 and current Node.js 24 against the minimum, locked, and latest compatible Paperclip SDK versions. Local plugin feature execution is verified on the developer host; every supported target is exercised during a tagged release.
29
30
 
30
- The tag workflow accepts only an annotated tag with a GitHub-verified SSH or PGP signature whose name matches `package.json`. It verifies the repository, packs once, attests that tarball, publishes that exact file through npm trusted publishing with short-lived OIDC credentials, and attaches its checksum, CycloneDX SBOM, component lock, and JSON schemas to the GitHub release. Package settings require two-factor authentication and disallow traditional token publishing.
31
+ The tag workflow accepts only an annotated tag with a GitHub-verified SSH or PGP signature whose name matches `package.json`. It verifies the repository and browser UI, packs once, attests that tarball, publishes that exact file through npm trusted publishing with short-lived OIDC credentials, and attaches its checksum, CycloneDX SBOM, component lock, and JSON schemas to the GitHub release. Package settings require two-factor authentication and disallow traditional token publishing.
31
32
 
32
33
  ## Performance bounds
33
34
 
@@ -39,8 +40,8 @@ The tag workflow accepts only an annotated tag with a GitHub-verified SSH or PGP
39
40
  - context file: 2 KB during selection and 1 MB hard read refusal
40
41
  - Review file rows retained by canonical output; UI eagerly renders at most 20 context entries and 12 suggested tests
41
42
 
42
- The v0.1 deterministic suite remains in Vitest because these contracts combine the Paperclip SDK harness, native-process bounds, filesystem escape checks, and JSON assertions directly. Kujo Spec/Eval would add a second runner without improving determinism for this release; the versioned schemas and fixture cases are ready to export into Eval when the plugin adds executable verification.
43
+ The v0.1 deterministic contract suite remains in Vitest because these contracts combine the Paperclip SDK harness, native-process bounds, filesystem escape checks, and JSON assertions directly. Playwright separately renders both registered UI surfaces in a deterministic SDK fixture, exercises every primary action, verifies the project, issue, and read-only run states, and compares desktop-light and narrow-dark screenshots. Kujo Spec/Eval would add a second contract runner without improving determinism for this release; the versioned schemas and fixture cases are ready to export into Eval when the plugin adds executable verification.
43
44
 
44
45
  ## Release decision
45
46
 
46
- SHIP only after the protected-branch checks pass, the compatibility workflow passes, the signed-tag workflow succeeds, the seven runtime/plugin npm names are available, a clean-room npm install passes, and a real Paperclip host loads the published package and exercises its tools.
47
+ SHIP only after the protected-branch checks, browser UI suite, and compatibility workflow pass; the signed-tag workflow succeeds; the seven runtime/plugin npm names are available; a clean-room npm install passes; and a real Paperclip host loads the published package and exercises its tools.
package/docs/USAGE.md CHANGED
@@ -63,9 +63,9 @@ Depth controls the token and file budget:
63
63
 
64
64
  | Depth | Token budget | File limit |
65
65
  | --- | ---: | ---: |
66
- | `minimal` | 4,000 | 12 |
67
- | `focused` | 16,000 | 40 |
68
- | `broad` | 40,000 | 100 |
66
+ | `minimal` | 4,000 | 2 |
67
+ | `focused` | 16,000 | 3 |
68
+ | `broad` | 40,000 | 4 |
69
69
 
70
70
  Start without content. Review the selected paths and reasons, then request content only when needed.
71
71
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kujolang/paperclip",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "Make Paperclip agent work easier to scope, review, reproduce, and verify.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/kujolang/paperclip#readme",
@@ -37,6 +37,7 @@
37
37
  "build": "node esbuild.config.mjs",
38
38
  "typecheck": "tsc --noEmit",
39
39
  "test": "vitest run",
40
+ "test:ui": "playwright test",
40
41
  "test:watch": "vitest",
41
42
  "components:sync": "node scripts/sync-components.mjs --local-root ..",
42
43
  "components:verify": "node scripts/verify-components.mjs",
@@ -44,13 +45,13 @@
44
45
  "supply-chain:verify": "node scripts/verify-supply-chain.mjs",
45
46
  "verify": "npm run repository:verify && npm run typecheck && npm test && npm run components:verify && npm run supply-chain:verify && npm run build && npm run pack:verify",
46
47
  "pack:verify": "node scripts/verify-package.mjs",
47
- "release:dry-run": "npm run verify",
48
+ "release:dry-run": "npm run verify && npm run test:ui",
48
49
  "prepublishOnly": "npm run verify"
49
50
  },
50
51
  "dependencies": {
51
- "@kujolang/kujo-runtime": "1.2.2",
52
+ "@kujolang/kujo-runtime": "1.2.3",
52
53
  "@paperclipai/plugin-sdk": "2026.824.1",
53
- "zod": "4.4.3"
54
+ "zod": "4.5.4"
54
55
  },
55
56
  "peerDependencies": {
56
57
  "react": ">=18"
@@ -61,13 +62,16 @@
61
62
  }
62
63
  },
63
64
  "devDependencies": {
64
- "@types/node": "24.0.0",
65
- "@types/react": "19.2.0",
65
+ "@playwright/test": "1.62.1",
66
+ "@types/node": "26.4.1",
67
+ "@types/react": "19.2.18",
68
+ "@types/react-dom": "19.2.7",
66
69
  "esbuild": "0.28.2",
67
- "react": "19.1.1",
68
- "rollup": "4.62.4",
69
- "typescript": "5.9.2",
70
- "vitest": "4.1.10"
70
+ "react": "19.2.8",
71
+ "react-dom": "19.2.8",
72
+ "rollup": "4.63.1",
73
+ "typescript": "7.0.2",
74
+ "vitest": "4.1.11"
71
75
  },
72
76
  "publishConfig": {
73
77
  "access": "public",