Commit Graph
2360 Commits
Author SHA1 Message Date
Dotta e63c38221d Merge origin/master into PAP-989 multi-user implementation 2026-04-14 14:25:59 -05:00
DottaandPaperclip 7f893ac4ec [codex] Harden execution reliability and heartbeat tooling (#3679)
## Thinking Path

> - Paperclip orchestrates AI agents for zero-human companies
> - Reliable execution depends on heartbeat routing, issue lifecycle
semantics, telemetry, and a fast enough local verification loop to keep
regressions visible
> - The remaining commits on this branch were mostly server/runtime
correctness fixes plus test and documentation follow-ups in that area
> - Those changes are logically separate from the UI-focused
issue-detail and workspace/navigation branches even when they touch
overlapping issue APIs
> - This pull request groups the execution reliability, heartbeat,
telemetry, and tooling changes into one standalone branch
> - The benefit is a focused review of the control-plane correctness
work, including the follow-up fix that restored the implicit
comment-reopen helpers after branch splitting

## What Changed

- Hardened issue/heartbeat execution behavior, including self-review
stage skipping, deferred mention wakes during active execution, stranded
execution recovery, active-run scoping, assignee resolution, and
blocked-to-todo wake resumption
- Reduced noisy polling/logging overhead by trimming issue run payloads,
compacting persisted run logs, silencing high-volume request logs, and
capping heartbeat-run queries in dashboard/inbox surfaces
- Expanded telemetry and status semantics with adapter/model fields on
task completion plus clearer status guidance in docs/onboarding material
- Updated test infrastructure and verification defaults with faster
route-test module isolation, cheaper default `pnpm test`, e2e isolation
from local state, and repo verification follow-ups
- Included docs/release housekeeping from the branch and added a small
follow-up commit restoring the implicit comment-reopen helpers that were
dropped during branch reconstruction

## Verification

- `pnpm vitest run
server/src/__tests__/issue-comment-reopen-routes.test.ts
server/src/__tests__/issue-telemetry-routes.test.ts`
- `pnpm vitest run server/src/__tests__/http-log-policy.test.ts
server/src/__tests__/heartbeat-run-log.test.ts
server/src/__tests__/health.test.ts`
- `server/src/__tests__/activity-service.test.ts`,
`server/src/__tests__/heartbeat-comment-wake-batching.test.ts`, and
`server/src/__tests__/heartbeat-process-recovery.test.ts` were attempted
on this host but the embedded Postgres harness reported
init-script/data-dir problems and skipped or failed to start, so they
are noted as environment-limited

## Risks

- Medium: this branch changes core issue/heartbeat routing and
reopen/wakeup behavior, so regressions would affect agent execution flow
rather than isolated UI polish
- Because it also updates verification infrastructure, reviewers should
pay attention to whether the new tests are asserting the right failure
modes and not just reshaping harness behavior

## 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)
- [ ] 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
- [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>
canary/v2026.414.0-canary.2
2026-04-14 13:34:52 -05:00
DottaandPaperclip e89076148a [codex] Improve workspace runtime and navigation ergonomics (#3680)
## Thinking Path

> - Paperclip orchestrates AI agents for zero-human companies
> - That operator experience depends not just on issue chat, but also on
how workspaces, inbox groups, and navigation state behave over
long-running sessions
> - The current branch included a separate cluster of workspace-runtime
controls, inbox grouping, sidebar ordering, and worktree lifecycle fixes
> - Those changes cross server, shared contracts, database state, and UI
navigation, but they still form one coherent operator workflow area
> - This pull request isolates the workspace/runtime and navigation
ergonomics work into one standalone branch
> - The benefit is better workspace recovery and navigation persistence
without forcing reviewers through the unrelated issue-detail/chat work

## What Changed

- Improved execution workspace and project workspace controls, request
wiring, layout, and JSON editor ergonomics
- Hardened linked worktree reuse/startup behavior and documented the
`worktree repair` flow for recovering linked worktrees safely
- Added inbox workspace grouping, mobile collapse, archive undo,
keyboard navigation, shared group-header styling, and persisted
collapsed-group behavior
- Added persistent sidebar order preferences with the supporting DB
migration, shared/server contracts, routes, services, hooks, and UI
integration
- Scoped issue-list preferences by context and added targeted UI/server
tests for workspace controls, inbox behavior, sidebar preferences, and
worktree validation

## Verification

- `pnpm vitest run
server/src/__tests__/sidebar-preferences-routes.test.ts
ui/src/pages/Inbox.test.tsx
ui/src/components/ProjectWorkspaceSummaryCard.test.tsx
ui/src/components/WorkspaceRuntimeControls.test.tsx
ui/src/api/workspace-runtime-control.test.ts`
- `server/src/__tests__/workspace-runtime.test.ts` was attempted, but
the embedded Postgres suite self-skipped/hung on this host after
reporting an init-script issue, so it is not counted as a local pass
here

## Risks

- Medium: this branch includes migration-backed preference storage plus
worktree/runtime behavior, so merge review should pay attention to state
persistence and worktree recovery semantics
- The sidebar preference migration is standalone, but it should still be
watched for conflicts if another migration lands first

## 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)
- [ ] 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
- [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>
canary/v2026.414.0-canary.1
2026-04-14 12:57:11 -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>
canary/v2026.414.0-canary.0
2026-04-14 12:50:48 -05:00
DottaandPaperclip 57558bd95c Fix assignee name overflow in issues list grid
The assignee picker button had a fixed w-[180px] width that exceeded
the grid column's minmax(6rem, 8rem) max of 128px, causing long
usernames to bleed into adjacent columns. Replace with w-full so the
button respects the grid constraint and truncates via overflow-hidden.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-14 08:22:29 -05:00
Dotta 9ff7c11e55 Add invite flow sequence diagrams 2026-04-14 08:14:40 -05:00
DottaandPaperclip 04782f17ab Reduce invite history page size from 20 to 5
The invite screen now shows only 5 invites before requiring "View more"
to load additional pages, making the initial view more compact.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-13 16:12:03 -05:00
DottaandPaperclip fe6efaad03 Add lightweight user directory endpoint and migrate UI to use it
Introduces GET /companies/:companyId/user-directory returning only active
human members with resolved name/email/image. Switches all picker and
display components (ExecutionParticipantPicker, IssueProperties,
NewIssueDialog, NewProjectDialog, Inbox) from the heavier listMembers
endpoint to the new read-only directory. Broadens company-members helper
types to accept both full member records and directory entries.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-13 15:26:48 -05:00
DottaandPaperclip 5d1ed71779 chore: add v2026.410.0 release notes for security release
## Summary

- Adds release notes for v2026.410.0 security release covering
GHSA-68qg-g8mg-6pr7
- Required before triggering the stable release workflow to publish
2026.410.0 to npm

## Context

The security advisory GHSA-68qg-g8mg-6pr7 was published on 2026-04-10
listing 2026.410.0 as the patched version, but only canary builds exist
on npm. The authz fix (PR #3315) is already merged to master. This PR
adds release notes so the stable release workflow can be triggered.

## Test plan

- Verify release notes content is accurate
- Merge, then trigger release.yml workflow_dispatch with
source_ref=master, stable_date=2026-04-10, dry_run=false
- Confirm npm view paperclipai version returns 2026.410.0

Co-authored-by: Paperclip <noreply@paperclip.ing>
canary/v2026.413.0-canary.3
2026-04-13 12:43:17 -05:00
DottaandPaperclip 76fe736e8e chore: add v2026.410.0 release notes for security release
## Summary

- Adds comprehensive release notes for `v2026.410.0`, the security
release that patches GHSA-68qg-g8mg-6pr7 (unauthenticated RCE via import
authorization bypass)
- Required before triggering the stable release workflow to publish
`2026.410.0` to npm and create the GitHub Release

## Context

The security fix (PR #3315) is already merged to master. The GHSA
advisory references `2026.410.0` as the patched version, but only canary
builds exist on npm. This PR unblocks the stable release.

## Test plan

- [x] Release notes file is valid markdown
- [ ] Merge and trigger `release.yml` workflow with `source_ref=master`,
`stable_date=2026-04-10`
- [ ] Verify `npm view paperclipai version` returns `2026.410.0`
- [ ] Verify GitHub Release `v2026.410.0` exists

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Paperclip <noreply@paperclip.ing>

Co-authored-by: Paperclip <noreply@paperclip.ing>
canary/v2026.413.0-canary.2
2026-04-13 12:43:07 -05:00
DottaandPaperclip 5ce75c3adf Resolve human user names and avatars in activity feeds
Activity feeds, issue detail, dashboard, chat thread, and live update
toasts were showing raw user IDs (e.g. "FdpsZ") or generic "Board"
for human users. Now all these surfaces resolve the user directory to
display actual names and profile images.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-13 12:35:45 -05:00
DottaandPaperclip 5c597993cd Truncate long assignee names in issues list
Add overflow-hidden to the assignee button and min-w-0 to Identity
components in the assignee picker so that long usernames are properly
truncated instead of overflowing into adjacent columns.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-13 12:19:58 -05:00
Dotta ddae5624e6 Show human assignee identities in issue tables 2026-04-13 10:55:13 -05:00
Dotta 0ea867f5ce Add human user mentions and picker options 2026-04-13 10:14:49 -05:00
Dotta 232751f1a9 Keep company alerts out of personal inbox 2026-04-13 09:53:31 -05:00
Dotta 2551a53c49 Fix reused invite refresh pending state 2026-04-13 09:23:31 -05:00
Dotta 4c146ab6e7 Map invite flow states and preserve reload status 2026-04-13 09:12:32 -05:00
Dotta 77338cb9ef Add invite UX lab page 2026-04-13 08:49:47 -05:00
Dotta 376420597f Auto-submit signed-in company invites 2026-04-13 08:45:16 -05:00
Dotta ea97334ec7 fix: isolate paginated invite history cache 2026-04-13 08:26:01 -05:00
Dotta 06a05ccee5 Update invite approval request copy 2026-04-13 08:24:55 -05:00
Dotta c981115f22 fix(ui): show requester identity in join approvals 2026-04-13 08:21:05 -05:00
DottaandPaperclip 54b1667c3d Auto-accept invite after inline auth
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-13 07:57:04 -05:00
DottaandPaperclip 089d73e2f4 Improve invite auth clarity
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-13 07:49:47 -05:00
Dotta 2a3910190f feat: paginate company invite history 2026-04-13 07:49:21 -05:00
Dotta 9604dc447e Prevent members from consuming invite links 2026-04-13 07:47:32 -05:00
Dotta d6b06788f6 Merge pull request #3542 from cryppadotta/PAP-1346-faster-issue-to-issue-links
Speed up issue-to-issue navigation
canary/v2026.413.0-canary.1
2026-04-12 21:39:27 -05:00
Dotta 6844226572 Address Greptile navigation review 2026-04-12 21:30:50 -05:00
Dotta 0cb42f49ea Fix rebased issue detail prefetch typing 2026-04-12 21:18:57 -05:00
Dotta e59047187b Reset scroll on issue detail navigation 2026-04-12 21:14:12 -05:00
Dotta 1729e41179 Speed up issue-to-issue navigation 2026-04-12 21:14:12 -05:00
Dotta 11de5ae9c9 Merge pull request #3538 from paperclipai/PAP-1355-right-now-when-agents-boot-they-re-instructed-to-call-the-api-to-checkout-the-issue-so-that-they-have-exclusive
Improve scoped wake checkout and linked worktree reuse
canary/v2026.413.0-canary.0
2026-04-12 21:08:20 -05:00
Dotta 8e82ac7e38 Handle harness checkout conflicts gracefully 2026-04-12 20:57:31 -05:00
Dotta be82a912b2 Fix signoff e2e for auto-checked out issues 2026-04-12 20:43:50 -05:00
Dotta ab5eeca94e Fix stale issue live-run state 2026-04-12 20:41:31 -05:00
Dotta 2172476e84 Fix linked worktree reuse for execution workspaces 2026-04-12 20:34:06 -05:00
Dotta 50c20eebb0 Deduplicate human join requests by requester 2026-04-11 21:19:53 -05:00
Dotta 683896abce Fix inbox approvals for new users 2026-04-11 11:34:59 -05:00
Dotta 0676224bea Tighten outsider access to board surfaces 2026-04-11 11:27:53 -05:00
Dotta 0fe666b72e Add join request badge to access sidebar 2026-04-11 11:17:07 -05:00
DottaandPaperclip b42796490b Improve invite post-join UX: show inviter name, approval URL, and auto-redirect
- Add invitedByUserName to invite summary API response
- Post-join pending state now shows who must approve and the approval page URL
- On page refresh, if user is already a company member, redirect to home

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-04-11 11:11:02 -05:00
Dotta c1bb938519 Auto-checkout scoped issue wakes in the harness 2026-04-11 10:53:28 -05:00
Dotta 38a2c91483 Fix invite logo fallback and storage checks 2026-04-11 10:44:15 -05:00
Dotta e6fd9d29db Merge remote-tracking branch 'public-gh/master' into PAP-989-multi-user-implementation-using-plan-from-pap-958
* public-gh/master: (32 commits)
  fix(dev-runner): tighten worktree env bootstrap
  fix(inbox): avoid refetching on filter-only changes
  fix(codex-local): avoid fast mode in env probe
  fix: isolate dev runner worktree env
  Broaden comment matches in issue search
  Add inbox issue search fallback
  feat(codex-local): add fast mode support
  Harden tailnet bind setup
  Fix dev runner workspace import regression
  Introduce bind presets for deployment setup
  fix: address PR 3355 review regressions
  test(ui): fix heartbeat run fixture drift
  fix: restore inbox optimistic run fixture
  fix: keep thread polish independent of quicklook routing
  fix: keep runtime UI changes self-contained
  fix: keep inbox quicklook and tests standalone
  fix: use CLI tsx entrypoint for workspace preflight
  chore: improve worktree tooling and security docs
  feat: polish issue thread markdown and references
  fix: harden heartbeat and adapter runtime workflows
  ...

# Conflicts:
#	cli/src/__tests__/worktree.test.ts
#	scripts/ensure-workspace-package-links.ts
#	server/src/__tests__/claude-local-execute.test.ts
#	server/src/__tests__/issues-service.test.ts
#	ui/src/components/Layout.tsx
2026-04-11 09:12:41 -05:00
Dotta b649bd454f Merge pull request #3383 from paperclipai/pap-1347-codex-fast-mode
feat(codex-local): add fast mode support
canary/v2026.411.0-canary.8
2026-04-11 08:45:50 -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 96637a1e09 Merge pull request #3385 from paperclipai/pap-1347-inbox-issue-search
feat(inbox): improve issue search matches
canary/v2026.411.0-canary.7
2026-04-11 08:44:59 -05:00
Dotta a5aed931ab fix(dev-runner): tighten worktree env bootstrap 2026-04-11 08:35:53 -05:00
Dotta a63e847525 fix(inbox): avoid refetching on filter-only changes 2026-04-11 08:34:17 -05:00
Dotta a7dc88941b fix(codex-local): avoid fast mode in env probe 2026-04-11 08:33:18 -05:00