Commit Graph
138 Commits
Author SHA1 Message Date
Aron Prins d8a031897b Avoid env-controlled registry sync cwd 2026-05-30 17:54:06 +02:00
Aron Prins 17e046db5f Harden screenshot runner environment 2026-05-30 17:52:14 +02:00
Aron PrinsandClaude Opus 4.8 32a16b20f4 Recapture screenshots on a healthy demo seed
The seeded org agents were created as `process` adapters with an empty
adapterConfig. The screenshot instance runs with no LLM provider and the
scheduler heartbeats every enabled agent, so each agent's heartbeat failed
instantly — the captured UI was dominated by red "error" states ("5 errors"
on the dashboard, "Ada failed after 1 second" on agent detail).

Give every demo agent a shared DEMO_AGENT_CONFIG: a process command that
always exits 0. Heartbeats now complete cleanly, so agents render as healthy
idle/running/paused with tidy transcripts. Recaptured all targets (light +
dark) against paperclip 911a1e8 — dashboard now reads "0 errors".

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 17:41:27 +02:00
Aron PrinsandClaude Opus 4.8 e4be96d643 Add screenshot-coverage gate to sync:check
New scripts/sync/verify-screenshots.mjs asserts that every screenshot
referenced in a guide page is (a) a CAPTURE_TARGET in routes.mjs and (b)
indexed in registry.json with a non-empty depends_on. It exits non-zero
otherwise, so a doc image added without a capture target fails loudly instead
of silently going stale. Wired into `npm run sync:check`, which the /sync-docs
skill runs every sync.

Currently: 112 referenced screenshots, all tracked and indexed.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 14:42:14 +02:00
Aron PrinsandClaude Opus 4.8 9ad25322b5 Make the screenshot registry self-indexing
Previously sync-registry only *updated* existing registry entries, so a newly
introduced screenshot target was captured but never indexed — and the
/sync-docs staleness check only flags entries it can see, so such a shot would
silently drift out of date (exactly what happened to issues/inbox-unread).

sync-registry now appends a registry entry (file, theme, viewport, route,
depends_on) for any CAPTURE_TARGET that has none, and sorts entries for stable
diffs. run.mjs runs sync-registry on every capture, so the index now stays
complete automatically. Audit: 0 target files missing from the registry, 0
without depends_on — every documented screenshot is tracked for staleness.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 14:40:58 +02:00
Aron PrinsandClaude Opus 4.8 38608f7fb7 Recapture remaining UI screenshots (paperclip 911a1e8)
Refresh the shots unlocked by the runner-agent seeding and new targets:
agent runs/transcript/status, environment test pass, approval revision box,
adapter health rows, and the onboarding goal field. registry.json stamped.

Every screenshot referenced in the docs is now captured against the current
build; the only un-refreshed files are unreferenced orphans.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 14:28:21 +02:00
Aron PrinsandClaude Opus 4.8 59b4d4a4fe Cover the last 8 shots: real process-adapter runs + doc repoint
Close the remaining gap so every screenshot referenced in the docs is current.

seed.mjs — process-adapter "runner" agents (no LLM needed; the process adapter
executes a shell command):
- "Task Runner" runs `sh -c "echo ..."` → a real completed run with a STDOUT
  transcript (run-transcript-view, test-environment-success via the config
  Test button which now passes: command sh is executable)
- "Live Task" runs `sh -c "sleep 3600"` and is woken last, so it stays
  in-flight through the whole capture phase → genuine "running" agent status
  and an in-progress run row

routes.mjs — targets for run-transcript-view, run-history-in-progress,
agent-status-running, test-environment-success (click "Test" → wait for the
Passed result), approvals/revision-request-input (the detail note box),
adapters/health (the adapter rows), and onboarding/goal-field (wizard step 1).

dashboard.md — the dashboard image pointed at a hand-annotated PNG that can't
be auto-captured; repoint it to the freshly captured dashboard-overview.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 14:28:19 +02:00
Aron PrinsandClaude Opus 4.8 b24671f98c Recapture UI screenshots with extended coverage (paperclip 911a1e8)
Full automated recapture via the extended pipeline against a richly-seeded
demo instance: 220 screenshots (110 targets x light/dark, 1440x900 @2x).

Adds coverage for dashboard, tasks, activity, org chart, routines, skills,
workspaces, approvals, budget-utilisation states, new-agent forms, and
empty-state onboarding. registry.json route/depends_on backfilled and
captured_sha stamped for all 220 entries.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 13:52:44 +02:00
Aron PrinsandClaude Opus 4.8 73de0bb4b6 Extend screenshot coverage: interaction engine + richer seed
Grow capture coverage from 56 to 110 targets so the docs' UI screenshots are
refreshed end to end, not just the plain-URL surfaces.

capture.mjs — interaction engine:
- `steps` per target (click / fill / waitFor / press) run after the page
  settles; each step is best-effort (logs + continues) so selector drift
  degrades to a partial capture instead of aborting
- `clip` captures a single element (e.g. a dashboard panel), falling back to
  full-page if the element isn't found
- robust locator DSL: testid / role+name / label / title / placeholder / text / css

routes.mjs — +54 targets across dashboard, tasks, issues, activity, org,
routines, skills, workspaces, settings, costs (incl. budget-bar 50/80/100%
states), new-agent forms, approvals, and empty-state onboarding. New seed-id
tokens for empty company, budget-state agents, http agent, skill, approvals.
Documents the 8 shots that are genuinely not auto-capturable offline (live-run
transcripts/status, real adapter test-pass, a nonexistent revision input, a
nonexistent adapter-health route, the hand-annotated overview, onboarding goal).

seed.mjs — extended dataset: a second empty company for empty-state shots;
three budget-utilisation agents seeded to 50/80/100% (last one paused); an
http-adapter agent; four approval items (hire / strategy / board / approved)
via REST; a resolved skill id; and the isolated-workspaces experimental flag
(PATCH /api/instance/settings/experimental).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 13:52:36 +02:00
Aron PrinsandClaude Opus 4.8 6cd9f193d5 Capture all UI screenshots against paperclip 911a1e8
Full automated capture of the docs UI screenshots (light + dark, 1440x900 @2x)
via `npm run screenshots:refresh`, run against a fresh seeded demo instance.

- 112 PNGs (56 light + 56 dark) refreshed across all covered surfaces
- registry.json: route + depends_on backfilled for the 110 captured entries,
  captured_sha/captured_against stamped to the parent commit they were taken at

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 12:55:13 +02:00
Aron PrinsandClaude Opus 4.8 95c7ab5f67 Enrich screenshot seed + harden the runner
Validated the pipeline against a live local_trusted instance and fixed what
the dry run surfaced, plus made the demo company look genuinely in-use.

seed.mjs — rich, idempotent, soft-failing demo dataset:
- brand color + monthly budget; 5-agent org (Ada/Bob/Cleo/Dax/Eve) with
  titles, icons, instructions, per-agent budgets, assigned skills
- 4 company skills, 2 goals, 2 projects + a git workspace, 8 issues with
  mixed statuses/priorities/assignees, 2 sub-issues, a 4-message chat thread
- routine + one execution-history row, 2 invites, bundled plugins installed,
  32 cost events + 5 finance events so the Costs/Finance dashboards are non-zero
- enum/validation fixes from the live run: goal status "active" (not
  "in_progress"), workspace sourceType "git_repo", comment authorType "user"
  (a board actor cannot post as "agent")

run.mjs:
- kill the server's whole process group on teardown (was orphaning the
  server child and holding port 3197)
- pre-clean the scratch home at startup so every run gets a fresh DB and the
  one-shot seed steps (comments/invites/events) always fire

sync-registry.mjs: drop the scaffolder's _todo note once route/depends_on
are populated.

package-lock.json: pick up @playwright/test.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 12:55:04 +02:00
Aron PrinsandClaude Opus 4.8 5f00622542 Add automated screenshot capture pipeline + skill wiring
Builds an end-to-end pipeline that keeps docs screenshots in sync with the
latest Paperclip build, replacing the previously-manual capture step.

scripts/screenshots/:
- config.mjs       isolated-instance env helpers (local_trusted/loopback,
                   scratch PAPERCLIP_HOME, never touches ~/.paperclip)
- seed.mjs         idempotent demo-data seeding via REST (company/agents/
                   project/goal/issues/routine/workspace); writes .seed-ids.json
- routes.mjs       56 CAPTURE_TARGETS with real ui/src depends_on paths;
                   resolveRoute() uses the server-derived issuePrefix
- capture.mjs      Playwright capture (light+dark, 1440x900 @2x), theme seeded
                   to match ui/index.html, stamps registry captured_sha
- sync-registry.mjs back-fills route + depends_on into registry.json
- run.mjs          one-command orchestrator: onboard -> health -> seed ->
                   sync-registry -> capture -> teardown
- README.md        prerequisites, flow, overhaul mode, safety notes

Wiring:
- package.json: screenshots:{seed,capture,sync-registry,refresh,refresh:all}
  + @playwright/test devDependency
- screenshots:refresh:all is the full re-take mode for major UI/UX overhauls
- sync-docs SKILL.md Phase 6: capture is now automatable (still PR-reviewed,
  never auto-pushed); maintenance.md updated to match
- .gitignore: scripts/screenshots/.seed-ids.json

Auth is free in local_trusted mode (every request is admin), so no login flow
is needed. Capture/staleness still surface to a PR for human review.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 12:05:26 +02:00
Aron PrinsandClaude Opus 4.7 515366b322 Align docs site with brand guide + mobile top-bar fixes (#17)
* style: align docs site with paperclip.ing brand guide

Bring the docs site in line with the canonical brand tokens and fix two
layout bugs found while verifying:

- Radius scale: adopt the brand ramp (xs 4 / sm 10 / md 16 / lg 24 / pill)
  and apply by role (cards 16, controls/code/tables 10, chips/code 4,
  search modal 24).
- Pill rule: reserve the pill shape for the primary Star CTA only; convert
  secondary controls (search, TOC toggle, copy-link group) to 10px rects
  and metadata/count chips to 4px.
- Color: error red -> #DC2626, complete the named status palette, align
  callout deeps and dark-mode secondary/muted text to brand exact hexes.
- Typography: enable OpenType ss01 + cv11 on body, tabular-nums on mono,
  tighten display-1 tracking to -0.04em.
- Default to dark mode (set pre-paint in <head> to avoid a light flash).
- Fix "All docs" sidebar button clipped on the left by overflow-x.
- Fix doc body width: set --content-max to 920px so content fills the
  layout and lines up with the header/footer.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* fix(nav): rework mobile top bar layout

On mobile (<=560px) the top bar is now balanced and centered:
- hamburger moved to the far left, with the search trigger beside it
- paperclip icon + wordmark + "Docs" stay dead-centered
- GitHub icon sits left of the Star button on the right
- drop the star count on mobile so the side groups balance and the
  logo centers via flex (no overlap)

Search is duplicated for the left/mobile slot and both triggers bind via
a shared .js-search-open class. Desktop layout is unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* fix(nav): prevent header overflow on very narrow phones

Hide the "Docs" logo suffix at <=360px. With the mobile search + GitHub
buttons shown, the min content width of hamburger+search | Paperclip Docs
| GitHub+Star was ~352px, overflowing viewports around 320px. "Docs"
stays visible on common phones (375px+).

Addresses Codex review P2.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* fix(a11y): raise dark muted-text contrast to WCAG AA

Dark --ash was set to the brand caption color #6E6960 (~3.4:1 on the
dark bg), but --ash is reused for normal-size text (navbar links,
counts, metadata, placeholders). Raise to #8A8579 (~5:1, AA) while
keeping it dimmer than the secondary text token.

Addresses Codex review P2.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-28 18:08:06 +02:00
Aron PrinsandClaude Opus 4.7 67a1777cae docs: add how-to guide for updating Paperclip (#15)
Adds docs/how-to/update-paperclip.md covering the three install paths
(Desktop App, npx/CLI, git clone) and wires it into the How-to Guides
sidebar.

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-26 11:42:40 +02:00
Aron PrinsandClaude Opus 4.7 ee349a369a Release docs for paperclip v2026.525.0 (#14)
* nightly: regenerate PENDING manifest (paperclip c0c5a82)

10 PR-tier candidates against v2026.517.0..master:
- modal sandbox provider plugin (new doc page)
- worktree init --force scope fix
- routine env runtime contract (migration 0086)
- workspace diff viewer plugin (new)
- plugin SDK surface + managed-resources concept
- environmentProbe RPC timeout 120s
- SecretBindingPicker in JsonSchemaForm
- inbox planning badge removed
- secret form textarea overflow fix
- new-issue autocomplete pointer fix

No drift, no reconciliation candidates. All 14 parent commits past
quarantine. Anchor-map db-migrations watcher path is stale
(packages/db/migrations -> packages/db/src/migrations) — noted for
maintenance.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* nightly: document Modal sandbox provider (paperclip 4b1e92a..e5a0f5d)

* nightly: clarify scope of worktree init --force (paperclip 242a2c2)

* nightly: document routine env + secret-ref binding picker (paperclip 705c1b8..c0c5a82)

* nightly: document workspace diff viewer plugin (paperclip 5071c4c)

* nightly: audit plugin SDK reference + add managed resources note (paperclip c0c5a82)

* nightly: nav for modal adapter and workspace-diff plugin

Merges the two NAV_ADDITION entries returned by the doc-draft subagents
in this run, in one coordinated edit so the index file stays consistent.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* nightly: workspace diff polish + manifest refresh (paperclip f2575305)

- docs/reference/plugins/workspace-diff.md: document split/unified toggle,
  working-tree vs against-ref toggle, base-ref input with defaultBaseRef
  prefill, sticky toolbar, and head → working-tree fallback when no
  base ref is set (paperclip #6383).
- PENDING.md: regenerate cumulative manifest against parent f2575305
  (20 commits in window, 13 doc-relevant entries). Adds entries for the
  provider vault secrets UX (#6381), cheap recovery model guard (#6371),
  sidebar fix (#6341), cloud tenant import exemption (#6378), and UI/dev
  QoL polish (#6384).
- .sync-state.json: bump last_seen_parent_sha to f2575305, refresh
  manifest hash, mark applied.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* docs(nightly): add troubleshooting for 401 after creating a new secret

Customer hit a 401 after adding a new secret at the company level. The
new how-to didn't flag that creating a secret doesn't auto-rewire the
agent's env-var binding — fixed by adding two troubleshooting entries
covering the unbound-secret case and the provider-side rejection path.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* nightly: manifest refresh (paperclip e3c875c, effective c91a062)

Cumulative window v2026.517.0 → c91a062 (21/29 commits; 8 quarantined).
Adds entry #14 for #6380 runtime control-plane fixes — overwhelmingly
internal correctness, surfaced as context-only with a note on the new
PORTABLE_JSON_BODY_LIMIT (64mb) constant for portable imports. All 13
prior entries still present in the cumulative diff — no reconciliation.
Drift check clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

* release: docs for paperclip v2026.525.0

Roll-up of nightly drafts plus newly-authored coverage for surfaces shipped
in v2026.525.0 that nightly hadn't reached yet:

- new: docs/how-to/sync-to-cloud-upstream.md (Cloud Upstream sync flow)
- new: docs/how-to/connect-aws-secrets-vault.md (AWS provider vault discovery)
- update: docs/reference/cli/commands.md — paperclipai cloud connect/push
- update: docs/reference/adapters/acpx-local.md — bare Claude model IDs, structured diagnostics, ~/.claude/settings.json handling
- update: docs/reference/api/agents.md — scoped permissions + authorization service, decision-reason table
- update: docs/reference/api/issues.md — retry-now endpoint
- update: docs/reference/deploy/secrets.md — Provider Vaults section
- update: docs/how-to/bring-your-own-agent.md — invite flow moved into add-agent modal

Bumped paperclip_version frontmatter to v2026.525.0 on all touched pages
(including nightly-authored Modal, workspace-diff, plugin SDK, routines,
worktree --force pages).

Updated .sync-state.json: base_release_tag v2026.517.0 -> v2026.525.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 20:36:18 +02:00
Aron Prins 7cbd284a16 merge: redesign paperclip docs fixes 2026-05-25 13:41:58 +02:00
Aron Prins 5625b7f496 fix: include spend approval guide in nav 2026-05-25 13:36:12 +02:00
Aron Prins 471de65da1 fix: harden docs rendering and stale references 2026-05-25 13:32:06 +02:00
Aron PrinsandClaude Opus 4.7 81c7959c0b copy(landing): rewrite hero in paperclip.ing's plain-language voice
Drop the "control plane" buzzwords. Short noun-phrase headline,
plain-language lede that echoes paperclip.ing's "people use to
manage AI agents for work" cadence.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 13:20:20 +02:00
Aron PrinsandClaude Opus 4.7 7604cbaeee nav: split centered logo into Paperclip (→ paperclip.ing) + Docs (→ docs.paperclip.ing)
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 13:12:06 +02:00
Aron PrinsandClaude Opus 4.7 c557392a8a ui(article): swap page-action primary to Copy Link, demote Copy Page to menu
The pill button now copies the canonical page URL (with hash); the
dropdown's first item still copies the page as Markdown.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 13:02:44 +02:00
Aron PrinsandClaude Opus 4.7 fdec9f4e1e ui: italicize em via real Inter Tight italic, drop card left accent
- Load italic axis for Inter Tight/Inter from Google Fonts so #landing-title em renders true italic instead of synthetic slant
- Drop the dimmed graphite color on em; inherit ink to match paperclip.ing
- Remove the green left-edge ::after strip on .card (and its hover state)

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 13:00:05 +02:00
Aron PrinsandClaude Opus 4.7 4efaf4f660 fix(nav): restore id="logo" on navbar logo to keep init() running
When the header was rewritten the id was dropped, so init()'s
document.getElementById('logo').href = ... threw and halted the
rest of the boot sequence (sidebar, landing, routing).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 12:50:52 +02:00
Aron PrinsandClaude Opus 4.7 894f3e0ec2 nav: mirror paperclip.ing footer, polish topbar font + colors
- Replace docs footer with paperclip.ing's structure (wordmark row,
  4-column grid, bottom row) and pin it to the dark palette
- Move search trigger from the left to the right of the navbar
- Load Inter Tight as a variable font so weight 450 renders correctly
- Set light-mode page background to pure white (matches paperclip.ing)
- Bind navbar text colors to --graphite (light) / --ash (dark) so dark
  mode matches paperclip.ing's --mono (#9A958A) exactly

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 12:45:26 +02:00
Aron PrinsandClaude Opus 4.7 e3a6c14696 nav: align widths, swap sub-bar for search modal, add Blog/Docs menu
- Match paperclip.ing's layout frame exactly (max-width 1280, 24px padding)
- Replace navbar links with Blog/Docs to mirror the marketing site
- Add a navbar search trigger (icon + label + ⌘K kbd chip)
- Move search into a centered modal opened by the trigger or ⌘K
- Remove the sticky search sub-bar; relocate breadcrumb above article

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 12:38:52 +02:00
Aron PrinsandClaude Opus 4.7 5c2591263e nav: mirror paperclip.ing navbar with star counter + floating theme toggle
Replaces the docs topbar with paperclip.ing's three-column navbar
(centered logo, left nav links, right Star CTA with live count),
moves the theme toggle to a fixed bottom-right pill button, and
relocates the search bar to a sticky sub-bar directly below the
navbar.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 12:34:53 +02:00
Aron PrinsandClaude Opus 4.7 9ef52141d5 redesign: align docs design system with paperclip.ing
Retunes color tokens to paperclip.ing's "materials" palette
(bond/manila/stone/charcoal/ink), swaps the display font from
Instrument Serif to Inter Tight at weight 600 / -0.03em tracking,
and tightens radii to 8/12 to match. The dark theme shifts from
cool blue-grey to warm charcoal with manila cream text.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-25 12:21:26 +02:00
Aron PrinsandClaude Opus 4.7 6483625106 docs: add how-to for updating/rotating a provider API key (#11)
Covers both storage shapes (plain value on the agent vs secret reference
via Company Settings → Secrets), with per-provider notes for Anthropic,
OpenAI, Google Gemini, xAI, Cursor, and OpenCode. Includes a callout for
the Claude.ai subscription → console-key switch that's been tripping up
existing users.

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-21 16:35:14 +02:00
Aron Prins db34232862 Merge pull request #10 from paperclipai/release/v2026.517.0
Release docs for paperclip v2026.517.0
2026-05-18 12:41:50 +02:00
Aron PrinsandClaude Opus 4.7 dfc1e04660 Cloudflare section: tighten probe-budget claim per second spot-check
- OpenCode's non-sandbox default is 60s, not 45s.
- Cursor has two probes (version + hello) with different sandbox/non-sandbox
  defaults.
- Grok Local does NOT have sandbox-aware probe timeouts in this release —
  it ships with a flat 45s. Called out as follow-up.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-18 12:41:09 +02:00
Aron PrinsandClaude Opus 4.7 db2649485e Cloudflare section: correct three claims after source spot-check
- UTF-8 partial-chunk claim was wrong: the actual fix routes bridge-channel
  commands through the non-streaming exec path so the `@cloudflare/sandbox`
  SDK can't drop the final stdout chunk on short shells. Adapter sessions
  still stream.
- Probe-budget claim sharpened: the change is a static doubling of
  `helloProbeTimeoutSec` to 90s when targeting a sandbox (45s otherwise),
  not a dynamic warming-aware budget. Lives in each local adapter's
  test.ts, not in the Cloudflare provider.
- Pi install fix sharpened: the actual change is a corrected npm package
  namespace + version pin (`@earendil-works/[email protected].0`), not
  a path inside the bridge image.
- Added the previously-missing `DEFAULT_BRIDGE_REQUEST_TIMEOUT_MS` bump
  from 30s to 300s, which was also in the v2026.517.0 window.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-18 12:23:57 +02:00
Aron PrinsandClaude Opus 4.7 bd1799fc8d Release docs for paperclip v2026.517.0
- New adapter page: Grok Local (`grok_local`), wired into the Adapters
  overview table and nav.
- Issues guide: document locking workflow (lock/unlock, derived-document
  redirect for agents) and the new Board-view scaling controls (density,
  cold-lane mode, column page size). Documents are now live-refreshed.
- Issues API reference: lock / unlock endpoints, plus the
  `redirectedFromLockedDocument` response for agent writes into locked
  documents.
- Sandbox Providers (Cloudflare): reliability tuning notes — larger
  instance type, SSE keepalives, UTF-8-safe stdout, sandbox-aware probe
  budgets, corrected Pi install path.
- LLM Wiki plugin: bundled bootstrap assets and namespace-safe spaces
  migration validation.
- SCREENSHOTS_PENDING.md regenerated for v2026.517.0.
- .sync-state.json bumped to v2026.517.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-18 11:24:58 +02:00
Aron Prins 10c495180a nightly: no-op sync — only internal hardening in window (paperclip 333a16b)
Cumulative window v2026.513.0 → 333a16b after 24h quarantine. 2 commits,
12 files, no doc-relevant surface changes. 9 commits younger than the
quarantine cutoff (Cloudflare/i18n/kanban/llm-wiki/lockfile) deferred to
a later run. Drift 0, stale screenshots 0.
2026-05-16 00:47:46 +02:00
Aron Prins 8ae649cc2b Merge branch 'main' into nightly 2026-05-14 11:07:10 +02:00
Aron Prins 219d0a8d1b Merge pull request #7 from paperclipai/docs/plugin-coverage-gaps
Fill plugin coverage gaps (llm-wiki, orchestration-smoke, fake-sandbox)
2026-05-14 11:06:59 +02:00
Aron PrinsandClaude Opus 4.7 8ef7494782 docs: hoist LLM Wiki install command; clarify bundled-examples vs catalogue
Address operator confusion observed in support channels: users on
non-Docker / systemd installs report not being able to install the
LLM Wiki plugin. Root cause is documentation, not code — the plugin
is published to npm and installs cleanly via the standard CLI, but:

- Our reference page buried the npm package name in the "developing
  from a checkout" subsection. Operators scanning for the install
  command had to read past the dev section to find @paperclipai/...
  Now the Quick install section is the first actionable thing on
  the page, with the explicit `paperclipai plugin install` line.

- `paperclipai plugin examples` (and the dashboard's Available
  Plugins list) only returns the four reference example plugins
  from BUNDLED_PLUGIN_EXAMPLES in server/src/routes/plugins.ts. It
  is NOT the full first-party catalogue. Operators who looked there
  for LLM Wiki concluded it wasn't shipped. Added a callout to
  docs/administration/plugins.md to make this explicit and link out
  to the LLM Wiki reference page for plugins installed by full npm
  name.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-14 11:03:36 +02:00
Aron PrinsandClaude Opus 4.7 500e8d4f97 docs: fill plugin coverage gaps surfaced during v2026.513.0 sync
Three first-party plugins were missing from the docs because they
shipped before /sync-docs started tracking the repo (or were missed
in a prior batched catchup):

- NEW docs/reference/plugins/llm-wiki.md — full reference page for
  the LLM Wiki plugin (introduced in v2026.512.0, PR #5716). Covers
  what the plugin contributes to the dashboard, its managed agent
  and skills, REST routes, and operator tips.
- docs/administration/plugins.md — adds the missing
  plugin-orchestration-smoke-example bullet to the first-party
  examples list (sibling to the four already listed).
- docs/reference/adapters/sandbox-providers.md — adds a Fake Sandbox
  (provider: "fake-plugin") section for the private
  @paperclipai/plugin-fake-sandbox package, intended for testing and
  reproducing plugin-runtime issues without external infrastructure.
- site/content.json — nav entry for the new LLM Wiki page under
  Reference / Plugins.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-14 10:48:14 +02:00
Aron PrinsandClaude Opus 4.7 82939a972b nightly: catch up to v2026.513.0 release
Per runbook release ceremony step 5 follow-up 4: flip branch_mode
back to "nightly" after merging main down. base_release_tag stays
at v2026.513.0 — that's the new cumulative-diff base for the next
nightly run.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-14 10:43:57 +02:00
Aron Prins 8c2b471012 Merge pull request #6 from paperclipai/release/v2026.513.0
Release docs for paperclip v2026.513.0
docs/v2026.513.0
2026-05-14 10:43:02 +02:00
Aron PrinsandClaude Opus 4.7 fc74da5f6b Document nightly catch-up; stop rendering version footer
Two related cleanups noticed during the v2026.513.0 release run:

1. Release ceremony was missing the nightly catch-up step. After the
   release PR merges, main is ahead of nightly by the release commits
   and nightly's .sync-state.json still says branch_mode "nightly"
   with the old base_release_tag. The merge-down + branch_mode flip is
   manual the first time and must be done by hand. Added as the 4th
   post-merge follow-up, plus a troubleshooting row for the symptom
   "nightly run reports release mode unexpectedly".

2. paperclip_version frontmatter was being rendered as a visible
   "Documenting Paperclip vX.Y.Z" footer on every release-stamped
   page. Treat the field as internal metadata only: build-release.mjs
   still parses and surfaces it into content.json (queryable for
   tooling), but the SPA no longer prints it on-page. Updated the
   skill's builder note to match.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-14 10:07:29 +02:00
Aron PrinsandClaude Opus 4.7 32b755400e Bump sync state for v2026.513.0 release
base_release_tag advances from v2026.512.0 to v2026.513.0.
branch_mode set to release so the state file on main reflects
the released documentation alignment after merge.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-14 09:53:38 +02:00
Aron PrinsandClaude Opus 4.7 68d514fb26 Release docs for paperclip v2026.513.0
Authored docs to track the v2026.512.0 → v2026.513.0 window:

- New: docs/how-to/develop-a-plugin-locally.md — friendly walkthrough
  of `paperclipai plugin init`, local-path install, dev watcher, reload.
- New: docs/guides/day-to-day/blocked-inbox.md — guide to the new
  Blocked Inbox tab, chip variants, filters, sort, and triage.
- docs/guides/day-to-day/issues.md — Blocked tab cross-ref; new
  "Recovery actions" and "Walking through sub-issues" sections.
- docs/reference/api/issues.md — "Recovery actions" API section
  (routes, RecoveryAction shape, resolution-outcome enum).
- docs/reference/adapters/claude-local.md — "Resuming a session's
  workspace" subsection (host cwd, system-root rejection, non-file
  skip, driver-plugin allowlist).
- docs/reference/plugins/sdk.md — "Worker entrypoint validation"
  section; version bumped to v2026.513.0.
- docs/administration/plugins.md — "Developing plugins locally"
  subsection linking the new how-to.
- site/content.json — nav entries for the two new pages.
- SCREENSHOTS_PENDING.md — new UI surfaces flagged for capture.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-14 09:53:29 +02:00
Aron PrinsandClaude Opus 4.7 6afac6099a Ignore .claude/settings.local.json
Local Claude Code settings are per-developer and shouldn't be tracked.

Co-Authored-By: Claude Opus 4.7 <[email protected]>
2026-05-14 09:42:20 +02:00
Aron Prins 62e1b29ce5 Adding sync-docs skill symlink to gitignore 2026-05-14 09:18:31 +02:00
Aron Prins 828d8dc1f3 Seed nightly branch sync state 2026-05-13 22:04:48 +02:00
Aron Prins ba41d3d1bb Merge pull request #5 from paperclipai/feat/sync-docs-skill
feat: /sync-docs skill — keep docs in lockstep with parent paperclip repo
2026-05-13 22:00:45 +02:00
Aron Prins 52542db923 Fix sync verification edge cases 2026-05-13 21:46:12 +02:00
Aron PrinsandClaude Opus 4.7 840c2a7d54 maintenance: split MAINTENANCE.md into maintenance/ folder
Reorganize the operational docs into a dedicated maintenance/ folder
with two focused files plus the deferred-items tracker:

- MAINTENANCE.md (deleted) → split into:
  - maintenance/maintenance.md — repo layout, commands, base paths,
    pages, screenshots, publishing, and the /sync-docs design
    reference (Sync workflow + Architecture diagrams).
  - maintenance/runbook.md — operational guide (first-time setup,
    creating the nightly branch, daily operation, release ceremony,
    review workflow, helper scripts, troubleshooting).
- FOLLOW-UPS.md (deleted) → maintenance/follow-ups.md (verbatim).

Cross-references updated:
- skills/sync-docs/SKILL.md pointers to MAINTENANCE.md retargeted
  to maintenance/maintenance.md (via relative path).
- Inside maintenance.md: anchor refs to Runbook subsections
  (#first-time-setup, #helper-scripts-full-list) rewritten as
  cross-file links to runbook.md#anchor.
- Inside runbook.md: anchor ref to Screenshots rewritten as
  maintenance.md#screenshots. Heading levels demoted one level
  (the section title is now top-level # Runbook). Intro paragraph
  updated to reflect the standalone file.
- Inside both files: pointer paragraphs at the top linking to the
  sibling file so readers can jump between design and operations.

No prose was rewritten or removed — only relocated and re-linked.
Verified zero remaining references to the old filenames across .md,
.mjs, .json, .js, .html. Build clean (90 md files). Lint-links
exit 1 only for the 3 pre-existing broken screenshot refs already
tracked in follow-ups.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-13 16:15:57 +02:00
Aron PrinsandClaude Opus 4.7 af1e9c399e docs: add operational runbook to MAINTENANCE.md
Closes the gap between "MAINTENANCE.md describes the sync workflow"
and "MAINTENANCE.md is a runbook you can actually follow." Adds a
new top-level Runbook section after Sync workflow covering:

- First-time setup (prereqs, install, state seed, verify)
- Creating the nightly branch (one-time post-merge step)
- Daily operation (loop/schedule, what to expect each morning)
- Release ceremony (PR review, merge, tag, post-merge follow-ups)
- Review workflow for PENDING.md, SCREENSHOTS_PENDING.md, drift,
  verification, reconcile flags
- Full helper-script list with example invocations
- FOLLOW-UPS.md role
- Troubleshooting table for common failure modes

Consolidates the previously-scattered install instructions and
helper-script list into the runbook. The Sync workflow section
remains the design reference; the Runbook is the operational guide.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-13 16:00:25 +02:00
Aron PrinsandClaude Opus 4.7 2b5368e5af release: address v2026.512.0 coverage gaps
Closes the four coverage gaps surfaced by the docs audit:

Gap 1 — env vars (verify-edit: 0 high-confidence unverified)
- docs/reference/deploy/environment-variables.md
- Added `BETTER_AUTH_SECRET` row to "Deployment And Auth" (falls back
  to `PAPERCLIP_AGENT_JWT_SECRET`; server refuses to start without
  either), and `SERVE_UI` row to "Server Configuration" (overrides
  `server.serveUi`). Both values copied verbatim from parent at
  v2026.512.0 (.env.example + server/src/auth/better-auth.ts).

Gap 2 — skill bundles (verify-edit: 0 unverified)
- docs/reference/skills.md
- Added one-liner entries for `diagnose-why-work-stopped`,
  `paperclip-converting-plans-to-tasks`, `para-memory-files`,
  `terminal-bench-loop`. Descriptions distilled from each parent
  `SKILL.md` frontmatter at v2026.512.0.

Gap 3 — Plugin SDK page (verify-edit: 0 high-confidence unverified)
- docs/reference/plugins/sdk.md (new)
- site/content.json (new "Plugins" section under Reference tier)
- Comprehensive reference for @paperclipai/plugin-sdk. Every public
  export (definePlugin, runWorker, startWorkerRpcHost, test harness,
  bundler presets, dev server, host-client factory, JSON-RPC protocol
  helpers, all manifest/protocol types, zod re-export, constants)
  is listed verbatim from packages/plugins/sdk/src/index.ts at
  v2026.512.0. 13 unverified items are SHOUT_CASE SDK constants
  mis-classified as env vars by verify-edit (all confidence: null).

Gap 4 — REST routes (verify-edit: 0 high-confidence unverified)
- docs/reference/api/adapters.md (new) — 9 endpoints from
  server/src/routes/adapters.ts.
- docs/reference/api/plugins.md (new) — install/lifecycle/config/jobs/
  webhooks/local-folders/bridge endpoints from
  server/src/routes/plugins.ts.
- docs/reference/api/instance-admin.md (new) — umbrella covering
  instance-settings, instance-database-backups, llms reflection,
  environments, and execution-workspaces.
- site/content.json — added the three new pages to the API section.
- All seven flagged route files turned out to be public/admin surfaces;
  none qualified as internal-only.

FOLLOW-UPS.md
- Added "Internal REST routes — intentionally undocumented" section
  recording the Gap 4 triage outcome.

Verification gates
- npm run sync:test       — 26/26 passed
- npm run docs:build      — clean (90 markdown files)
- npm run sync:lint-links — same 3 pre-existing broken screenshots
- npm run sync:verify-nav — same 1 pre-existing orphan
- check-drift: 41 -> 43 (+2; both are the new SERVE_UI / BETTER_AUTH_SECRET
  rows hitting the known env-var-missing false-positive class tracked
  in FOLLOW-UPS.md; the routes-missing item for instance-admin.md is a
  filename-normalization false positive — routes exist in parent).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
2026-05-13 15:51:54 +02:00