Skip to content

fix(webchat): paginate tool-heavy chat history#87111

Open
BunsDev wants to merge 2 commits into
mainfrom
meow/webchat-history-pagination
Open

fix(webchat): paginate tool-heavy chat history#87111
BunsDev wants to merge 2 commits into
mainfrom
meow/webchat-history-pagination

Conversation

@BunsDev

@BunsDev BunsDev commented May 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Rebuilt this PR onto current origin/main as one clean WebChat/Gateway pagination commit.
  • Adds additive chat.history cursor pagination with beforeSeq, hasMore, nextBeforeSeq, oldestSeq, and newestSeq.
  • Pages bounded, display-normalized local transcript history so hidden/tool-only traffic does not consume the visible page size.
  • Keeps Claude CLI imported history first-page only; local transcript cursor metadata remains tied to real __openclaw.seq values.
  • Adds the WebChat Load older messages control with loading/disabled state, prepend/dedupe behavior, and scroll-position preservation.
  • Updates generated protocol models, protocol/WebChat docs, focused tests, and the Control UI mock dev scenario.

Release note: WebChat can load older transcript pages in tool-heavy Codex sessions without unbounded history payloads.

Scope cleanup

  • Removed the stale extensions/diffs/assets/viewer-runtime.js generated-asset drift by rebuilding from current origin/main.
  • Kept src/flows/doctor-core-checks.runtime.ts and other unrelated mainline changes untouched.
  • Dropped unrelated DeepInfra, scripts, agents, doctor, package inventory, and formatting-only churn from the earlier dirty branch state.

Real behavior proof

Behavior addressed: WebChat no longer strands users with only 1-2 useful turns when tool-heavy transcript rows fill the bounded recent history slice.

Real environment tested: Local Codex worktree at f521658dc573c80495ed52ebf8502dba2b77c0fa; Control UI mock dev server at http://127.0.0.1:5187/chat.

Exact steps or command run after this patch:

  • node --import tsx scripts/protocol-gen.ts && node --import tsx scripts/protocol-gen-swift.ts && git diff --check
  • node_modules/.bin/oxlint src/gateway/server-methods/chat.ts src/gateway/session-utils.fs.ts ui/src/ui/controllers/chat.ts ui/src/ui/chat/build-chat-items.ts scripts/control-ui-mock-dev.ts src/gateway/server.chat.gateway-server-chat-b.test.ts src/gateway/session-utils.fs.test.ts ui/src/ui/controllers/chat.test.ts ui/src/ui/chat/build-chat-items.test.ts ui/src/ui/e2e/chat-flow.e2e.test.ts --config .oxlintrc.json
  • node scripts/run-vitest.mjs src/gateway/session-utils.fs.test.ts src/gateway/protocol/index.test.ts ui/src/ui/controllers/chat.test.ts ui/src/ui/views/chat.test.ts ui/src/ui/chat/build-chat-items.test.ts
  • node scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/ui/e2e/chat-flow.e2e.test.ts
  • .agents/skills/autoreview/scripts/autoreview --mode local
  • node --import tsx scripts/control-ui-mock-dev.ts --port 5187, then Playwright opened /chat, clicked Load older messages twice, and checked the final page state.

Evidence after fix:

  • Focused Vitest shard: 8 files, 451 tests passed.
  • Mocked browser E2E: 1 file, 2 tests passed; verifies the older turn appears and the second chat.history request includes beforeSeq.
  • Protocol generation: clean after adding the shared Swift beforeSeq model output.
  • Direct oxlint over touched files: clean.
  • git diff --check: clean.
  • Autoreview: clean, no accepted/actionable findings.
  • Browser proof: after two clicks, oldest page 01, middle page 01, and recent page 01 were visible together; Load older messages button count was 0 once hasMore=false.

Observed result after fix:

  • Recent history renders immediately.
  • Load older messages appears while older transcript pages exist.
  • Clicking it prepends older user/assistant turns and preserves the current scroll position instead of jumping to the bottom.
  • Repeated clicks stop cleanly when the server returns hasMore=false.
  • Tool-heavy hidden/runtime rows remain bounded and do not consume the requested visible page size.

What was not tested:

  • Full broad Crabbox/Testbox validation was not completed in this pass.
  • The combined Gateway shard was attempted locally but blocked by the linked worktree dependency state: Cannot find package 'rastermill' imported from src/media/image-ops.ts. In that command, src/gateway/server-methods/server-methods.test.ts and src/gateway/server.chat.gateway-server-chat-b.test.ts failed during import before the gateway cases could execute.

Regression coverage

  • Schema accepts/rejects beforeSeq.
  • Newest page returns cursor metadata.
  • Older page prepends/dedupes by stable transcript seq.
  • Hidden/tool-only tails and underfilled pages backfill visible history instead of stranding users.
  • Byte-budget truncation recomputes cursor metadata from final returned messages.
  • Tree transcript pagination stays on the active branch, boundedly looks back for active parents, and does not expose abandoned pre-root rows.
  • Claude CLI imported history remains first-page only.
  • Canvas previews are not attached across older-page boundaries.
  • WebChat renders and wires the Load older messages control.
  • Mocked browser E2E proves the older-message load flow and beforeSeq request.

Risk checklist

Did user-visible behavior change? Yes.

Did config, environment, or migration behavior change? No.

Did security, auth, secrets, network, or tool execution behavior change? No.

Highest-risk area: Gateway chat.history pagination semantics around active transcript branches, hidden/tool-only rows, byte budgets, and imported CLI augmentation.

Mitigation: Kept the protocol additive, preserved existing history caps/budgets/placeholders, limited imported history to first-page augmentation, added focused edge-case tests, ran UI E2E, and reran autoreview until clean.

Current review state

Next action: wait for CI on f521658dc573c80495ed52ebf8502dba2b77c0fa and maintainer/ClawSweeper re-review on the clean rebased SHA.

Addressed comments:

  • ClawSweeper generated-asset finding: stale extensions/diffs/assets/viewer-runtime.js rewrite is gone.
  • Copilot review: optional requestHostUpdate?.() applied; stale input-history comment updated.
  • CI bundled protocol finding: generated shared Swift protocol model now includes beforeSeq.
  • CI lint finding: metadata access, bounded prepend, and reverse-order helpers are lint-clean.
  • Maintainer conflict request: branch rebuilt from current origin/main, with unrelated conflicts/churn removed instead of preserving the dirty merge commit.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation app: web-ui App: web-ui gateway Gateway runtime scripts Repository scripts size: XL maintainer Maintainer-authored PR labels May 27, 2026
@clawsweeper

clawsweeper Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs changes before merge. Reviewed June 24, 2026, 2:57 PM ET / 18:57 UTC.

Summary
The branch adds bounded cursor pagination to Gateway chat.history, WebChat load-older state/UI, generated Swift protocol output, docs, mock-dev data, and focused regression coverage.

PR surface: Source +614, Tests +232, Docs +2, Other +112. Total +960 across 24 files.

Reproducibility: yes. At source level, current main has bounded chat.history without beforeSeq or hasMore pagination metadata, and WebChat only requests the first bounded page.

Review metrics: 2 noteworthy metrics.

  • Gateway cursor API: 1 request field added, 4 response cursor fields added. chat.history is a public Gateway method, so generated clients and compatibility need explicit review before merge.
  • Swift initializer defaulting: 1 optional field added, 0 matching generator defaults. An additive optional wire field should not force existing Swift source callers to pass a new initializer argument.

Stored data model
Persistent data-model change detected: serialized state: src/gateway/server-methods/server-methods.test.ts, serialized state: src/gateway/session-utils.fs.test.ts, serialized state: src/gateway/session-utils.fs.ts, unknown-data-model-change: src/gateway/session-utils.fs.test.ts, unknown-data-model-change: src/gateway/session-utils.fs.ts, vector/embedding metadata: src/gateway/session-utils.fs.test.ts. Confirm migration or upgrade compatibility proof before merge.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦞 diamond lobster
Patch quality: 🦐 gold shrimp
Result: needs maintainer review before merge.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Default beforeSeq in the Swift generator/output and rerun protocol generation.
  • Align the rendered load-older classes with the stylesheet selectors.
  • Get explicit maintainer review of the chat.history cursor/session-state contract.

Mantis proof suggestion
A visual browser proof would help maintainers confirm the load-older button, prepended messages, and scroll preservation in the UI. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis visual task: verify WebChat load older history prepends older messages and preserves scroll position.

Risk before merge

  • [P1] Existing Swift source callers can break until the additive optional beforeSeq field is defaulted through the generator and regenerated output.
  • [P1] The new chat.history cursor contract changes transcript paging, active-branch selection, hidden/tool-only filtering, byte-budget cursor metadata, canvas page-boundary behavior, and WebChat prepend/dedupe semantics, so maintainers need to accept that session-state behavior before merge.
  • [P1] The supplied context reports a dirty merge state and the codegraph comment reports overlap with several active WebChat/Gateway PRs, so a fresh conflict/mergeability pass is still needed before landing.

Maintainer options:

  1. Repair compatibility and styling first (recommended)
    Default beforeSeq in the Swift generator/output, align the load-older CSS classes, and rerun protocol generation plus focused Gateway/WebChat checks before merge.
  2. Accept the session paging contract
    Maintainers can accept the new active-branch paging, hidden/tool-only backfill, byte-budget cursor, canvas-boundary, and prepend/dedupe semantics after explicit review.
  3. Pause if this API is not the desired contract
    If beforeSeq and response cursor metadata are not the desired public chat.history shape, pause this branch and keep the WebChat scrollback problem open for a narrower direction.
Copy recommended automerge instruction
@clawsweeper automerge

Special instructions:
Default the generated Swift `ChatHistoryParams` `beforeSeq` parameter to `nil` through `scripts/protocol-gen-swift.ts` and regenerated `GatewayModels.swift`, align the WebChat load-older rendered class names with `ui/src/styles/chat/grouped.css` or vice versa, then rerun the focused protocol generation and WebChat checks listed in the PR body.

Next step before merge

  • [P2] The confirmed blockers are narrow mechanical repairs that an automated fix lane can attempt; final merge still needs maintainer review of the public session-state semantics.

Security
Cleared: The diff adds no dependencies, workflows, permissions, credential handling, package-resolution changes, or new code-execution paths.

Review findings

  • [P1] Default the Swift cursor parameter to nil — apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift:6969
  • [P3] Use the load-older CSS selectors — ui/src/ui/views/chat.ts:1692-1694
Review details

Best possible solution:

Land the bounded pagination only after Swift source compatibility is preserved, load-older styling matches the rendered markup, and maintainers explicitly accept the public chat.history cursor/session-state semantics.

Do we have a high-confidence way to reproduce the issue?

Yes. At source level, current main has bounded chat.history without beforeSeq or hasMore pagination metadata, and WebChat only requests the first bounded page.

Is this the best way to solve the issue?

Yes with repairs. Bounded cursor pagination plus a WebChat load-older control is better than raising history limits because it preserves payload caps, but this branch still needs Swift defaulting, selector alignment, and maintainer session-state approval before it is the best landing version.

Full review comments:

  • [P1] Default the Swift cursor parameter to nil — apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift:6969
    beforeSeq is an additive optional wire field, but the generated Swift initializer now requires every source caller of ChatHistoryParams(...) to pass beforeseq:. Add beforeSeq to the Swift generator's defaulted optional params for ChatHistoryParams and regenerate so existing Swift source keeps compiling.
    Confidence: 0.93
  • [P3] Use the load-older CSS selectors — ui/src/ui/views/chat.ts:1692-1694
    The view renders chat-history-page-control / chat-history-page-control__button, while the stylesheet added here targets chat-history-load-more-row / chat-history-load-more. As written, the intended centering, spacing, and nowrap rules do not apply to the visible control.
    Confidence: 0.9

Overall correctness: patch is incorrect
Overall confidence: 0.9

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 4c841ac575d7.

Label changes

Label justifications:

  • P2: This is a normal-priority WebChat/Gateway history fix with limited blast radius but meaningful protocol and session-state review needs.
  • merge-risk: 🚨 compatibility: The PR extends a public Gateway protocol model and currently makes an additive Swift cursor field a required source initializer argument.
  • merge-risk: 🚨 session-state: The PR changes how Gateway pages transcript history and how WebChat prepends and deduplicates older session messages.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (live_output): The PR body provides terminal validation plus local Control UI mock-dev browser steps showing older pages load, prepend, preserve scroll position, and stop when hasMore=false.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides terminal validation plus local Control UI mock-dev browser steps showing older pages load, prepend, preserve scroll position, and stop when hasMore=false.
Evidence reviewed

PR surface:

Source +614, Tests +232, Docs +2, Other +112. Total +960 across 24 files.

View PR surface stats
Area Files Added Removed Net
Source 15 682 68 +614
Tests 5 255 23 +232
Docs 2 3 1 +2
Config 0 0 0 0
Generated 0 0 0 0
Other 2 114 2 +112
Total 24 1054 94 +960

Acceptance criteria:

  • [P1] node --import tsx scripts/protocol-gen-swift.ts.
  • [P1] git diff --check.
  • [P1] node scripts/run-vitest.mjs packages/gateway-protocol/src/index.test.ts ui/src/ui/views/chat.test.ts ui/src/ui/controllers/chat.test.ts.

What I checked:

  • Root policy read: Root AGENTS.md was read fully; it requires deep PR review, public protocol/session-state compatibility scrutiny, scoped guide checks, and protected-label handling. (AGENTS.md:1, 4c841ac575d7)
  • Scoped policies read: Gateway, server-methods, UI, docs, and scripts AGENTS.md files were read; the Gateway/server-methods notes apply to transcript history/session behavior and the UI/docs/scripts notes apply to the touched surfaces. (src/gateway/server-methods/AGENTS.md:1, 4c841ac575d7)
  • Live PR state: Live PR metadata shows the PR is open, not draft, carries the protected maintainer label, and points at head 3945642. (394564241690)
  • Current main lacks cursor request support: Current main ChatHistoryParamsSchema accepts sessionKey, optional agentId, limit, and maxChars; there is no beforeSeq or equivalent older-page cursor. (packages/gateway-protocol/src/schema/logs-chat.ts:30, 4c841ac575d7)
  • Current main only asks for the first WebChat page: Current main loadChatHistoryUncached sends chat.history/chat.startup with a fixed limit and no older-page cursor, so WebChat cannot request earlier bounded pages. (ui/src/ui/controllers/chat.ts:694, 4c841ac575d7)
  • Current main Gateway response is bounded recent history: Current main handleChatHistoryRequest reads a recent tail window and returns bounded messages plus metadata, without hasMore, nextBeforeSeq, or oldest/newest cursor fields for continuation. (src/gateway/server-methods/chat.ts:2695, 4c841ac575d7)

Likely related people:

  • BunsDev: Authored this pagination branch and also has prior merged WebChat controller/view work, including reconnect, live transcript state, composer, and compaction-checkpoint UI changes. (role: active implementation owner and prior WebChat contributor; confidence: high; commits: 43dddb2d70c6, 394564241690, 96635c7c27e3; files: src/gateway/server-methods/chat.ts, packages/gateway-protocol/src/schema/logs-chat.ts, ui/src/ui/controllers/chat.ts)
  • vincentkoc: Recent history touches the WebChat controller, protocol-adjacent surfaces, and chat timing/session behavior that this PR extends. (role: recent WebChat/Gateway contributor and reviewer; confidence: medium; commits: b09b35c13c17, 2c6bdc8b2831, b1fccd06058e; files: ui/src/ui/controllers/chat.ts, ui/src/ui/views/chat.ts, packages/gateway-protocol/src/schema/logs-chat.ts)
  • jalehman: Recent Gateway session-history work refactored transcript reader identity and transcript seams adjacent to the pagination implementation. (role: session/transcript seam contributor; confidence: medium; commits: d216f7c876dd, 8ded75628437, 00a75db4280b; files: src/gateway/server-methods/chat.ts, src/gateway/session-utils.fs.ts, src/gateway/session-history-state.ts)
  • steipete: Recent history includes Swift protocol generator work and Gateway state/helper documentation on the generated-client surface affected by beforeSeq. (role: protocol and Swift generator contributor; confidence: medium; commits: 7a7165ad22c4, 378c4134f1de, 4d8502804d70; files: scripts/protocol-gen-swift.ts, apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift, src/gateway/session-history-state.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. labels May 27, 2026
@clawsweeper

clawsweeper Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg: ✨ hatched 🥚 common Tiny Crabkin. Rarity: 🥚 common. Trait: sniffs out flaky tests.

Details

Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Tiny Crabkin in ClawSweeper.
Hatchability:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

About:

  • Eggs appear after real-behavior proof passes. They are collectible flavor only.
  • Review momentum changes the shell state: follow-up work warms it, re-review makes it wobble, and a clean final review lets it hatch.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@BunsDev

BunsDev commented May 27, 2026

Copy link
Copy Markdown
Contributor Author

@copilot resolve the merge conflicts in this pull request

Copilot AI commented May 27, 2026

Copy link
Copy Markdown
Contributor

@copilot resolve the merge conflicts in this pull request

Resolved and committed in 4b4b4a2122. I merged origin/main, fixed the src/gateway/server-methods/chat.ts conflict, and verified the targeted chat history test suites pass.

@clawsweeper clawsweeper Bot added status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 other 🚨 Merging this PR has meaningful risk outside the owned taxonomy. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 27, 2026
@BunsDev
BunsDev marked this pull request as ready for review May 28, 2026 03:59
Copilot AI review requested due to automatic review settings May 28, 2026 03:59
@openclaw-barnacle openclaw-barnacle Bot added cli CLI command changes commands Command implementations agents Agent runtime and tooling extensions: deepinfra extensions: diffs labels May 28, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds cursor-based pagination for WebChat history so tool-heavy transcripts can load recent conversation first and fetch older turns on demand, while preserving gateway history filtering behavior.

Changes:

  • Adds beforeSeq pagination support and response metadata to chat.history.
  • Wires WebChat state, controller, view, CSS, and tests for “Load older messages.”
  • Updates docs/tests and includes many formatting/import-order-only changes outside the pagination path.

Reviewed changes

Copilot reviewed 66 out of 68 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/gateway/server-methods/chat.ts Implements paged chat history projection and metadata.
src/gateway/session-utils.ts Exports reverse transcript visitor.
src/gateway/session-utils.fs.ts Adds reverse transcript traversal helper.
src/gateway/protocol/schema/logs-chat.ts Adds beforeSeq request validation.
src/gateway/protocol/index.test.ts Covers beforeSeq validation.
src/gateway/server.chat.gateway-server-chat-b.test.ts Adds gateway pagination regression tests.
src/gateway/server-methods/server-methods.test.ts Covers canvas page-boundary behavior.
ui/src/ui/controllers/chat.ts Adds pagination state and older-page loading.
ui/src/ui/controllers/chat.test.ts Covers pagination state and prepend behavior.
ui/src/ui/views/chat.ts Renders load-older control.
ui/src/ui/views/chat.test.ts Tests load-older button rendering/clicking.
ui/src/ui/e2e/chat-flow.e2e.test.ts Adds GUI pagination E2E coverage.
ui/src/ui/app.ts Adds app-level pagination state.
ui/src/ui/app-view-state.ts Extends app view state type.
ui/src/ui/app-render.ts Wires older-history loading into chat view.
ui/src/ui/app-render.helpers.ts Resets pagination on session switch.
ui/src/ui/app-chat.ts Resets pagination on history clear.
ui/src/styles/chat/grouped.css Styles load-older row/button.
ui/src/ui/chat/build-chat-items.ts Removes fixed 100-message render cap.
ui/src/ui/chat/build-chat-items.test.ts Updates render-limit expectations.
ui/src/ui/chat/history-limits.ts Adds dedicated input recall limit.
ui/src/ui/chat/input-history.ts Uses input-specific recall limit.
scripts/control-ui-mock-dev.ts Adds paged mock chat history.
docs/web/webchat.md Documents WebChat pagination.
docs/gateway/protocol.md Documents chat.history pagination fields.
Other touched files Formatting/import-order-only changes.

Comment thread ui/src/ui/app-render.ts Outdated
}
// Keep input recall aligned with what chat UI renders: only consider the visible history window.
const start = Math.max(0, messages.length - CHAT_HISTORY_RENDER_LIMIT);
const start = Math.max(0, messages.length - CHAT_INPUT_HISTORY_RECALL_LIMIT);
@clawsweeper clawsweeper Bot added status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jun 10, 2026
@BunsDev

BunsDev commented Jun 13, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper review

@clawsweeper clawsweeper Bot added rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 13, 2026
@BunsDev
BunsDev force-pushed the meow/webchat-history-pagination branch from f521658 to afa6756 Compare June 13, 2026 05:10
@BunsDev

BunsDev commented Jun 13, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper review

@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. labels Jun 13, 2026
@BunsDev
BunsDev force-pushed the meow/webchat-history-pagination branch from afa6756 to 43dddb2 Compare June 13, 2026 05:30
@BunsDev

BunsDev commented Jun 13, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper review

@clawsweeper

clawsweeper Bot commented Jun 13, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jun 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui docs Improvements or additions to documentation gateway Gateway runtime maintainer Maintainer-authored PR merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. scripts Repository scripts size: XL status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants