Commit Graph
196 Commits
Author SHA1 Message Date
Aron Prins e2eddfe641 Merge remote-tracking branch 'origin/main' into release/v2026.618.0
# Conflicts:
#	docs/reference/adapters/sandbox-providers.md
2026-06-19 10:20:43 +02:00
Aron PrinsandClaude Opus 4.8 4ed3a26ff8 sync: bring verify-edit in line + scan adapter package sources
Two follow-ups to the server/src env-var scan widening:

1. verify-edit.mjs had its own copy of shouldFetchEnvSource with the same
   narrow server allowlist — apply the identical server/src/**/*.ts widening
   so the verify phase stops emitting unverified env-var false positives.

2. Both scripts now also scan all non-test packages/adapters/<name>/src/**/*.ts.
   Adapter packages read env vars directly in their server/index modules —
   e.g. SANDBOX_INSTALL_COMMAND (packages/adapters/{pi,claude,gemini,cursor}-local/src/...)
   and per-runtime API-key fallbacks — which the old allowlist never fetched.

Verified against parent v2026.618.0:
- check-drift: 0 drift (65 env vars checked).
- verify-edit docs/reference/adapters/sandbox-providers.md: 6/6 claims verified
  (SANDBOX_INSTALL_COMMAND, previously unverified, now resolves).
- sync:test 33/33.

Selection grows to ~452 files, still well under the 700 cap.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-19 09:48:43 +02:00
Aron PrinsandClaude Opus 4.8 c8e3aaf1f1 sync: widen drift checker env-var scan to all of server/src
The env-var drift checker only fetched a narrow allowlist of server files
(config.ts, a few auth/service files), so env vars read elsewhere in
server/src showed up as env-var-missing false positives every run.

Verified against parent v2026.618.0 that the 5 recurring false positives are
real, read env vars the old scan never looked at:
- TRUST_PROXY                  server/src/app.ts:167 (parseTrustProxyEnv(process.env.TRUST_PROXY))
- OTEL_EXPORTER_OTLP_ENDPOINT  server/src/instrumentation.ts:29
- OTEL_EXPORTER_OTLP_PROTOCOL  server/src/instrumentation.ts:69
- OTEL_SERVICE_NAME            server/src/instrumentation.ts:144
- OTEL_SERVICE_VERSION         server/src/instrumentation.ts:145

Fix: replace the three narrow server/src rules in shouldFetchEnvSource with a
single rule covering every non-test server/src/**/*.ts file (tests already
excluded above). Selection grows 130 → 326 files, well under the 700 cap.

Result: check-drift against both v2026.618.0 and master now reports 0 drift
(was 5 env-var-missing), with identical coverage (65 env vars, 235 routes,
57 CLI commands, 7 paths). sync:test 33/33 pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-19 09:39:24 +02:00
Aron PrinsandClaude Opus 4.8 60db152a9d Fix skill-list drift in skills.md (skills/ vs .agents/skills/)
The "Bundled with the Paperclip server (skills/)" list claimed three skills
that are NOT server-bundled — they live under .agents/skills/ (repo-development
skills) at v2026.618.0 and also at v2026.609.0, so this is pre-existing drift.

Verified against parent v2026.618.0:
- server-bundled skills/ contains exactly 6 dirs (all force-imported + required
  by ensureBundledSkills): paperclip, paperclip-board, paperclip-create-agent,
  paperclip-dev, paperclip-converting-plans-to-tasks, para-memory-files.
- paperclip-create-plugin, diagnose-why-work-stopped, terminal-bench-loop are
  under .agents/skills/, not skills/.

Fixes:
- Remove the 3 non-bundled skills from the bundled list (now matches skills/ 1:1).
- Drop the brittle "five paperclip-*" count (it also wrongly excluded the bundled
  para-memory-files); phrase count-free.
- Repair the paperclip-create-plugin link: parent has no `main` branch and the
  skill moved, so blob/main/skills/... (404) -> blob/master/.agents/skills/...

verify-edit: 7/7 claims verified. sync:check clean (no broken internal links).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-19 09:16:58 +02:00
Aron PrinsandClaude Opus 4.8 2368a2be5f Release docs for paperclip v2026.618.0
Promote nightly drafts (v2026.609.0 → v2026.618.0) to main and fill coverage gaps.

New surfaces authored:
- Novita Agent Sandbox provider (driver: novita) — sandbox-providers.md
- paperclip-board bundled skill — skills.md (skills/ went 5 → 6; "four" → "five")

Promoted nightly drafts (all ⊆ v2026.618.0, no post-tag leakage):
- adapters: codex/gemini/opencode/pi/openclaw-gateway, sandbox-providers (Kubernetes)
- api/agents, plugins/sdk, environment-variables (TRUST_PROXY/OTEL)
- day-to-day guides: artifacts, issues, routines

Stamped paperclip_version: v2026.618.0 on all 13 touched pages.
Regenerated SCREENSHOTS_PENDING.md (90/276 stale — flag only, separate capture PR).

Deferred: experimental conference-room board-chat (flag-gated).
sync:check clean (no broken links); drift = 5 known server-env false positives.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-19 00:48:23 +02:00
Devin Foley 3e45b830f3 Merge pull request #29 from Alex-yang00/add-novita-sandbox-provider-docs
docs: add Novita AI sandbox provider
2026-06-18 08:46:30 -07:00
Alex-wuhu 2cd95ec967 docs: add Novita AI sandbox provider 2026-06-18 18:32:03 +08:00
Aron PrinsandClaude Opus 4.8 1deeca2f7a nightly: advance sync state to paperclip 1b89a8e (no doc-relevant changes)
Cumulative window v2026.609.0 → 1b89a8e. The only commit added since the
last run (412a04c → 1b89a8e) is a Dockerfile fix removing VOLUME
["/paperclip"] for Railway compatibility — untracked by any watcher and
with no doc impact (the fly.toml volume still mounts at /paperclip).

Drift: 5 records (TRUST_PROXY, OTEL_*) all false positives — real server
env vars the drift checker can't see because it doesn't scan server/src
process.env reads. Confirmed present upstream; documented in the prior run.

No edits applied. Refreshed PENDING.md / SCREENSHOTS_PENDING.md headers
and bumped last_seen_parent_sha + last_run_outcome=no-changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-17 11:10:20 +02:00
Aron PrinsandClaude Opus 4.8 b3b690b362 nightly: advance sync state to paperclip 412a04c
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-15 11:27:49 +02:00
Aron PrinsandClaude Opus 4.8 acfebdf637 nightly: K8s sandbox provider, adapter gateway routing, TRUST_PROXY/OTEL, agent read-config access (paperclip 412a04c)
Cumulative window v2026.609.0 -> master HEAD 412a04c (59 commits). Applied:
- environment-variables.md: TRUST_PROXY (reverse-proxy trust), OpenTelemetry
  opt-in tracing (OTEL_*), and adapter provider-override env vars.
- api/agents.md: read-only config/skill/config-revision endpoints no longer
  require agents:create for board members (agents still gated).
- adapters/sandbox-providers.md: new Kubernetes sandbox provider section.
- adapters/{codex,pi,opencode}-local.md: PAPERCLIP_*_PROVIDERS gateway routing
  (+ codex GPT-5.5 / omit-default-model, opencode small-model).
- adapters/gemini-local.md: headless auth pre-selection + token-overflow
  fresh-session retry.
- adapters/openclaw-gateway.md: role/scopes/paperclipApiUrl/workspaceRuntime.
- plugins/sdk.md: optional companyId tenant scoping on metrics.write + log.

Deferred (experimental/half-built) to PENDING.md: Conference Room Chat,
Skills Store, dark mode, onboarding NUX, activity feed, issues list filters.
All edits verified against parent code (Phase 5.5).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-15 11:27:49 +02:00
Aron PrinsandClaude Opus 4.8 c263060a75 nightly: advance sync state to paperclip 69a368e
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-11 12:31:45 +02:00
Aron PrinsandClaude Opus 4.8 2d4df5202c nightly: file viewer, routines layout, interrupt handoffs (paperclip 69a368e)
- Document the in-app workspace file viewer and inline artifact file links (#7681)
- Refresh the Routines detail walkthrough: sub-sidebar layout, plain-English
  cron, trigger cards, run-history filters and save bar (#7848, #7858)
- Add interrupt / handoff / scoped-wake semantics to the issues guide (#7855)

Quarantined (held <24h): Kubernetes sandbox provider, env-driven gateway
routing, GPT-5.5 Codex model — see PENDING.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-11 12:31:33 +02:00
Aron Prins dd1282394c Merge branch 'main' into nightly 2026-06-11 12:21:31 +02:00
Aron Prins 471967eca1 docs(screenshots): remove orphaned execution-workspaces-list captures 2026-06-11 12:21:29 +02:00
Aron Prins 358bd63581 Merge branch 'main' into nightly 2026-06-11 12:17:49 +02:00
Aron Prins 223d48e2a7 Merge pull request #27 from paperclipai/fix/workspaces-docs-and-screenshots
docs(workspaces): fix Workspaces guide + regenerate detail screenshots
2026-06-11 12:17:23 +02:00
Aron PrinsandClaude Opus 4.8 9123a0de85 docs(workspaces): tighten accuracy after codebase re-verification
- The per-project Workspaces tab is hidden until the project has workspace
  activity (showWorkspacesTab requires summaries > 0); say so instead of
  'shows up on each project', and drop the never-shown per-project empty
  string. The reliable empty state is the company-wide 'No workspace
  activity yet.'
- Correct the surfacing rule: a primary workspace surfaces because it's the
  primary (not 'has a working directory and runtime config'); non-primary
  project workspaces need runtime services/config.
- Replace the stale 'Each entry shows' list (old table columns: mode /
  provider type / opened) with the actual ProjectWorkspaceSummaryCard fields
  (kind, name, branch, path, services, status, linked tasks, updated).
- Note plugin tabs appear alongside the base tabs (e.g. workspace-diff's
  Changes tab), not strictly after them.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-11 12:16:49 +02: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 8730be0ad0 nightly: reset to post-release baseline (base v2026.609.0)
main shipped v2026.609.0 (PR #25). Advance nightly's cumulative-diff base
to v2026.609.0, switch branch_mode back to nightly, clear the applied
manifest hash, and reset PENDING.md so the next nightly run starts from a
clean v2026.609.0 baseline.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-10 12:23:54 +02:00
Aron Prins 6791a41a3a Merge pull request #25 from paperclipai/release/v2026.609.0
Release docs for paperclip v2026.609.0
2026-06-10 12:22:24 +02:00
Aron PrinsandClaude Opus 4.8 b243dfe70d Release docs for paperclip v2026.609.0
Publish accumulated nightly drafts to main and document the new surfaces
shipped between v2026.529.0 and v2026.609.0 (130 parent commits).

New pages (gaps not covered by nightly drafts):
- docs/reference/cli/token.md — `token agent` / `token board` API-key commands
- docs/reference/cli/connect.md — interactive `connect` setup wizard
- docs/reference/api/teams-catalog.md — teams catalog REST API

Also:
- Stamp paperclip_version: v2026.609.0 on 49 release doc pages
- Register the 3 new pages in site/content.json nav
- Bump .sync-state.json base_release_tag to v2026.609.0

Verification: 49 pages checked against v2026.609.0; 11 verifier flags,
all confirmed false-positives (flagged flags/env-vars exist in parent).
Drift: 0. Reconciliation: 0.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-10 12:08:31 +02:00
Aron Prins 0d50f1424e Merge pull request #24 from paperclipai/nightly-draft/76c88e5-adapters-docker
nightly: Gemini Docker bundling + external adapter overrides (paperclip 76c88e5)
2026-06-09 13:30:55 +02:00
Aron PrinsandClaude Opus 4.8 e1568186d9 nightly: update sync state (parent 0a2230b)
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-09 12:00:29 +02:00
Aron PrinsandClaude Opus 4.8 a665c76e99 nightly: Gemini Docker bundling + external adapter overrides (paperclip 76c88e5)
- docker.md / gemini-local.md: Gemini CLI now bundled in the official
  image (GEMINI_SANDBOX=false); backfill opencode_local in bundled list
  (paperclip #7693)
- external-adapters.md: external adapters can override built-in types;
  document override + fallback lifecycle, correct stale 'cannot be
  overwritten' note (paperclip #7394)
- regenerate PENDING.md / SCREENSHOTS_PENDING.md (18 settings/adapter
  screenshots stale after instance-settings IA move, paperclip #7680)

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-09 12:00:29 +02:00
Aron PrinsandClaude Opus 4.8 cec1fda2d0 docs(cli): document company current command
`company current` exists in the CLI source
(cli/src/commands/client/company.ts) but was missing from the company
reference page. Add it to the Read Commands code block and table with a
note on how it resolves the scoped company (--company-id, context,
PAPERCLIP_COMPANY_ID, or agent credential) and that it returns the same
full record as `company get <companyId>`.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-09 11:37:49 +02:00
Aron Prins 218066834c Merge pull request #23 from paperclipai/nightly-draft/a800140-catalog-artifacts-trust
nightly: Teams Catalog, Company Artifacts, low-trust review presets (paperclip a800140)
2026-06-07 13:31:14 +02:00
Aron PrinsandClaude Opus 4.8 3b58fb017c nightly: Teams Catalog, Company Artifacts, low-trust review presets (paperclip a800140)
Three settled surfaces aged past the 24h quarantine since the last run:

- Teams Catalog (#7550): new `teams` CLI page + Team Catalog guide for the
  installable bundled/optional starter teams.
- Company Artifacts (#7621): new Artifacts guide + `GET /api/companies/{id}/artifacts`
  API section under Companies.
- Low-trust review containment / trust presets (#7530): new Administration page
  covering the `standard` / `low_trust_review` presets and quarantine-then-promote
  review flow.

Nav merged in site/content.json. PENDING.md and SCREENSHOTS_PENDING.md regenerated
(40 screenshots stale in the settled window). Phase 5.5 verification clean; drift clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-07 13:30:21 +02:00
Aron Prins 2609a47e80 Merge pull request #22 from paperclipai/nightly-draft/e78c064-catalog-routine-archive
nightly: referenced catalog skills (last30days), routine pause-suppression, company archive cascade
2026-06-06 16:53:46 +02:00
Aron PrinsandClaude Opus 4.8 44d4c5d604 nightly: referenced catalog skills (last30days), routine pause-suppression, company archive cascade
Cumulative window v2026.529.0 → e78c064 (24h-quarantined nightly cutoff).
Three user-visible surfaces newly documented this run:

- skills: app-shipped catalog now supports *referenced* entries fetched from
  an external GitHub repo pinned to a commit (CatalogSkill.source). First one
  is the research-category last30days skill. Documented in the Skills
  reference and the org Skills guide.
- routines: scheduled ticks are suppressed (recorded as skipped, no backfill)
  while the routine's project is paused.
- companies: archiving runs a cascade that pauses active agents
  (pauseReason company_archived) and cancels queued wake-ups.

All claims verified against parent code (Phase 5.5 clean). Build + link/nav
checks pass; no drift. Teams Catalog, company-artifacts page, and low-trust
review containment are quarantined (<24h) and deferred to the next run.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-06 15:56:57 +02:00
Aron Prins f78e67f361 Merge pull request #21 from paperclipai/nightly-draft/03e1e3ab-cli-handbook
nightly: full CLI reference handbook + wireframe skill + OpenAPI endpoint
2026-06-04 21:39:58 +02:00
Aron PrinsandClaude Opus 4.8 70ed497e12 nightly: full CLI reference handbook + wireframe skill + OpenAPI endpoint
CLI API-parity coverage (paperclip #6626, parent 03e1e3ab) cleared 24h
quarantine and is now eligible. Adopt the comprehensive per-command CLI
reference under Reference → CLI, replacing the single-page commands.md
monolith. Guide/runbook track deferred to a later expansion.

- Reference → CLI rebuilt to 28 per-command pages (overview, installation,
  common-options, output-and-scripting, setup, dev-environments,
  authentication, company, project, goal, issue, agent, prompt, run,
  routine, adapter, approval, activity, dashboard, cost, workspace, access,
  skills, secrets, cloud, plugin, asset, feedback).
- Retire commands.md + control-plane-commands.md → "moved" tombstones plus
  route redirects in site/redirects.json. Repoint inbound links
  (reference/skills.md, how-to/sync-to-cloud-upstream.md).
- Rewrite deferred-guide links to existing equivalents; smooth an
  installation.md example that tripped a drift false-positive.
- Document the bundled `wireframe` catalog skill (reference/skills.md,
  guides/org/skills.md).
- Add the GET /api/openapi.json endpoint to the API overview
  (server/src/routes/openapi.ts).

Verified: docs:build OK, sync:check OK (links clean, drift 0, screenshots
indexed; 2 intended tombstone orphans). Regenerated PENDING.md +
SCREENSHOTS_PENDING.md; updated .sync-state.json.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-04 21:26:13 +02:00
Aron Prins d9d749d2a2 Merge pull request #20 from paperclipai/nightly-draft/edeab22c-issue-artifacts
nightly: issue artifacts — output playback, attachment streaming, skill upload
2026-06-03 10:46:40 +02:00
Aron PrinsandClaude Opus 4.8 1a28b59fbf anchor-map: add skills-catalog watcher
Closes the gap this run surfaced: packages/skills-catalog/** was unwatched, so
new bundled catalog skills (e.g. the wireframe product skill) weren't auto-detected.

Watches catalog/**/SKILL.md + generated/catalog.json, routes to docs/reference/skills.md
and docs/guides/org/skills.md (PR tier), distinct from the agent-skills watcher which
covers the server-forced bundled skills under skills/**.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-03 10:42:23 +02:00
Aron PrinsandClaude Opus 4.8 4a7c4e64aa sync-state: nightly run through edeab22c (issue artifacts)
base_release_tag unchanged (nightly invariant). last_seen_parent_sha = master HEAD
70b1a91 (informational); applied window cutoff edeab22c after 24h quarantine.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-03 10:04:02 +02:00
Aron PrinsandClaude Opus 4.8 5f08200d05 nightly: issue artifacts — output playback, attachment streaming, skill upload
Cumulative window v2026.529.0 → parent master edeab22c (24h quarantine).
One feature cluster: agent-produced issue artifacts (video/file deliverables)
that reviewers — including cloud reviewers without workspace access — can view
and play back on the board.

- docs/reference/api/issues.md — attachment openPath/downloadPath, ?download=1
  disposition, HTTP Range (206) streaming, video/zip allowed types + inference.
- docs/reference/skills.md — bundled paperclip skill artifact-upload helper.
- docs/guides/day-to-day/issues.md — Output section + inline video / open-vs-download.

All 3 PR-tier edits verified against parent (verify-edit: 39/39 on api/issues,
0 unverified across all). docs:build + sync:check green. Drift: none.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-06-03 10:03:49 +02:00
Aron PrinsandClaude Opus 4.8 9e7a098e6c sync-state: bump base release to v2026.529.0 after release merge
Released v2026.529.0 docs to main (PR #19). Advance the cumulative-diff
base so the next nightly run diffs from this release, not v2026.525.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 19:28:03 +02:00
Aron Prins 7e14aeed6d Merge pull request #19 from paperclipai/release/v2026.529.0
Release docs for paperclip v2026.529.0
2026-05-30 19:27:21 +02:00
Aron PrinsandClaude Opus 4.8 96b0ba8a53 Refresh screenshots for v2026.529.0 and fix workspace env precedence
Recapture the 82 stale screenshots (light + dark, 1440×900 @2x) against
a release-code instance booted at v2026.529.0 (911a1e8). Registry was
already stamped at that SHA, so captured_sha is unchanged.

Verification pass against the release codebase also found one authored
claim wrong: the execution-workspace environment precedence is
issue → project → agent → instance default (project policy outranks an
agent's own default), not issue → agent → project. Corrected
docs/guides/projects-workflow/workspaces.md to match
server/src/services/execution-workspace-policy.ts.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 19:20:05 +02:00
Aron PrinsandClaude Opus 4.8 9c5aae8962 Release docs for paperclip v2026.529.0
Add the two release features quarantined from nightly, and stamp
paperclip_version on every touched page.

- Claude Local: document UI-driven live model discovery (#6953) —
  /v1/models lookup via ANTHROPIC_API_KEY, 60s cache, built-in fallback,
  Bedrock IDs, and the refresh control.
- Workspaces: document reused-workspace environment consistency and
  finalize-gated dependent wakes / interaction.accept (#6969).
- Stamp paperclip_version: v2026.529.0 on all 14 touched pages.
- Regenerate SCREENSHOTS_PENDING.md: 90/276 stale for this window.

Inherits the six features already drafted on nightly: resource
memberships (#6677), document annotations (#6733), bundled plugins in
plugin manager (#6734), skills CLI + catalog (#6782), first-admin
claim (#6755).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-05-30 19:00:46 +02:00
Aron Prins 47c8308c55 merge: main into nightly after auto-screenshots 2026-05-30 18:50:45 +02:00
Aron Prins b59ab9b6ab Merge branch 'feat/auto-screenshots' 2026-05-30 18:49:27 +02:00
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