Commit Graph
2204 Commits
Author SHA1 Message Date
Dotta 556a3e71d7 Merge origin/master into pap-1298-runtime-routines-followups 2026-04-10 12:41:19 -05:00
Dotta a282b5aee7 test(server): mock better auth secret helper 2026-04-10 11:56:14 -05:00
Dotta b00d52c5b6 Merge pull request #3015 from aronprins/feature/backups-configuration
feat(backups): gzip compression and tiered retention with UI controls
canary/v2026.410.0-canary.1
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
Dotta 4477ca2a7e Merge pull request #3299 from aronprins/codex/fix-ceo-instruction-relative-paths
[codex] Clarify Claude instruction sibling file base path
canary/v2026.410.0-canary.0
2026-04-10 11:54:46 -05:00
Dotta 2fa4faa18a fix(server): address Greptile auth and heartbeat findings 2026-04-10 11:49:31 -05:00
Dotta 685c0b69dc test(heartbeat): relax deferred wake batching run count 2026-04-10 11:46:09 -05:00
Dotta 38add6ebb9 fix(heartbeat): skip retries for promoted comment wakes 2026-04-10 11:39:54 -05:00
Dotta 783e9727c4 fix(agents): cancel active runs before delete 2026-04-10 11:28:12 -05:00
Dotta d82963ce87 fix(agents): clear heartbeat refs before removal 2026-04-10 11:26:22 -05:00
Dotta 47f767d4a9 fix(agents): clear heartbeat refs before removal
s
2026-04-10 11:25:53 -05:00
Dotta c3fe38f85e fix(ci): run preflight via workspace tsx 2026-04-10 11:14:50 -05:00
Dotta 32993f39f3 fix(ci): align preflight and heartbeat run fixtures 2026-04-10 11:07:00 -05:00
dotta dcb807cb2f chore(runtime): harden worktree and heartbeat flows 2026-04-10 10:11:31 -05:00
Aron Prins 724893ad5b fix claude instruction sibling path hint 2026-04-10 14:22:48 +02:00
Aron Prins 7c42345177 chore: re-trigger CI to refresh PR base SHA 2026-04-10 12:16:25 +02:00
Dotta 0e87fdbe35 Merge pull request #3222 from paperclipai/pap-1266-issue-workflow
feat(issue-ui): refine issue workflow surfaces and live updates
canary/v2026.409.0-canary.4
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 6d63a4df45 Merge pull request #3220 from paperclipai/pap-1266-routines
feat(routines): support draft routines and run-time overrides
canary/v2026.409.0-canary.3
2026-04-09 10:47:03 -05:00
dotta 3cee1f12da test(ui): wait for workspace selector in new issue dialog test 2026-04-09 10:38:21 -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 b4a58ba8a6 Merge pull request #3206 from cryppadotta/pap-1239-server-test-isolation
test(server): isolate route modules in endpoint tests
2026-04-09 09:49:37 -05:00
dotta da251e5eab Merge public/master into pap-1239-server-test-isolation 2026-04-09 09:40:44 -05:00
Dotta 264eb34f24 Merge pull request #3205 from cryppadotta/pap-1239-ui-ux
feat(ui): improve issue detail and inbox workflows
canary/v2026.409.0-canary.2
2026-04-09 09:13:51 -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
dotta b578bf1f51 Merge public-gh/master into pap-1239-ui-ux 2026-04-09 09:04:22 -05:00
Dotta 781d9dcf74 Merge pull request #3204 from cryppadotta/pap-1239-runtime-backend
feat(runtime): add issue approvals and execution workflow fixes
canary/v2026.409.0-canary.1
2026-04-09 08:55:55 -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 ce3bc329fc test(ui): align inbox badge fixture with dismissal state 2026-04-09 07:07:16 -05:00
dotta 11c3eee66b test(server): align isolated route specs with current behavior 2026-04-09 07:07:08 -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 fe21ab324b test(server): isolate route modules in endpoint tests 2026-04-09 06:25:41 -05:00
dotta 327eadb45c fix(ui): harden issue comment editor sync 2026-04-09 06:23:58 -05:00
dotta 996c7eb727 Disable inbox nesting on mobile 2026-04-09 06:23:58 -05:00
dotta 9e8cd28f81 Speed up issue detail comments and refreshes 2026-04-09 06:23:58 -05:00
dotta a4b05d8831 Guard issue chat against assistant-ui crashes 2026-04-09 06:21:14 -05:00
dotta de1cd5858d Add explicit review start action in issue sidebar 2026-04-09 06:21:14 -05:00
dotta efc1e336b0 Improve issue detail load stability 2026-04-09 06:21:14 -05:00
dotta d82468d6e5 Keep interrupted runs stable in issue chat 2026-04-09 06:18:27 -05:00
dottaandPaperclip 2ebbad6561 Add breathing room when focusing comment composer
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 06:18:27 -05:00
dotta f44c951a22 Make issue chat composer inline again 2026-04-09 06:18:27 -05:00
dottaandPaperclip e15b5412ec Prevent g c from leaking into global shortcuts
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 06:18:27 -05:00
dotta ba5cb34bed Tighten issue chat composer height cap 2026-04-09 06:18:27 -05:00
dotta cbc237311f Fix interrupted issue chat rerender 2026-04-09 06:18:27 -05:00
dottaandPaperclip 1079f21ac4 Add issue detail shortcut for comment composer
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-09 06:18:27 -05:00
dotta 15b0f11275 Keep issue chat composer visible while typing 2026-04-09 06:18:27 -05:00