Skip to content

fix: feedback UX quick wins, run-plan cleanup, and topology improvements#143

Merged
alexinthesky merged 8 commits into
mainfrom
fix/feedback-ux-quick-wins
Jun 9, 2026
Merged

fix: feedback UX quick wins, run-plan cleanup, and topology improvements#143
alexinthesky merged 8 commits into
mainfrom
fix/feedback-ux-quick-wins

Conversation

@alexinthesky

@alexinthesky alexinthesky commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Addresses the top friction points from the internal Ask O11y feedback round (14 respondents), plus related cleanup.

Feedback UX quick wins

  • Fresh chat by default + docked history. Stop auto-restoring the last session on open; the history sidebar is now a persistent docked side panel (was a modal) so past conversations are discoverable. Hidden in read-only/shared views.
  • Discoverable New Chat button. Replaced the easy-to-miss plus icon with a labeled "New chat" button.
  • Query blocks no longer truncate. Long PromQL/LogQL/TraceQL wrap + scroll instead of being clipped; the graph copy button gained the same "Copied!" feedback as logs/traces.
  • Retryable errors. Agent-run errors now surface as an Alert with a Retry button that re-sends the last prompt, instead of appending raw error text.

Cleanup

  • Removed the "Run progress" block from assistant messages (a static, canned step scaffold that added noise).
  • Removed the dead run-plan pipeline end-to-end (frontend types/events/callbacks + backend buildRunPlan/events/runstore). final_report behaviour is unchanged. Real progress is still shown via the tool-calls section.

Also included

  • fix: dead code — Graphiti/topology query improvements (pkg/plugin/topology.go, plugin.go), supporting scripts, and minor config/test updates. Bundled here per request.

Testing

  • npm run build ✅, npm run typecheck ✅, eslint ./src 0 errors ✅
  • npm run test:ci — 491 unit tests pass ✅ (added coverage for error/retry)
  • go build ./pkg/... ✅, go test ./pkg/agent/... ./pkg/plugin/...

🤖 Generated with Claude Code


Note

Medium Risk
Changes default session behavior and agent SSE surface area (run_plan removed); topology refresh issues more sequential MCP calls, though bounded to reduce timeout risk.

Overview
Improves Ask O11y chat UX from internal feedback and removes the canned run-plan/progress pipeline end-to-end (agent SSE, run trace, and UI), while keeping final_report, tool calls, evidence, and approvals.

Chat: Opens on a fresh conversation (no auto-restore of last session); session history is a docked sidebar by default. Labeled “New chat”, retryable agent errors via Alert + Retry, and query footers that wrap/scroll with copy feedback on graphs.

Service graph: Graphiti topology refresh now searches typed nodes and optional center-node fact lookups (capped), with richer fact/node parsing (UUIDs, namespaces/clusters/queues) and settings summary showing service vs total node counts.

Tooling: Adds local scripts to restore Redis dumps and export recent Ask O11y user metadata (gitignored); minor Claude/git allowlist updates.

Reviewed by Cursor Bugbot for commit a0e9c1a. Bugbot is set up for automated code reviews on this repo. Configure here.

alexinthesky and others added 4 commits June 8, 2026 21:17
Resolve the top friction points from the internal Ask O11y feedback round:

- Default to a fresh chat on open instead of auto-restoring the last
  session; show the history as a persistent docked side panel (was a
  modal) so past conversations are discoverable. Hidden in read-only and
  shared views.
- Replace the easy-to-miss plus-icon with a labeled "New chat" button.
- Stop truncating long PromQL/LogQL/TraceQL query blocks (wrap + scroll)
  and give the graph copy button the same "Copied!" feedback as logs and
  traces.
- Surface agent-run errors as a retryable Alert with a Retry button that
  re-sends the last prompt, instead of appending raw error text.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The collapsible "Run progress" plan summary (objective + step chips) added
noise without value. Drop the plan section and its now-unused state from
AgentTraceSummary; evidence and approvals sections are unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The run-plan was a static, canned 3-step scaffold (not derived from the
model's actual work) and its only renderer was just removed. Strip the
whole pipeline:

- Frontend: drop runPlan/AgentRunPlan/AgentPlanStep types, the run_plan
  and step_start/step_done SSE events, onRunPlan/onStep callbacks and
  their dispatch, and the evidence stepId field.
- Backend: remove buildRunPlan/planObjective/currentEvidenceStepID, the
  run_plan + step events, PlanStep/RunPlanEvent/StepEvent types, the
  runstore Plan field and updateTraceStep. final_report is preserved
  (ungated from the now-removed plan check; behaviour is unchanged since
  the plan was always non-empty).

Real progress is still shown via the tool-calls section. Tests updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment thread pkg/plugin/plugin.go
Org policy requires all GitHub Actions pinned to a full-length commit SHA.
Pin wait-for-grafana (e2e) and is-compatible (compatibilitycheck) to the
current plugin-actions main SHA to unblock required checks.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Comment thread src/components/Chat/hooks/useChat.ts
alexinthesky and others added 3 commits June 9, 2026 10:41
The reconnect-on-mount failure path wrote a generic message into the
assistant content, bypassing the new retryable error Alert. Set the
structured error field instead so the Retry button is offered.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Centered Graphiti fact lookups ran once per center node, bounded only by
the display node limit (up to 500), causing a sequential MCP call storm
that could exceed gateway timeouts. Cap center-node fact lookups at 12,
independent of maxNodes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit a0e9c1a. Configure here.

Comment thread src/components/Chat/hooks/useSessionManager.ts
@alexinthesky
alexinthesky merged commit 61d5515 into main Jun 9, 2026
14 checks passed
@alexinthesky
alexinthesky deleted the fix/feedback-ux-quick-wins branch June 9, 2026 08:58
alexinthesky added a commit that referenced this pull request Jul 21, 2026
…ar (#152)

* test: fix CI regressions from namespaced storage key and docked sidebar

- AppConfig.test.tsx hardcoded the pre-namespacing sessionStorage key;
  update to use getPluginStorageKey (broken since the namespace-storage-key
  fix, never caught because that PR did not touch this test).
- The session sidebar became a persistent docked panel (open by default,
  no longer closes on new-chat) in #143, but e2e specs still assumed the
  old closed-by-default modal. Update sessionManagement/sessionSharing/
  chat specs: disambiguate the header Chat history / New chat buttons
  from the sidebar's own New Chat and Clear All History controls (both
  now simultaneously in the DOM), and drop the stale
  sidebar-closes-on-new-session assertion.
- sidePanel.spec.ts's DOM heuristic (first 3-child div under [role=main])
  now matches the docked sidebar instead of the SplitLayout pane; scope it
  to the existing [data-plugin-split-layout] marker instead.

All 491 unit tests and all 38 Playwright e2e tests pass locally.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(deps): force js-yaml to patched version via override

Both transitive copies (via i18next-parser/eslint/postcss-loader on 4.x,
and via babel-plugin-istanbul on 3.x) were vulnerable to CVE-2026-59869
(GHSA-52cp-r559-cp3m, quadratic CPU consumption via YAML merge-key
chains). No direct dependency to bump; overrides is already the
established pattern here for dompurify/lodash-es. This is required for
the plugin-validator osv-scanner gate (Build, lint and unit tests /
Validate plugin) to pass.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(deps): force undici and ws to patched versions via override

Both are transitive (cheerio -> undici, jsdom -> ws) and their parent
packages already allow the patched range, so this only pins the floor:

- undici < 7.28.0 is vulnerable to several HIGH CVEs (2026-6734,
  2026-9697, 2026-12151); patched in 7.28.0.
- ws < 8.21.0 is vulnerable to CVE-2026-48779 (fragment-count DoS);
  patched in 8.21.0.

Closes out the remaining plugin-validator osv-scanner findings on this
branch (js-yaml was fixed in the previous commit). Local 'npm run validate'
now only reports the documented benign findings (unsigned plugin, stale
Go SDK, sponsor link).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant