paperclipai/paperclip · Weekly · Jun 29, 2026 - Jul 05, 2026

Paperclip Weekly #12: Plan-review wakes, sandbox custom images, ⌘K project navigation, and more

Commits summarized
54
Period
Jun 29 - Jul 05, 2026
Published
Jul 06, 2026

Paperclip Weekly #12: Plan-review wakes, sandbox custom images, ⌘K project navigation, and more

Repository: paperclipai/paperclip

Period: 2026-06-29 – 2026-07-05

Cadence: Weekly

Who should read this: Operators running Paperclip agents in sandboxed environments, developers building on the adapter layer, and anyone tuning agent plan-review workflows, CI speed, or the ⌘K command palette. The week's 54 commits include three cross-cutting feature additions and several focused fixes.

🧠 Smarter plan-review agent wakes

Commit: 5e3d6e36 — Dotta

When an agent is woken after a plan comment, inline annotation, or request-confirmation decision, it previously lacked enough inline context to act on the specific feedback — often falling back to broad refetches of issue history.

What changed: Wake payloads and heartbeat context now include bounded plan-review context: open plan annotation threads, recent annotation comments, truncation metadata, and plan-confirmation interaction targets/results. The adapter wake prompt renders this information directly so agents see the relevant feedback immediately.

  • New shared PlanReviewContext types for annotation threads, comments, interaction targets, and continuation results.
  • Server-side assembly with per-thread, per-comment, and total-body size limits.
  • Resolved annotation threads are intentionally excluded to keep wake payloads focused on feedback still needing action.
  • Regression tests cover scoped context assembly, wake prompt rendering, annotation filtering, and safe standard-mode annotation wakes.

Aligns with roadmap areas for Agent Reviews and Approvals, Deep Planning, and Enforced Outcomes.

🖼️ Reusable sandbox custom images

Commit: 8d9f9fd2 — Devin Foley

Sandboxed agents previously had no shared contract for capturing and reusing prepared runtime state — operators had to rebuild tools, credentials, and dependencies for every lease.

What changed: A full provider-level custom-image capability across the provider contract, server runtime, and board UI.

  • Provider contract for setup/capture lifecycle with image metadata, labels, and status transitions.
  • Server-side setup, capture, deletion, and testing flows with dedicated routes and service logic.
  • Daytona and fake-provider implementations with expanded contract coverage.
  • Board UI controls for creating, testing, selecting, and deleting custom images.
  • Probe and sandbox-copy flows updated to align with pre-authenticated and custom-image environments.
  • Expanded contract test coverage across server routes, service layer, and provider fakes.

🔧 Fixes

Fix sandboxed Claude and Codex probe behavior

Commit: 0c2ec7de — Devin Foley

Sandbox probes for claude_local and codex_local adapters could diverge from real runtime behavior — surfacing misleading errors, relying on host-only state, or uploading excessive Codex home data.

  • Claude sandbox probes now materialize the same Paperclip-managed config seed path used by sandbox execution and preserve sandbox-local credentials.
  • Improved hello-probe diagnostics surface the final error instead of stream init events.
  • Codex probes upload only minimal auth/config files instead of the full managed CODEX_HOME.
  • Host-local session/shell state excluded from sandbox runtime home uploads.
  • Codex local default model switched away from the unsupported gpt-5.3-codex option.
  • Regression coverage for Claude parsing/probe paths and Codex adapter metadata/argument/probe behavior.

Fix active heartbeat run reaping across service instances

Commit: f019f54b — Devin Foley

When routes and scheduler paths constructed separate heartbeatService() instances in the same process, the orphan reaper could mark an actively executing run as process_lost — particularly affecting remote/sandbox adapters that may not persist local PID metadata.

Fixed: Active adapter execution tracking moved from per-instance closure to shared module-level process state. Added regression test proving cross-instance reaping skips live runs.

Fix stale watchdog state in Issue Properties pane

Commit: 37c097a4 — Dotta

Watchdog configuration changes made from the Issue Properties pane could leave stale state visible until a later refetch.

  • Saved watchdog summaries are written directly into cached issue detail data after upsert/delete mutations.
  • Watchdog fields included in buildIssuePropertiesPanelKey so configuration changes invalidate memoized state.

Fix stale server info debug metadata

Commit: a7a73d5b — Devin Foley

The experimental server-info debug view (behind enableServerInfoDebugView) could show stale health-query data and freeze commit metadata at process boot.

  • Health query refetches when the drawer opens and polls every 2s while active.
  • Git HEAD refreshed through a short TTL cache instead of freezing at module boot.
  • New serverInfo.git.localChanges field reports staged, unstaged, and untracked counts (no paths). "Checkout state" row renders clean/dirty/unavailable copy.

Fix markdown contrast on accent chat bubbles

Commit: 4a2447da — Aron Prins

Shared .paperclip-markdown rules forced var(--foreground) for body text, which was too dark on the saturated blue current-user chat bubble.

Fixed: New .paperclip-markdown-on-accent class with explicit color overrides for body text, list markers, headings, links, blockquotes, and inline code on accent backgrounds. Applied only to current-user issue chat messages; neutral surfaces unchanged.

✨ Features

Unify issue media attachment gallery

Commit: b4fccaa8 — Dotta

Media attachments were handled through separate gallery entry points across issue detail pages and run output cards, creating an inconsistent viewing experience.

What changed: A unified gallery path shared across issue attachments, output cards, and issue detail rendering. Includes image gallery modal coverage, keyboard navigation, and regression tests. Primary video output actions are preserved alongside gallery browsing.

Add pipeline automation title templates

Commit: 3e31bf09 — Dotta

Pipeline-created issues previously lacked configurable titles, making automated output harder to scan.

What changed: New issueTitleTemplate field through shared contracts, server persistence, API routes, and the pipeline settings UI. Title-template rendering applied when pipeline automations create issue work. Cursor restoration moved into a layout effect for reliable token editing.

Project typeahead in ⌘K command palette

Commit: ef6061a5 — scotttong

Projects were ranked below tasks in the ⌘K palette, so typing a project name would surface mostly tasks above the fold and bury matching projects.

Fixed: Client-side project matching (exact → prefix → substring → description → fuzzy-subsequence ranking, capped at 5) promotes matching projects into a dedicated "Projects" group above Tasks. Task cap reduced from 10 → 6 when projects are promoted. Project name span fixed so it remains visible in the typeahead row.

⚡ Build & CI

Drop redundant tsc from UI build, saving ~46s per CI run

Commit: b61c2852 — Devin Foley

The ui package ran tsc -b (~46s) before vite build (~20s) in the slowest CI job (Canary Dry Run, ~4m). Since tsconfig.json sets noEmit: true, the tsc pass produced no artifacts — it was a pure type-check running on the build critical path.

Fixed: ui/build changed from tsc -b && vite build to vite build. Type coverage is preserved by the existing parallel Typecheck job (typecheck:build-gaps), which automatically type-checks any workspace whose build script omits tsc.

Week in numbers

Metric Value
Total commits 54
Files changed ~8,500 lines across 130+ files
Contributors 4 (Dotta, Devin Foley, Aron Prins, scotttong)
Feature additions 2 (sandbox custom images, pipeline title templates)
UI improvements 3 (media gallery unification, ⌘K project ranking, accent markdown)
Bug fixes 4 (heartbeat reaping, watchdog cache, server info metadata, sandbox probes)
Build/CI 1 (UI type-check off critical path)

Repository updates

Follow future updates

Get generated paperclipai/paperclip development summaries by email, or follow the weekly and monthly RSS feeds.

Sign in to subscribe by email. RSS feeds are public.

Sign in to subscribe