Commit Graph
792 Commits
Author SHA1 Message Date
Dotta 27b7d05f32 Merge public-gh/master into pap-1469-exec-reliability 2026-04-14 13:12:58 -05:00
DottaandPaperclip 6e6f538630 [codex] Improve issue detail and issue-list UX (#3678)
## Thinking Path

> - Paperclip orchestrates AI agents for zero-human companies
> - A core part of that is the operator experience around reading issue
state, agent chat, and sub-task structure
> - The current branch had a long run of issue-detail and issue-list UX
fixes that all improve how humans follow and steer active work
> - Those changes mostly live in the UI/chat surface and should be
reviewed together instead of mixed with workspace/runtime work
> - This pull request packages the issue-detail, chat, markdown, and
sub-issue list improvements into one standalone change
> - The benefit is a cleaner, less jumpy, more reliable issue workflow
on desktop and mobile without coupling it to unrelated server/runtime
refactors

## What Changed

- Stabilized issue chat runtime wiring, optimistic comment handling,
queued-comment cancellation, and composer anchoring during live updates
- Fixed several issue-detail rendering and navigation regressions
including placeholder bleed, local polling scope, mobile inbox-to-issue
transitions, and visible refresh resets
- Improved markdown and rich-content handling with advisory image
normalization, editor fallback behavior, touch mention recovery, and
`issue:` quicklook links
- Refined sub-issue behavior with parent-derived defaults, current-user
inheritance fixes, empty-state cleanup, and a reusable issue-list
presentation for sub-issues
- Added targeted UI tests for the new issue-detail, chat scroll/message,
placeholder-data, markdown, and issue-list behaviors

## Verification

- `pnpm vitest run ui/src/components/IssueChatThread.test.tsx
ui/src/components/MarkdownEditor.test.tsx
ui/src/components/IssuesList.test.tsx
ui/src/context/LiveUpdatesProvider.test.tsx
ui/src/lib/issue-chat-messages.test.ts
ui/src/lib/issue-chat-scroll.test.ts
ui/src/lib/issue-detail-subissues.test.ts
ui/src/lib/query-placeholder-data.test.tsx
ui/src/hooks/usePaperclipIssueRuntime.test.tsx`

## Risks

- Medium: this branch touches the highest-traffic issue-detail UI paths,
so regressions would show up as chat/thread or sub-issue UX glitches
- The changes are UI-heavy and would benefit from reviewer screenshots
or a quick manual browser pass before merge

## Model Used

- OpenAI Codex coding agent (GPT-5-class runtime in Codex CLI; exact
deployed model ID is not exposed in this environment), reasoning
enabled, tool use and local code execution enabled

## 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
- [ ] If this change affects the UI, I have included before/after
screenshots
- [ ] 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-14 12:50:48 -05:00
Dotta 2f5eb7e74b test(server): refresh issue wake and workspace config mocks 2026-04-14 12:19:20 -05:00
Dotta 05e1cd22a8 fix(server): restore heartbeat activity logging import 2026-04-14 12:10:15 -05:00
Dotta 21784574db fix(server): restore implicit comment reopen helpers 2026-04-14 12:01:23 -05:00
Dotta c3fe756dbb test(server): isolate route module state between cases 2026-04-14 11:54:52 -05:00
Dotta d0af94b4d6 fix(server): preserve issue labels and wake resumed assignees 2026-04-14 11:54:44 -05:00
Dotta 0c3120d372 fix(heartbeat): compact run logs and trim polling noise 2026-04-14 11:54:44 -05:00
Dotta 8020f551ca fix: defer mentioned-agent wakes behind issue execution 2026-04-14 11:54:11 -05:00
DottaandPaperclip 5a698b0446 feat(telemetry): emit adapter_type and model on agent.task_completed
The telemetry backend already retains these dimensions (d36ddc1) but
the app was not sending them. Now trackAgentTaskCompleted forwards
adapterType from the agent record and model from adapterConfig when
available, so completions-per-model and completions-per-adapter
charts will populate as data flows in.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-14 11:53:57 -05:00
Dotta 1ab9cd8dfe fix: avoid vite html transform retention 2026-04-14 11:53:57 -05:00
DottaandPaperclip c32b56398e Harden issue assignee resolution
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-14 11:53:57 -05:00
DottaandPaperclip d6308bd3ef Clarify Paperclip status guidance
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-14 11:52:57 -05:00
DottaandPaperclip 07c2ea3421 Trim issue run polling payloads
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-14 11:52:57 -05:00
Dotta fac2f226c5 Recover stranded assigned issue execution 2026-04-14 11:52:57 -05:00
Dotta d330076bb2 fix: bypass repeated vite html transforms in dev 2026-04-14 11:52:57 -05:00
Dotta 2e7db9e202 Fix issue active run scoping 2026-04-14 11:52:57 -05:00
Dotta e16beed78e fix: skip auth session lookup on non-api requests 2026-04-14 11:52:57 -05:00
Dotta 26bab3b168 Trim module reloads in targeted server tests 2026-04-14 11:52:57 -05:00
Dotta 367065a3d7 Auto-enable mentioned skills for heartbeat runs 2026-04-14 11:52:57 -05:00
Dotta 41a3cd9d75 Reduce Vitest overhead in server route tests 2026-04-14 11:52:57 -05:00
Dotta 9571d7b153 Speed up repeated server route test imports 2026-04-14 11:52:18 -05:00
Dotta 7e0fff8e3c Fix repo-wide verification regressions 2026-04-14 11:52:18 -05:00
Dotta 7d22097573 fix(server): reduce noisy request logging 2026-04-14 11:52:18 -05:00
Dotta 45af343687 Skip self-review-only execution stages 2026-04-14 11:52:18 -05:00
Dotta 8e82ac7e38 Handle harness checkout conflicts gracefully 2026-04-12 20:57:31 -05:00
Dotta 2172476e84 Fix linked worktree reuse for execution workspaces 2026-04-12 20:34:06 -05:00
Dotta c1bb938519 Auto-checkout scoped issue wakes in the harness 2026-04-11 10:53:28 -05:00
Dotta a692e37f3e Merge pull request #3386 from paperclipai/pap-1347-dev-runner-worktree-env
fix: isolate dev runner worktree env
2026-04-11 08:45:16 -05:00
Dotta a5aed931ab fix(dev-runner): tighten worktree env bootstrap 2026-04-11 08:35:53 -05:00
Dotta b6115424b1 fix: isolate dev runner worktree env 2026-04-11 08:27:25 -05:00
Dotta 1f78e55072 Broaden comment matches in issue search 2026-04-11 08:26:09 -05:00
Dotta a77206812e Harden tailnet bind setup 2026-04-11 07:13:41 -05:00
dottaandPaperclip 2a84e53c1b Introduce bind presets for deployment setup
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-11 07:09:07 -05:00
Dotta 45ebecab5a Merge pull request #3356 from cryppadotta/pap-1331-inbox-ux
feat: polish inbox and issue list workflows
2026-04-11 06:35:59 -05:00
Dotta c566a9236c fix: harden heartbeat and adapter runtime workflows 2026-04-10 22:26:21 -05:00
Dotta dab95740be feat: polish inbox and issue list workflows 2026-04-10 22:26:21 -05:00
Dotta b00d52c5b6 Merge pull request #3015 from aronprins/feature/backups-configuration
feat(backups): gzip compression and tiered retention with UI controls
2026-04-10 11:56:12 -05:00
DottaandForgotten ac664df8e4 fix(authz): scope import, approvals, activity, and heartbeat routes (#3315)
## Thinking Path

> - Paperclip orchestrates AI agents and company-scoped control-plane
actions for zero-human companies.
> - This change touches the server authz boundary around company
portability, approvals, activity, and heartbeat-run operations.
> - The vulnerability was that board-authenticated callers could cross
company boundaries or create new companies through import paths without
the same authorization checks enforced elsewhere.
> - Once that gap existed, an attacker could chain it into higher-impact
behavior through agent execution paths.
> - The fix needed to harden every confirmed authorization gap in the
reported chain, not just the first route that exposed it.
> - This pull request adds the missing instance-admin and company-access
checks and adds regression tests for each affected route.
> - The benefit is that cross-company actions and new-company import
flows now follow the same control-plane authorization rules as the rest
of the product.

## What Changed

- Required instance-admin access for `new_company` import preview/apply
flows in `server/src/routes/companies.ts`.
- Required company access before approval decision routes in
`server/src/routes/approvals.ts`.
- Required company access for activity creation and heartbeat-run issue
listing in `server/src/routes/activity.ts`.
- Required company access before heartbeat cancellation in
`server/src/routes/agents.ts`.
- Added regression coverage in the corresponding server route tests.

## Verification

- `pnpm --filter @paperclipai/server exec vitest run
src/__tests__/company-portability-routes.test.ts
src/__tests__/approval-routes-idempotency.test.ts
src/__tests__/activity-routes.test.ts
src/__tests__/agent-permissions-routes.test.ts`
- `pnpm --filter @paperclipai/server typecheck`
- Prior verification on the original security patch branch also included
`pnpm build`.

## Risks

- Low code risk: the change is narrow and only adds missing
authorization gates to existing routes.
- Operational risk: the advisory is already public, so this PR should be
merged quickly to minimize the public unpatched window.
- Residual product risk remains around open signup / bootstrap defaults,
which was intentionally left out of this patch because the current
first-user onboarding flow depends on it.

## Model Used

- OpenAI GPT-5 Codex coding agent with tool use and local code execution
in the Codex CLI environment.

## 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
- [ ] If this change affects the UI, I have included before/after
screenshots
- [ ] 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: Forgotten <forgottenrunes@protonmail.com>
2026-04-10 11:55:27 -05:00
Aron Prins 724893ad5b fix claude instruction sibling path hint 2026-04-10 14:22:48 +02:00
Dotta 0e87fdbe35 Merge pull request #3222 from paperclipai/pap-1266-issue-workflow
feat(issue-ui): refine issue workflow surfaces and live updates
2026-04-09 14:52:16 -05:00
dotta 4077ccd343 Fix signoff stage access and comment wake retries 2026-04-09 14:48:12 -05:00
dotta 03dff1a29a Refine issue workflow surfaces and live updates 2026-04-09 10:26:17 -05:00
dotta 5d021583be Add draft routine defaults and run-time overrides 2026-04-09 10:19:52 -05:00
dotta da251e5eab Merge public/master into pap-1239-server-test-isolation 2026-04-09 09:40:44 -05:00
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
dottaandPaperclip c7bf2661c9 Remove workspace link package preflight hooks
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 08:35:41 -05:00
dottaandPaperclip 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 11c3eee66b test(server): align isolated route specs with current behavior 2026-04-09 07:07:08 -05:00