chore: sticky footer dialogs, knowledge sources tool improvements, chat fixes#3262
Conversation
…torage, structured logging - Extract DialogStickyFooter component and apply to all scrollable dialogs - Fix overflow-hidden clipping negative margins (use min-h-0 instead) - Reset connector checkpoint when config changes to force full re-sync - Extract chat localStorage persistence into use-chat-preferences with tests - Replace bracket log prefixes with structured logging fields (connectorName, connectorType) - Fix GitLab "Group ID" label to "Group Path" with correct placeholder
Move scroll responsibility to DialogContent (overflow-y-auto) instead of an inner div, so DialogStickyFooter is inside the scroll container and sticky positioning works correctly.
Move scroll to DialogContent (overflow-y-auto) and remove inner scroll wrappers so DialogStickyFooter works correctly.
Both dialogs have scrollable content and were using DialogFooter. Switch to DialogStickyFooter for consistency and proper sticky behavior.
|
Claude finished @joeyorlando's task in 4m 24s —— View job PR Review:
|
| Severity | Count | Key Areas |
|---|---|---|
| E2E Failures | 3 | chat-localstorage (2), chat OpenAI (1) — likely caused by missing saveAgent() call on initial load and brittle selectors |
| Critical/High | 5 | localStorage error handling, checkpoint reset on failure, perf issue in message-thread, unbounded description, Confluence missing failures |
| Medium | 7 | Silent citation errors, race conditions, time budget overshoot, type safety |
| Low/Nit | 7 | Cache TTL, migration validation, placeholder consistency |
The PR's core features (sticky footer, KB tool rename, dynamic descriptions, citation placement) are well-implemented. The main concerns are the failing e2e tests (likely fixable with a saveAgent() call in the initial resolution effect) and a few robustness issues in error handling and sync state management.
📊 Reputation Summary
How is the score calculated? Read about it in the Reputation Bot repository 🤖 |
Playwright test results
Details
Failed testsapi › api/chat-settings.spec.ts › LLM Provider API Keys Access Control › member should be able to read LLM provider API keys Flaky testsapi › api/built-in-agents.spec.ts › Built-In Agents API › auto-configure creates policies for tool via route Skipped testsapi › api/chat-settings.spec.ts › LLM Provider API Keys Access Control › member should not be able to create LLM provider API keys |
Rename the knowledge tool and hide it from user-facing UI. The tool is auto-injected behind the scenes when an agent has knowledge sources assigned. Includes legacy rename migration in seedArchestraTools for existing installations.
…Now UX
- Remove unused `mode` parameter from query_knowledge_sources tool
- Dynamically enrich tool description with KB names and connector types
- Hide query_knowledge_sources tool from UI (auto-injected behind the scenes)
- Auto-trigger initial sync when a connector is created
- Add tooltip to disabled Sync Now button ("Sync run in progress")
Filter the tool from findByCatalogId so it never appears in the tool picker UI. The tool is auto-injected behind the scenes when an agent/gateway has knowledge sources attached.
- Citations now show on the last assistant message after streaming completes, searching backwards through all messages for KB tool calls (handles both same-message and cross-message tool calls) - Fix numbered list rendering where LLM outputs numbers on their own line (e.g. "3.\n\n**Title**") by collapsing orphaned markers before Streamdown parses them into separate blocks - Export buildKnowledgeSourcesDescription and add comprehensive tests
- Wrap all localStorage calls in try-catch for QuotaExceededError/private browsing - Precompute lastAssistantMessageIndex with useMemo instead of per-message reverse+findIndex - Truncate KB tool description at 500 chars to prevent unbounded length - Add failures: this.flushFailures() to Confluence and Jira connector batch yields - Add depth limit to Jira recursive error extraction to prevent stack overflow - Log citation extraction errors instead of silently swallowing - Add null guard message to e2e kbTool assertion - Consistent placeholder text between create/edit connector dialogs
## Summary Addresses review feedback from [PR #3262](#3262 (comment)): - **localStorage error handling**: Wrap all `localStorage.getItem`/`setItem`/`removeItem` calls in try-catch to handle `QuotaExceededError` and private browsing restrictions - **message-thread perf**: Precompute `lastAssistantMessageIndex` with `useMemo` instead of creating a reversed array copy per message per render - **KB tool description length**: Truncate knowledge base names list at 500 chars to prevent unbounded tool description length - **Confluence connector failures**: Add missing `failures: this.flushFailures()` to batch yields (matching GitHub/GitLab pattern) - **Jira connector failures**: Same fix — refactor `buildBatch` to accept and include failures - **Jira error extraction depth limit**: Add max depth of 5 to `extractJiraErrorDetails` recursion to prevent stack overflow from circular error references - **Citation error logging**: Log `console.warn` on citation extraction failure instead of silently swallowing - **E2E test guard**: Add descriptive assertion message for kbTool null check - **Placeholder consistency**: Match edit connector dialog placeholder to create dialog
🤖 I have created a release *beep* *boop* --- ## [1.1.5](platform-v1.1.4...platform-v1.1.5) (2026-03-11) ### Features * add default model setting for agents and new chats ([#3267](#3267)) ([53c99d3](53c99d3)) * rework chat agent selector/editor ([#3261](#3261)) ([b67b741](b67b741)) ### Bug Fixes * chat-localstorage e2e test model trigger assertion ([#3270](#3270)) ([8b4efbb](8b4efbb)) * support envFrom and preserve user-added env in self-hosted MCP server pods ([#3230](#3230)) ([0ea9fce](0ea9fce)) ### Miscellaneous Chores * address PR [#3262](#3262) review feedback ([#3266](#3266)) ([4e2f175](4e2f175)) * **deps:** bump hono from 4.12.5 to 4.12.7 in /platform/mcp_server_docker_image ([#3263](#3263)) ([51c4e8e](51c4e8e)) * fix self-hosted confluence pagination ([#3271](#3271)) ([c63708c](c63708c)) * sticky footer dialogs, knowledge sources tool improvements, chat fixes ([#3262](#3262)) ([527d16f](527d16f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: archestra-ci[bot] <222894074+archestra-ci[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Summary
query_knowledge_base→query_knowledge_sources, build dynamic tool description with KB names and connector types, auto-sync connectors on creation, add "Sync Now" UX, hide from tool assignment dialog