@kujolang/paperclip 0.1.4 → 0.1.6

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.
@@ -0,0 +1,237 @@
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.6` 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
+ ## At a glance
24
+
25
+ | Work | State | Next action |
26
+ | --- | --- | --- |
27
+ | Exact scoped-version install | Upstream PR ready and green | Get Paperclip PR #12745 reviewed and merged |
28
+ | Real minimum host version | Externally blocked | Wait for a Paperclip release containing PR #12745 |
29
+ | Browser/UI regression coverage | Complete | Maintain the approved baselines with UI changes |
30
+ | Dependency updates | Complete | Continue normal Dependabot review |
31
+ | Paperclip catalog listing | Not currently available | Recheck when Paperclip publishes a marketplace process |
32
+ | Kujo plugin release | Complete | Verify and retain the v0.1.6 release evidence |
33
+
34
+ ## Work queue
35
+
36
+ ### 1. Fix pinned scoped-package installs in Paperclip
37
+
38
+ **Priority:** High
39
+ **Owner:** Paperclip host CLI, not this plugin
40
+
41
+ **State:** Implemented in a green upstream PR awaiting maintainer review
42
+
43
+ The Paperclip CLI currently misparses an exact scoped npm package reference:
44
+
45
+ ```bash
46
+ npx paperclipai plugin install @kujolang/paperclip@0.1.6
47
+ ```
48
+
49
+ It looks for a directory named `@kujolang/paperclip@0.1.6` after npm installs the
50
+ package. Installing the current version without a version suffix works:
51
+
52
+ ```bash
53
+ npx paperclipai plugin install @kujolang/paperclip
54
+ ```
55
+
56
+ The fix is implemented and pushed from the isolated worktree
57
+ `/Users/robertdevore/2026/paperclip-kujo-fixes` on branch
58
+ `codex/kujo-plugin-host-fixes`. The upstream pull request is
59
+ [paperclipai/paperclip#12745](https://github.com/paperclipai/paperclip/pull/12745).
60
+ It adds a shared npm-package-spec parser, CLI and server regression tests, and real
61
+ host-version detection. Local targeted verification passed 59 tests across four test
62
+ files, plus shared, CLI, and direct server TypeScript checks. The complete upstream CI
63
+ matrix, Greptile, Snyk, Socket, policy, and automated review checks passed. The PR is
64
+ ready for maintainer review.
65
+
66
+ Next steps:
67
+
68
+ 1. Address any maintainer review request.
69
+ 2. Merge through the upstream project's normal process.
70
+ 3. Verify a clean exact-version install from the first Paperclip release containing
71
+ the change.
72
+
73
+ Acceptance criteria:
74
+
75
+ - `@scope/name@version` installs the requested exact version;
76
+ - unscoped, scoped-without-version, file, and directory installs still work;
77
+ - regression tests cover scoped exact versions; and
78
+ - Kujo's upgrade and rollback documentation is retested and updated.
79
+
80
+ Tracking evidence: SignalBox capture
81
+ `cap_2bb9af3e-0a67-4b90-b242-d8edf54d3448` and signal
82
+ `sig_9bac6b5c-871d-42e0-91a2-7bd99f78f3c0`.
83
+
84
+ ### 2. Restore the real minimum-host manifest constraint
85
+
86
+ **Priority:** High
87
+ **Owner:** Paperclip host integration, followed by this plugin
88
+
89
+ **State:** Blocked until the upstream fix is released
90
+
91
+ Paperclip `2026.831.1` reported host version `0.0.0` to the plugin loader. The plugin
92
+ therefore keeps `MINIMUM_HOST_VERSION = "0.0.0"` in `src/config/defaults.ts` as a
93
+ temporary loader workaround. Documentation and CI enforce the actual supported floor,
94
+ Paperclip `2026.824.1`.
95
+
96
+ PR #12745 includes the host-version reporting fix, but the published Kujo plugin must
97
+ keep the temporary `0.0.0` manifest value until that change reaches a public Paperclip
98
+ release. Raising the floor earlier would reject users on the current host even though
99
+ their Paperclip version is otherwise supported.
100
+
101
+ After the upstream release:
102
+
103
+ 1. set the manifest minimum to the real supported host floor;
104
+ 2. update `tests/plugin.spec.ts` and `docs/COMPATIBILITY.md`;
105
+ 3. run the full verification matrix;
106
+ 4. install the packed plugin on the declared minimum and latest Paperclip versions; and
107
+ 5. issue a patch release if the published manifest changes.
108
+
109
+ Acceptance criteria: a compatible host loads the plugin, an older host rejects it with
110
+ a clear message, and no `0.0.0` compatibility exception remains.
111
+
112
+ ### 3. Add automated browser coverage for both UI surfaces
113
+
114
+ **Priority:** Medium
115
+ **Owner:** Plugin repository
116
+
117
+ **State:** Complete in plugin PR #11
118
+
119
+ The UI has contract tests, manual browser evidence, and automated browser and visual
120
+ regression coverage for:
121
+
122
+ - the inline current-task workspace registered through `taskDetailView`;
123
+ - the shared `detailTab` on project, issue, and run pages;
124
+ - Review, Context, and Failure Evidence actions and result states;
125
+ - the official Kujo mark and accessible labels; and
126
+ - light and dark themes at desktop and narrow widths.
127
+
128
+ The implementation uses Playwright with a deterministic SDK fixture. It covers the
129
+ current-task surface, the project and issue detail tabs, the read-only run detail tab,
130
+ all three primary actions, the official mark, accessible labels, and approved
131
+ desktop-light and narrow-dark screenshots. The `browser-ui` CI job installs its own
132
+ Chromium build and uploads the Playwright report on failure.
133
+
134
+ The hosted Linux browser job passed before merge. Pull requests and releases fail if
135
+ either surface disappears, loses its primary actions, or exceeds the approved visual
136
+ baseline tolerance. Lens also passed its full desktop/mobile accessibility and link
137
+ check with no findings at warning or higher.
138
+
139
+ ### 4. Review the open dependency pull requests
140
+
141
+ **Priority:** Medium
142
+ **Owner:** Plugin maintainers
143
+
144
+ **State:** Complete
145
+
146
+ The four reviewed Dependabot pull requests were [artifact attestation
147
+ #1](https://github.com/kujolang/paperclip/pull/1), [the grouped development update
148
+ #2](https://github.com/kujolang/paperclip/pull/2), [Zod
149
+ #3](https://github.com/kujolang/paperclip/pull/3), and [dependency review
150
+ #4](https://github.com/kujolang/paperclip/pull/4). All four are merged.
151
+
152
+ The grouped TypeScript 7 update initially failed because compiler types were implicit.
153
+ The repaired branch declares Node and React types explicitly. Local verification and
154
+ the complete hosted compatibility matrix passed before merge.
155
+
156
+ ### 5. Submit to the Paperclip catalog
157
+
158
+ **Priority:** Medium
159
+ **Owner:** Release or ecosystem maintainer
160
+
161
+ **State:** Waiting for an upstream submission channel
162
+
163
+ Paperclip's current implementation specification explicitly keeps a public plugin
164
+ marketplace and packaged public distribution out of scope. No official catalog
165
+ submission path is present in the upstream repository as of this update. Do not invent
166
+ an unofficial submission process.
167
+
168
+ Keep [CATALOG_SUBMISSION.md](CATALOG_SUBMISSION.md) ready as the evidence brief. When
169
+ Paperclip publishes a submission channel, attach the tagged release, npm provenance,
170
+ cross-platform checks, permissions summary, and current UI screenshots.
171
+
172
+ This is a distribution task, not a prerequisite for installing the public npm package.
173
+
174
+ ### 6. Cut the next release only after plugin-owned work lands
175
+
176
+ **Priority:** Medium
177
+
178
+ **Owner:** Plugin release maintainer
179
+
180
+ **State:** v0.1.6 released
181
+
182
+ Version 0.1.6 consolidates the browser coverage and dependency maintenance. Its tagged
183
+ workflow runs the full repository, browser, compatibility, supply-chain, packaging,
184
+ and clean-install gates before publication through npm trusted publishing.
185
+
186
+ ## Recommended next-agent sequence
187
+
188
+ 1. Monitor upstream PR #12745 through review and merge; do not change the published
189
+ minimum-host constraint yet.
190
+ 2. After an upstream Paperclip release contains the host fix, restore the real host
191
+ floor and run minimum/latest clean-install tests.
192
+ 3. Publish a follow-up patch only if restoring the manifest floor changes the package.
193
+
194
+ The catalog task stays parked until Paperclip exposes an official public submission
195
+ process.
196
+
197
+ ## Optional business work
198
+
199
+ The repository documents secure operation and incident response, but it does not promise
200
+ an SLA. If the plugin will be sold as an enterprise-supported product, define support
201
+ ownership, response targets, vulnerability intake, data-processing posture, and any
202
+ required compliance evidence. These are commercial-operating commitments, not missing
203
+ plugin functionality.
204
+
205
+ ## Guardrails
206
+
207
+ - Keep the plugin a thin integration over the pinned Kujo components. Do not duplicate
208
+ their implementations in TypeScript.
209
+ - Do not add a generic command runner or accept arbitrary workspace paths.
210
+ - Preserve bounded output, redaction, canonical workspace checks, and the two-stage
211
+ Context Pack read boundary.
212
+ - Do not add a Classic Task Interface requirement.
213
+ - Keep npm publishing tokenless through trusted publishing; do not add repository npm
214
+ tokens.
215
+ - Do not claim suggested checks ran unless the plugin has execution evidence.
216
+
217
+ ## Agent start checklist
218
+
219
+ 1. Read `AGENTS.md`, `README.md`, this handoff, and the document for the selected task.
220
+ 2. Confirm `git status --short --branch` is clean and create a focused branch.
221
+ 3. Run `npm ci --ignore-scripts` and `npm run verify` before changing behavior.
222
+ 4. Inspect current GitHub issues, pull requests, and workflow results.
223
+ 5. Make small signed commits, push them, and use required pull-request checks.
224
+ 6. For a release, follow [RELEASE_READINESS.md](RELEASE_READINESS.md), test a clean
225
+ public install, and verify the npm and GitHub artifacts after publication.
226
+
227
+ ## Completion standard
228
+
229
+ A maintenance item is complete only when its tests, documentation, compatibility
230
+ evidence, and hosted checks agree; the branch is merged; and the working tree is clean.
231
+ A version change is complete only after the signed tag, GitHub release, npm package,
232
+ provenance, and clean public install are all verified.
233
+
234
+ ## Release evidence
235
+
236
+ - GitHub release: <https://github.com/kujolang/paperclip/releases/tag/v0.1.6>
237
+ - npm package: <https://www.npmjs.com/package/@kujolang/paperclip/v/0.1.6>
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kujolang/paperclip",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
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
52
  "@kujolang/kujo-runtime": "1.2.2",
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.0",
67
+ "@types/react": "19.2.18",
68
+ "@types/react-dom": "19.2.5",
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",