Skip to content

Local viewer: UI polish and a Feedback & support tab#847

Merged
0xallam merged 1 commit into
mainfrom
viewer-ui-and-feedback
Jul 22, 2026
Merged

Local viewer: UI polish and a Feedback & support tab#847
0xallam merged 1 commit into
mainfrom
viewer-ui-and-feedback

Conversation

@0xallam

@0xallam 0xallam commented Jul 22, 2026

Copy link
Copy Markdown
Member

Polishes the local run viewer and adds a Feedback & support tab.

  • Sidebar redesign — account-switcher-style header, uniform nav rows, updated icons, drag-to-resize/collapse.
  • Refined content width, padding, and motion (page/card transitions, dialog animations).
  • Platform features (PR Security Reviews, Integrations, Members) open a dialog instead of a page.
  • Copy tidied up; "Email report" → "Export report to PDF"; finding actions moved into the header.
  • New: Feedback & support tab — collects a message + work email and relays it through the local server.

Fixes:

  • load_skill transcript entries no longer crash the agent/finding view.
  • Run details show the local source path instead of [object Object].
  • "Issues" returns to the full list from a finding's detail view.

Rebuilt the committed static bundle.

- Sidebar redesign: account-switcher-style header, uniform nav rows, updated
  icons, drag-to-resize/collapse.
- Refined content width, padding, and motion (page/card transitions, dialog
  animations).
- Platform features (PR Security Reviews, Integrations, Members) open a dialog
  instead of a page.
- Copy tidied up; "Email report" -> "Export report to PDF"; finding actions
  moved into the header.
- New: Feedback & support tab that collects a message + work email and relays
  it through the local server.

Fixes:
- load_skill transcript entries no longer crash the agent/finding view.
- Run details show the local source path instead of [object Object].
- "Issues" returns to the full list from a finding's detail view.

Rebuilt the committed static bundle.
@greptile-apps

greptile-apps Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR polishes the local viewer and adds a feedback workflow. The main changes are:

  • A resizable sidebar with updated navigation and upgrade dialogs.
  • A Feedback & support form backed by a session-gated relay endpoint.
  • Updated page, card, and modal animations.
  • Fixes for local source paths, issue navigation, and load_skill transcript data.
  • A rebuilt committed frontend bundle.

Confidence Score: 4/5

The feedback failure path needs a contained fix before merging.

  • A rejected feedback request leaves the form disabled indefinitely.
  • Relay validation, session checks, message limits, imports, and static asset references are consistent.
  • Rate-limit responses should tell the user to wait rather than report general unavailability.

strix/viewer/frontend/src/components/FeedbackView.tsx

Important Files Changed

Filename Overview
strix/viewer/frontend/src/components/FeedbackView.tsx Adds the feedback form, but rejected requests can leave it stuck in the sending state and rate limits receive misleading copy.
strix/viewer/frontend/src/data/serverSource.ts Adds the frontend feedback API wrapper and application-level error handling.
strix/viewer/server.py Adds a session-gated feedback endpoint with validation, message limiting, and relay error mapping.
strix/viewer/auth.py Adds the outbound feedback relay and maps validation, rate-limit, and availability responses.
strix/viewer/frontend/src/components/Sidebar.tsx Redesigns navigation with resizing, persisted collapse state, user controls, and upgrade dialogs.
strix/viewer/frontend/src/components/live/AgentDetailModal.tsx Adds retained mounting and deferred transcript rendering for modal animations.
strix/viewer/frontend/src/components/RunDetails.tsx Normalizes local source objects into displayable source or target paths.
strix/viewer/frontend/src/components/live/tool-renderers/LoadSkillRenderer.tsx Supports both arrays and comma-separated strings in load_skill transcript arguments.
strix/viewer/static/index.html Updates the committed page to reference the rebuilt JavaScript and CSS assets.
Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 2
strix/viewer/frontend/src/components/FeedbackView.tsx:34-45
**Rejected Request Leaves Form Stuck**

When `submitFeedback` rejects because the local server is unavailable or the response cannot be parsed, this handler never restores `step` from `"sending"`. The button remains disabled and shows “Sending…” indefinitely instead of displaying the existing unavailable error.

```suggestion
  const send = async () => {
    if (!canSend) return;
    setStep("sending");
    setError(null);
    try {
      const result = await submitFeedback(message.trim(), email.trim());
      if (result.ok) {
        setStep("sent");
        return;
      }
      setStep("form");
      setError(ERROR_COPY[result.error] ?? ERROR_COPY.unavailable);
    } catch {
      setStep("form");
      setError(ERROR_COPY.unavailable);
    }
  };
```

### Issue 2 of 2
strix/viewer/frontend/src/components/FeedbackView.tsx:9-13
**Rate Limit Uses Availability Message**

The backend deliberately returns `rate_limited` for a relay 429, but this map has no matching entry. A rate-limited submission therefore tells the user the service is unavailable and to retry immediately, which can prolong the rate limit instead of explaining that they need to wait.

```suggestion
const ERROR_COPY: Record<string, string> = {
  invalid_email: "That email doesn't look right.",
  invalid_message: "Please write a little more.",
  rate_limited: "Too many messages were sent. Please wait and try again.",
  unavailable: "Couldn't send that just now. Try again.",
};
```

Reviews (1): Last reviewed commit: "Local viewer: UI polish and a Feedback &..." | Re-trigger Greptile

Comment thread strix/viewer/frontend/src/components/FeedbackView.tsx
Comment thread strix/viewer/frontend/src/components/FeedbackView.tsx
@0xallam
0xallam merged commit ef07bad into main Jul 22, 2026
1 check passed
@0xallam
0xallam deleted the viewer-ui-and-feedback branch July 22, 2026 15:35
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