Commit Graph
8 Commits
Author SHA1 Message Date
631a6a0c53 Release docs for paperclip v2026.817.0 (content + screenshot overhaul) (#95)
Ships the v2026.817.0 docs to live: the doc content that was authored
and verified
earlier, plus a full screenshot overhaul.

The content half (`cdf81e2` and the nightly commits behind it) has
already been
reviewed. **The screenshots are the part that needs eyes** — `f24d734`,
342 PNGs.

## Screenshots

Everything was recaptured against the release commit
`213dabab4f8e1f3bb1803a2924c0fea1289fcd4c`
(`upstream/candidate/release-2026.817.0`). The previous shots were 375
parent-commits stale (v2026.720.0), with 228 of 310 entries flagged
pending. All
342 registry entries now carry that SHA.

> ⚠️ Worth knowing: the release commit is **not** an ancestor of the
parent's
> `master`, and local `master` was four days *older* than it. Capturing
against
> `master` would have both missed release UI and leaked 93 post-tag
commits' worth
> of UI into the release docs.

### New coverage (34 entries)

Three guides shipped with **no images at all** despite being 115–136
lines. They
now have them:

| Guide | Shots |
|---|---|
| `guides/day-to-day/decisions.md` | queue, an agent-proposed decision
with its options, triage strip, filter panel, named queue, Decided
curtain, empty state |
| `experimental/status-cards.md` | board, New card dialog, and all four
drawer tabs |
| `experimental/task-chat.md` | thread, composer mode picker, side pane
|
| `reference/api/secrets.md` | the board-side Proposals tab |

Chat-Style Tasks is captured in a **separate pass**:
`enableTaskChatRedesign` is
instance-wide, so leaving it on would have turned every classic
issue/task/work-mode
shot into the redesigned chat.

## Two defects that were already live

Both were shipping in the docs before this PR:

1. **`issues/detail-chat.png` and the `tasks/*` shots were mostly plugin
debug
output.** The Kitchen Sink example plugin mounts a panel into the issue
page
that dumps the raw issue JSON, and the seed installed it. Those guides
were
illustrating a debug panel instead of the task page. The seed no longer
   installs it.
2. **The seeded task thread was a monologue** — four board-user messages
in a row,
because the board actor cannot post agent comments. It is now a real
two-sided
   exchange.

## Targets repointed because the UI moved

| Target | Why |
|---|---|
| `activity/*` | `Activity.tsx` deleted; `/activity` renders
`pages/audit/CompanyActivity.tsx` |
| `experimental/cloud-upstream` | `CloudUpstream.tsx` deleted; the route
now redirects to `/company/export` |
| `settings/*`, `plugins/*`, `adapters/*` | `/instance/settings/*` are
legacy redirects now |
| `dashboard/stale-tasks-panel` | panel removed from `Dashboard.tsx` —
target dropped |

Plus eight targets with **silent selector drift**. A failed interaction
step falls
back to "whatever state was reached", so these had been quietly
producing wrong
images — a plain inbox where the doc promised a mode picker, a whole
dashboard
where it promised one panel. Full table in
`docs/user-guides/screenshots/SCREENSHOTS_PLAN_v2026.817.0.md` §C2.

## Pipeline

Decisions, status-card summaries and secret proposals are all
**agent-authored**,
and the board actor the seed runs as is refused by every one of them
(`"Agent run context required"`, `"Secret proposals require a verified
run-bound
agent token"`). Rather than insert rows behind the API,
`seed-new-surfaces.mjs`
borrows the two doors a real run already has — a board-minted agent API
key, and a
locally signed agent JWT — so every write goes through the production
code path.

Also:
- `capture.mjs` records a real `captured_against` on a detached checkout
instead of
the literal string `"HEAD"` (which is what every pre-2026.817 entry
recorded), and
  gains a `scrollTo` step for content below the fold.
- `run.mjs` gains `--serve` for iterating on the seed, the task-chat
phase, and a
keeper that holds the demo board's issue statuses steady — the demo
`process`
agents finish runs without declaring a disposition, so the stalled-work
sweep
re-blocks issues every few minutes over a capture that runs far longer.

## Reviewing

Light and dark both captured at 1440×900 @2x. The new surfaces are the
ones to
scrutinise; the rest is a like-for-like refresh.

### One leftover

Dropping `dashboard/stale-tasks-panel` leaves
`{light,dark}/dashboard/stale-tasks-panel.png`
tracked but unused — they need deleting by hand.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
Co-authored-by: DevRel Gemini <[email protected]>
Co-authored-by: Paperclip <[email protected]>
Co-authored-by: Dotta <[email protected]>
Co-authored-by: ClaudeCoder <[email protected]>
2026-08-18 12:43:56 +02:00
175648e771 docs: add Experimental feature section and screenshots (#71)
## Summary

- adds a new **Experimental** documentation section with an overview and
10 feature pages covering motivation, enablement, usage, and caveats
- wires the section into `site/content.json` and refreshes the
experimental flag list in administration settings
- adds six screenshot capture targets and 12 QA-verified screenshots
(light and dark) for experimental feature surfaces
- includes the screenshot-pipeline fixes needed to seed and capture
those surfaces reliably

## Screenshots

Adds light and dark captures for:

- environments
- cloud upstream
- file viewer
- external objects
- server info
- recovery preview

The 12 PNGs were verified on Paperclip task PAP-14814 on July 21, 2026
and were preserved byte-for-byte during the rebase.

## Verification

- `npm run sync:lint-links` — pass; no broken internal links
- `npm run sync:verify-nav` — pass; only the two pre-existing CLI
orphans
- `npm run sync:verify-screenshots` — pass; every documented screenshot
is tracked and indexed
- `npm run docs:build` — pass

Paperclip: PAP-14705

---------

Co-authored-by: DevRel Gemini <[email protected]>
Co-authored-by: Paperclip <[email protected]>
Co-authored-by: Claude Fable 5 <[email protected]>
2026-07-21 10:39:28 -05:00
Aron PrinsandClaude Opus 4.8 c8bc5055c8 docs(workspaces): fix workspaces guide + regenerate detail screenshots
A user reported the Workspaces screen looked empty with "no options," and
that all but one of the workspace screenshots were blank/identical.

Both were real problems:

Docs (docs/guides/projects-workflow/workspaces.md)
- Add a "Before you start" section: workspaces are gated behind the
  experimental "Enable Isolated Workspaces" flag, the screen is monitor-only
  (no manual create), and it stays empty until an agent runs an isolated
  task — with the actual empty-state strings ("No workspace activity yet." /
  "No non-default workspace activity yet.").
- Correct the detail screen: it now has Tasks / Services / Configuration /
  Runtime logs / Routines tabs (+ plugin tabs), not "three tabs." Rename the
  Issues tab to Tasks (its real label) and add a Services tab section. The
  former "Workspace commands panel above the tabs" is now the Services tab
  plus header quick controls.
- Clarify the company-wide Workspaces screen vs. the per-project Workspaces
  tab and the surfacing rules. Fix the misleading "multiple isolated
  workspaces" caption.

Screenshots
- Root cause: the seed only created a *project* workspace and pointed the
  execution-workspace detail routes at its id, so those pages were captured
  mid "Loading workspace…". Execution workspaces have no REST create endpoint
  (they're provisioned by a real heartbeat), so seed-execution-workspace.mjs
  now inserts a realistic one directly into the instance's embedded Postgres:
  an isolated git-worktree workspace with runtime config, a running service,
  provision/start/failed-job operation logs, and linked tasks.
- routes.mjs: add the {executionWorkspaceId} token, repoint the detail routes
  to it, add a Services tab target, and drop the duplicate
  org/execution-workspaces-list target (same URL as workspaces/list).
- Recaptured workspaces/{list,configuration,services,runtime-logs,issues} in
  light + dark; all now render real content.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-11 12:03:39 +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 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 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 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