Commit graph

2128 commits

Author SHA1 Message Date
Dotta
0191fabdc6
Merge pull request #3203 from cryppadotta/pap-1239-tooling-docs
chore(dev): refresh worktree tooling and contributor docs
2026-04-09 09:11:52 -05:00
Dotta
781d9dcf74
Merge pull request #3204 from cryppadotta/pap-1239-runtime-backend
feat(runtime): add issue approvals and execution workflow fixes
2026-04-09 08:55:55 -05:00
dotta
c7bf2661c9 Remove workspace link package preflight hooks
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 08:35:41 -05:00
dotta
d607ca0089 Scope workspace link preflight to linked worktrees
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 08:19:19 -05:00
dotta
61ed4ef90c fix(server): reject non-participant stage mutations 2026-04-09 07:29:56 -05:00
dotta
0ed3f56935 fix(ci): run workspace preflight through server toolchain 2026-04-09 07:07:08 -05:00
dotta
1ac1dbcb3e fix(ui): repair issue detail split regressions 2026-04-09 07:07:08 -05:00
dotta
27ec1e0c8b Fix execution policy edits on in-review issues 2026-04-09 06:16:41 -05:00
dotta
26d4cabb2e Persist heartbeat child pid before stdin handoff 2026-04-09 06:16:41 -05:00
dotta
3baebee2df Track blocker and review activity events 2026-04-09 06:16:41 -05:00
dotta
8894520ed0 comment wake batching test 2026-04-09 06:16:05 -05:00
dotta
ec75cabcd8 Enforce execution-policy stage handoffs 2026-04-09 06:16:05 -05:00
dotta
9eaf72ab31 Fix Codex tool-use transcript completion 2026-04-09 06:16:05 -05:00
dotta
844b061267 Disable timer heartbeats by default for new agents 2026-04-09 06:16:05 -05:00
dotta
5640d29ab0 Persist non-issue inbox dismissals 2026-04-09 06:16:05 -05:00
dotta
1de5fb9316 Support routine variables in titles 2026-04-09 06:16:05 -05:00
dotta
372421ef0b Add generic issue-linked board approvals
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 06:16:05 -05:00
dotta
8e88577371 chore(dev): preflight workspace links and simplify worktree helpers 2026-04-09 06:14:12 -05:00
dotta
b1e9215375 docs: add browser process cleanup plan 2026-04-09 06:14:12 -05:00
dotta
0d270655ab Clarify repo plan docs vs issue plan documents 2026-04-09 06:14:12 -05:00
dotta
5758aba91e docs: add agent-os follow-up plan 2026-04-09 06:14:12 -05:00
dotta
482dac7097 docs: add agent-os technical report 2026-04-09 06:14:12 -05:00
dotta
0937f07c79 Remove standalone issue recovery plan doc 2026-04-09 06:14:12 -05:00
dotta
d00860b12a Add in-progress issue recovery plan 2026-04-09 06:14:12 -05:00
dotta
4e20279305 fix(skill): add scoped-wake fast path to skip full heartbeat on comment wakes
When an agent is woken by a comment (Resume Delta or Wake Payload), the
skill now explicitly instructs it to skip Steps 1-4 (identity, approvals,
inbox, pick work) and go directly to checkout. This prevents agents from
wastefully fetching their full assignment list and announcing "checking my
paperclip tasks" when they already know exactly which issue to work on.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 06:14:12 -05:00
dotta
4bd62471f7 kill chrome test servers too 2026-04-09 06:14:12 -05:00
dotta
56ee63bfd0 docs: add issue detail speed inventory plan 2026-04-09 06:14:12 -05:00
dotta
87db949d3f docs: survey pi and pi-mono hook surfaces 2026-04-09 06:14:12 -05:00
dotta
735c591bad docs: add manual mcp-server publish steps
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 06:14:12 -05:00
dotta
46892ded18 Add worktree reseed command
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 06:14:12 -05:00
dotta
9f9a8cfa25 skills: add prcheckloop CI remediation loop 2026-04-09 06:14:12 -05:00
Devin Foley
3264f9c1f6
Fix typing lag in long comment threads (PAPA-63) (#3163)
## Thinking Path

> - Paperclip orchestrates AI agents for zero-human companies
> - The issue detail page displays comment threads with rich timeline
rendering
> - Long threads (100+ items) cause severe typing lag in the comment
composer because every keystroke re-renders the entire timeline
> - CDP tracing confirmed 110ms avg key→paint latency and 60 long tasks
blocking the main thread for 3.7s total
> - This pull request memoizes the timeline, stabilizes callback props,
debounces editor observers, and reduces idle polling frequency
> - The benefit is responsive typing (21ms avg, 5.3× faster) even on
threads with 100+ timeline items

## What Changed

- **CommentThread.tsx**: Memoize `TimelineList` with `useMemo` so typing
state changes don't re-render 143 timeline items; extract
`handleFeedbackVote` to `useCallback`; added missing deps
(`pendingApprovalAction`, `onApproveApproval`, `onRejectApproval`) to
useMemo array
- **IssueDetail.tsx**: Extract inline callbacks (`handleCommentAdd`,
`handleCommentVote`, `handleCommentImageUpload`,
`handleCommentAttachImage`, `handleInterruptQueued`) to `useCallback`
with `.mutateAsync` deps (not full mutation objects) for stable
references; add conditional polling intervals (3s active / 30s idle) for
`liveRuns`, `activeRun`, `linkedRuns`, and timeline queries
- **MarkdownEditor.tsx**: Debounce `MutationObserver` and
`selectionchange` handlers via `requestAnimationFrame` coalescing
- **LiveRunWidget.tsx**: Accept optional `liveRunsData` and
`activeRunData` props to reuse parent-fetched data instead of duplicate
polling

## Verification

- Navigated to [IP address]:3105/PAPA/issues/PAPA-32 (thread with 100+
items)
- Typed in comment composer — lag eliminated, characters appear
instantly
- CDP trace test script (`test-typing-lag.mjs`) confirmed: avg 21ms
key→paint (was 110ms), 5 long tasks (was 60), 0.5s blocking (was 3.7s)
- Ran `pnpm test:run` locally — all tests pass

## Risks

- Low risk. All changes are additive memoization and callback
stabilization — no behavioral changes. Polling intervals are only
reduced for idle state; active runs still poll at 3–5s.

## Model Used

- Claude Opus 4.6 (`claude-opus-4-6`) via Claude Code CLI, with tool use
and extended context

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] If this change affects the UI, I have included before/after
screenshots
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-04-08 17:54:03 -07:00
Dotta
642188f900
Merge pull request #3124 from cleanunicorn/fix/better-auth-jwt-secret
fix: remove hardcoded JWT secret fallback from auth init
2026-04-08 11:12:31 -05:00
Daniel Luca
b7a7dacfa3 fix: remove hardcoded JWT secret fallback from createBetterAuthInstance 2026-04-08 17:51:21 +03:00
github-actions[bot]
316790ea0a
chore(lockfile): refresh pnpm-lock.yaml (#3109)
Auto-generated lockfile refresh after dependencies changed on master.
This PR only updates pnpm-lock.yaml.

Co-authored-by: lockfile-bot <lockfile-bot@users.noreply.github.com>
2026-04-08 07:07:49 -05:00
Dotta
8367c5f406
Merge pull request #2949 from Lempkey/fix/skip-system-prompt-on-resume
fix: skip --append-system-prompt-file on resumed claude sessions
2026-04-08 07:06:58 -05:00
dotta
0ff262ca0f fix: preserve claude instructions on resume fallback 2026-04-08 06:57:21 -05:00
lempkey
fa3cbc7fdb chore: trigger Greptile re-review 2026-04-08 06:57:21 -05:00
lempkey
e3804f792d fix: gate instructions file I/O and commandNotes on fresh sessions only
On resumed sessions, skipping --append-system-prompt-file (the original
fix) left two secondary issues:
- commandNotes still claimed the flag was injected, producing misleading
  onMeta logs on every resumed heartbeat
- The instructions file was still read from disk and a combined temp file
  written on every resume, even though effectiveInstructionsFilePath was
  never consumed

Hoist canResumeSession before the I/O block and gate both the disk
operations and commandNotes construction on !canResumeSession / !sessionId.

Adds three regression tests: commandNotes is populated on fresh sessions,
empty on resume; and no agent-instructions.md is written on resume.
2026-04-08 06:57:21 -05:00
lempkey
3cfbc350a0 fix: skip --append-system-prompt-file on resumed claude sessions
On resumed sessions the agent instructions are already present in the
session cache. Unconditionally passing --append-system-prompt-file
re-injects 5-10K redundant tokens per heartbeat and may be rejected by
the Claude CLI when combined with --resume.

Guard the flag behind `!resumeSessionId` so it is only appended on
fresh session starts.

Fixes: #2848
2026-04-08 06:57:21 -05:00
Dotta
667d5a7384
Merge pull request #3079 from paperclipai/PAP-1132-assistant-ui-pap-1131-make-issues-comments-be-like-a-chat
Polish issue chat UX and add worktree reseed
2026-04-08 06:10:04 -05:00
dotta
950ea065ae Reuse chat-style run feed on dashboard
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-08 06:02:34 -05:00
dotta
b5e177df7e Address greptile review feedback 2026-04-08 06:02:34 -05:00
dotta
81b96c6021 Update transcript message expectations 2026-04-08 06:02:34 -05:00
dotta
fe96a2f976 Fix rebased issue detail chat props 2026-04-08 06:02:34 -05:00
dotta
92f142f7f8 Polish issue chat transcript presentation 2026-04-08 06:02:34 -05:00
dotta
34589ad457 Add worktree reseed command 2026-04-08 06:02:34 -05:00
dotta
7dd3661467 Tweak issue chat run action
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-08 06:02:34 -05:00
dotta
e09dfb1a2c Reorder action bar icons and add relative date formatting
Action bar for agent messages is now: [copy] [thumbs up] [thumbs down] [date] [three dots].
Date shows relative time (e.g. "2h ago") if < 1 week old, otherwise short date (e.g. "Apr 6").
Hovering the date shows full timestamp tooltip. Date links to the comment anchor.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-08 06:02:34 -05:00
dotta
a57f6f48b4 Move date/menu to action bar and fix activity label sizing
- Agent comment header now only shows name (+ running badge)
- Date, copy, thumbs up/down, and three-dots menu all in action bar
- Activity event STATUS/ASSIGNEE labels changed from text-[9px] to
  text-xs to match value font size

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-08 06:02:34 -05:00