Commit Graph
4 Commits
Author SHA1 Message Date
DottaandPaperclip 44736c9c7c fix(ui): align runner commentary with chat replies (#14716)
## Thinking Path

> - Paperclip helps people manage AI agents and their work.
> - Agent chat shows run commentary and the agent's reply in one thread.
> - The runner commentary text starts 4px left of the following reply.
> - The runner activity group omits the gutter that the reply bubble
uses.
> - This pull request gives runner commentary the same token-based
gutter.
> - Both text blocks now share one left edge.

## Linked Issues or Issue Description

**What happened?**

In agent chat, the first commentary line of a completed run starts about
4px left of the following agent reply. This is visible in the Codie
conversation.

**Expected behavior**

Runner commentary and ordinary agent reply text should have the same
left edge.

**Steps to reproduce**

1. Open an agent chat with a completed run that has commentary and an
agent reply.
2. Compare the first commentary line with the following reply at the
left edge.
3. Inspect the wrappers. Before this change,
`task-chat-phase-interstitial` has zero left padding and
`task-chat-agent-bubble` has 4px.

## What Changed

- Add the existing `px-1` spacing token to runner commentary.
- Add a regression test that compares the runner commentary gutter with
the ordinary agent reply gutter.

## Verification

- `pnpm check:token-gates`
- `pnpm --filter @paperclipai/ui exec vitest run
src/components/task-chat/TaskChatRunnerActivityGroup.test.tsx
src/components/task-chat/TaskChatTurn.test.tsx
src/components/task-chat/TaskChatBubble.test.tsx`
- `pnpm --filter @paperclipai/ui typecheck`
- `pnpm --filter @paperclipai/ui build`
- A full repository typecheck and build passed earlier on this branch.
All latest-commit CI gates passed, including the server shard after a
transient preview readiness failure was rerun.
- Browser render: runner commentary and reply paragraphs both start at
x=32px after the change.

## Risks

Low risk. This changes only the horizontal padding of runner commentary.
Long commentary lines may wrap 8px sooner. The full local test suite was
stopped after the code changed during its run; the focused UI tests and
latest-commit CI suite passed.

> I checked `ROADMAP.md`. This bug fix does not duplicate planned core
work.

## Model Used

OpenAI GPT-6 in Codex. The runtime did not expose a more specific model
ID or context window size. The agent used reasoning, shell tools, and
read-only browser inspection to diagnose the layout and verify the
change.

## 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 checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-30 09:48:41 -05:00
DottaandPaperclip 9cfa7fd2d1 fix(ui): share compact live and saved activity across runners (#13421)
## Thinking Path

> - Paperclip helps people manage AI agents and inspect their work.
> - Task threads show live activity and saved transcripts from several
runners.
> - Legacy runs used a separate activity renderer that expanded tool
cards as commands arrived.
> - A compact live row makes ongoing work easier to follow.
> - This PR shares the native runner activity group across live and
saved legacy turns.
> - Both paths now use the same labels, icon gutter, animation, and
history controls.

## Linked Issues or Issue Description

Related: Refs #13255, which introduced rolling native-runner activity
groups.

**What happened?**

During a legacy CLI run, each new command added an expanded tool card
under an activity heading. The original legacy parity story rendered a
completed turn, so it did not exercise this live path.

**Expected behavior**

Show one current activity line per commentary group. Roll that line
forward when a new activity starts. Keep tool icons aligned on the left,
use friendly labels, and show history only when expanded.

**Steps to reproduce**

1. Start a task with the Codex local adapter using the CLI engine.
2. Ask it to read two files in separate tool calls and run a test
command.
3. Watch the activity feed while the run is active, then expand its
history.

**Paperclip version or commit**

The live behavior was reproduced on
bdee5ebb21b2d09280e49c88bc329435da1b07c8. This update includes both live
and saved rendering fixes.

**Deployment mode**

Built from source with the local test-drive command and a real Codex CLI
agent.

## What Changed

- Use `TaskChatRunnerActivityGroup` for both saved legacy phases and
`TaskChatLiveTail`.
- Align the legacy Working spinner with the shared activity icon gutter.
- Cover streamed reasoning updates, successive commands, image labels,
hidden details, and explicit history expansion in tests.
- Feed raw legacy transcript events through the real adapter and live
renderer in Storybook. Add live, expanded, narrow, light, and completed
stories with the final reply preserved.

## Verification

- Passed 195 targeted tests covering the live tail, status pill, shared
activity group, native turn, and full task thread.
- Passed UI typechecking, token gates, UI build, and Storybook build
before submission.
- Observed a real Codex CLI run while it read separate files and ran
tests. The current activity stayed at one 32-pixel row without an
accumulated tool list; the spinner and activity icon centers aligned.
- Compared native and legacy Storybooks: identical rolling animation,
fixed height, persistent expansion, truncated long labels, and correct
light and completed states.
- Full repository `pnpm -r typecheck` and `pnpm build` passed after
replaying the branch on current master, including the Rust runner. The
full `pnpm test:run` suite is still running.

## Risks

- Legacy activity now starts collapsed. Users can expand each group and
each row to inspect the same transcript details.
- Live runtime request cards must retain their timeline positions.
Existing task-thread and native-runner regression tests cover this
boundary.
- No API, database, or transcript format changes.

## Model Used

- OpenAI GPT-6 through Codex for the live-path fix, tests, and browser
verification. Capabilities used: reasoning, tool use, local code
execution, and image inspection. The exact deployment ID and
context-window size are not exposed in this session.
- The original saved-turn change recorded OpenAI Codex with GPT-5.6; its
exact variant and context size were not recorded.

## 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 checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [ ] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-15 16:40:32 -05:00
DottaandPaperclip f2e2d38972 feat(ui): summarize completed runner activity groups (#13274)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - Task chat shows tool activity between agent updates.
> - Finished groups currently keep the last raw command on screen.
> - Failure totals add visual weight to normal retries.
> - This pull request summarizes finished groups with short action
phrases.
> - Users can expand each group to inspect the original activity and
output.
> - The benefit is a quieter history that still explains the work.

## Linked Issues or Issue Description

**What existing behavior does this improve?**

Runner activity in live task chat and saved history.

**Current behavior**

A finished group shows its last command or tool target. A separate
failure count remains visible after retries.

**Proposed behavior**

Show short phrases such as “Ran commands” or “Read files, ran commands”
when a commentary group finishes. Remove failure counts in both active
and finished groups. Keep original output in expandable history.

**Reason and benefit**

The activity summary describes the work without filling the conversation
with shell arguments or treating each retry as an alarm. Unsuccessful
reads and edits use “Checked files” and “Worked on files” to avoid
claiming success.

**Additional context**

Refs: #13255. This builds on the merged rolling activity groups. Related
open PR #13246 covers steering and status presentation; this change
concerns completed summaries and failure counts. The design was reviewed
in desktop and mobile Storybook previews.

## What Changed

- Add a deterministic summary shared by builtin and provider-native
activity.
- Combine repeated categories and retries, preserve category order, and
bound long summaries.
- Summarize each inactive commentary group while the next group can
still be running.
- Keep expansion, individual output disclosures, and active rolling
rows.
- Use the production component in eight review stories, including
animated desktop and mobile transitions.
- Cover retries, unsuccessful edits, unknown tools, reasoning-only
groups, saved history, and resuming work.

## Verification

- Focused summary, group, and runner-turn tests pass: 62 tests.
- Token gates pass.
- The approved Storybook previews passed browser checks for desktop,
mobile, keyboard expansion, live-to-completed transitions, and original
retry output.
- `pnpm -r typecheck`, `pnpm build`, and the production Storybook build
pass.
- The complete UI suite passes: 582 files and 6,005 tests. The full
repository test run is in progress after repairing missing symlinks in
the local PostgreSQL dependency. A native workspace suite that hit the
setup failure now passes all six tests.
- Greptile is 5/5 on the current commit, with no review threads.
Security checks pass. All individual CI jobs pass except server shard
4/5, where one plugin-worker output timing assertion failed. The
complete plugin-worker suite passes locally (83 tests). The workflow
finished. One retry of the failed shard and aggregate check was
dispatched and is queued. Squash auto-merge is enabled and remains gated
on required checks.
- Rechecked the production stories in the browser: mobile history stays
on one line, and expansion survives completion while the next group
remains active.
- Review in Storybook under Tasks → Completed activity preview. Use Next
to finish one group while the next group remains active. Open a
completed summary to inspect its history.

## Risks

- Summaries classify observed activity; “Ran commands” does not mean
exit code zero.
- Unknown tools use a generic description. Full names and outputs remain
in history.
- No API, database, or runner protocol contracts change.

> Reviewed ROADMAP.md. This is a focused improvement to the existing
task-chat presentation.

## Model Used

OpenAI GPT-6 through Codex, with reasoning, tool use, code execution,
and browser testing. The runtime does not expose a more specific model
version or context-window size.

## 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 checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [ ] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-11 22:48:25 +00:00
DottaandPaperclip ce09ea40b0 feat(ui): show one rolling runner activity per commentary group (#13255)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - Task chat shows commentary and runner activity as work proceeds.
> - The expanded activity list uses multiple text lines and an indented
rail.
> - The folded view can repeat reasoning and the current tool in
separate places.
> - This pull request shows one rolling activity between commentary
messages.
> - Users can open a group to follow its full history and inspect each
item.
> - The benefit is a compact feed with aligned icons and stable row
height.

## Linked Issues or Issue Description

**What existing behavior does this improve?**

The runner activity groups in task chat, during live work and in saved
history.

**Current behavior**

Activity is spread across a group summary, a reasoning ticker, and a
current-tool row. Expanded rows have different alignment and can span
several lines.

**Proposed behavior**

Keep one latest activity per commentary group. Roll new activities
upward. Keep each expanded history row on one line. Use neutral failure
text without an X icon. Keep the full details available by opening an
individual row.

**Additional context**

Refs: #13246. That open PR covers related folded activity, steering
timestamps, and status alignment. This change implements the separately
reviewed activity-group design, including animated replacement,
single-line expanded history, and neutral failures. It does not change
steering timestamps or status pills.

## What Changed

- Add a shared runner activity group with persistent expansion and
reduced-motion support.
- Use the group in the production runner turn and remove duplicate
narration and current-tool rows.
- Preserve commentary, plan cards, request receipts, and final-response
placement.
- Keep tool output, reasoning, research sources, file previews, and
failure details accessible.
- Render the production turn in desktop and mobile animated Storybook
fixtures.
- Add tests for animation identity, failure visibility, expansion
persistence, and timeline order.
- Validate resource link schemes and omit disclosure controls for items
with no details.

## Verification

- Focused activity, runner turn, protocol detail, and task-thread tests
pass: 161 tests.
- `pnpm check:token-gates` passes.
- Browser checks confirm a 32-pixel compact row, centered icons, and
one-line expanded rows.
- `pnpm -r typecheck` and `pnpm build` pass. The final UI build also
passes.
- Two real native Codex runs completed in an isolated local instance.
Each run created the expected file, performed separate delayed tool
calls, reported a deliberate missing-file failure, recovered, and
finished the task.
- Browser verification confirmed that the open three-row activity group
remained expanded after the second run moved into saved history. Saved
error output remained accessible without red styling or an X.
- The complete UI suite passes: 581 files and 5,979 tests.
- `pnpm --filter @paperclipai/ui build-storybook` passes for the final
production fixtures.
- Greptile rates the latest commit 5/5, with zero new comments and no
unresolved review threads. The security scan passes.
- All repository test shards pass in CI. The duplicate local `pnpm
test:run` was stopped after CI completed the full test coverage. The CI
build failed twice because the worker ran out of disk space compiling
the Rust runner tests (`No space left on device`, error 28). The build
and its aggregate verify gate remain blocked by CI capacity. GitHub
squash auto-merge is enabled and will wait for required checks to pass.

## Risks

- This changes presentation and disclosure behavior. Users open a group
to see earlier activity.
- Animation uses stable item IDs. A provider that replaces IDs can
trigger another transition.
- No API, database, or runner protocol contracts change.

> Reviewed `ROADMAP.md`. This improves an existing task-chat surface.

## Model Used

OpenAI GPT-6 through Codex, with reasoning, tool use, code execution,
and browser testing. The runtime does not expose a more specific model
version or context-window size.

## 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 checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [ ] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-11 20:06:31 +00:00