Skip to content

Feat/dashboard collab and UI upgrades - #115

Merged
MyNameIsEdi merged 9 commits into
mainfrom
feat/dashboard-collab-and-ui-upgrades
May 24, 2026
Merged

Feat/dashboard collab and UI upgrades#115
MyNameIsEdi merged 9 commits into
mainfrom
feat/dashboard-collab-and-ui-upgrades

Conversation

@MyNameIsEdi

@MyNameIsEdi MyNameIsEdi commented May 24, 2026

Copy link
Copy Markdown
Owner

Description

Fixes # (issue number)

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

Summary by CodeRabbit

  • Bug Fixes
    • Fixed archived run log truncation. When replaying past runs, the complete run log is now displayed in full instead of being truncated, ensuring all historical context remains visible.

Review Change Stack

MyNameIsEdi and others added 7 commits May 23, 2026 22:44
…for every run, UI polish

Three production fixes plus a feature upgrade for the Playwright Dashboard
and the QA Office chat panel:

- **Multi-agent collaboration** in /api/qa-agent: primary → critic → primary
  refine → Edi M synthesis. Auto-triggered when 2+ agents are tagged or the
  manager is mentioned. New SSE turn_start/turn_done/turn_verdict events
  produce a threaded conversation in chat, with colour-coded role pills.
- **Run logs persisted** alongside each archived run; clicking an old run
  re-hydrates the dashboard log panel. archiveRun() now logs success/failure
  to the server console so silent archive failures are visible.
- **Edi M summary now streams to chat for every Run Tests**, not just
  agent-generated dynamic runs. Phase 2 streamSummary() helper shared by
  /api/playwright/run and /api/run-dynamic-test.
- **Dashboard UI/UX polish**: KPI hero with progress ring + verdict, pill
  subtitle row, history-chart hover tooltip + moving-average trend line,
  sticky suite headers with smooth chevron rotation, copy-error button,
  cropped QA Office canvas (no more "blue void" above the office).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- server: drop unnecessary \- escape in runId sanitiser regex
- tests/sv-login: remove unused BASE_URL import
- PlaywrightDashboard: replace ternary-as-statement with explicit if/else
  in the multi-spec picker onChange (no-unused-expressions)
- OfficePage + PlaywrightDashboard: remove orphaned
  `eslint-disable-next-line react-hooks/exhaustive-deps` directives —
  the rule isn't registered in this project's ESLint config so the
  directive itself was reported as an error
- PlaywrightDashboard: drop two unused `// eslint-disable-line`
  trailing comments flagged by no-unused-disable
- README: mention multi-agent collab + persistent run history features
  so the docs-check script sees a docs update alongside the code change

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Auto-format 115 files with Prettier to fix the failing format:check
workflow step. Also removes the temporary PR_BODY.md file.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…, summary snapshot, types)

- CHANGELOG: remove duplicate bullets (two entries appeared under both the
  unreleased ### Changed block and an orphaned second block)
- runCollabTurn: accept and forward history + imageAttachments into
  startChat/sendMessageStream so collaborative turns preserve context and vision
- capturedLog: switch from oldest-first cap to a sliding window (push + shift)
  so archiveRun and AI summaries always see the newest 5 000 lines
- streamSummary: accept runId in SummaryCreds; reads the per-run immutable
  archive instead of the shared RESULTS_PATH to prevent concurrent-run clobbering
- Both route close-handlers now capture archiveRun return value and pass runId
  to streamSummary
- PlaywrightDashboard: define RunRequest and SummaryEvent types; runWithSSE
  typed as (body: RunRequest); evt typed as SummaryEvent | Record<string,unknown>;
  fetchResults always calls setRunLog (clears to [] when not an archived run)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-and-ui-upgrades

# Conflicts:
#	CHANGELOG.md
#	server/index.ts
#	ui/src/pages/PlaywrightDashboard.tsx
Satisfies the docs-validation CI check that requires README.md to be
updated alongside any server/ or ui/src/ changes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Rewrote all nine documentation sections in DocsPage to reflect the
current project state. Replaced every Anthropic/Claude reference with
Gemini/Ollama, updated the directory tree, rewrote the env-var section
with dual-provider setup instructions, corrected the tech stack table,
added FAQ entries for provider switching and multi-agent collaboration,
and updated the roadmap to mark completed features as done.

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

coderabbitai Bot commented May 24, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 2cf8b0f3-82b6-4d36-94cd-5c46ac8a9c65

📥 Commits

Reviewing files that changed from the base of the PR and between 8112a99 and 2710a4d.

📒 Files selected for processing (3)
  • CHANGELOG.md
  • README.md
  • ui/src/pages/PlaywrightDashboard.tsx

📝 Walkthrough

Walkthrough

The PR removes the 999-line truncation applied to archived run logs when replaying past runs. The dashboard now hydrates runLog directly from the server response, preserving full historical context. CHANGELOG and README documentation are updated to reflect this behavior change.

Changes

Archived run log restoration

Layer / File(s) Summary
Archived run log restoration without truncation
ui/src/pages/PlaywrightDashboard.tsx, CHANGELOG.md, README.md
Dashboard fetchResults removes the .slice(-999) operation and restores runLog directly from data.runLog without truncation. CHANGELOG documents that the 999-line cap now applies only to live-streaming SSE paths. README updates the feature description to promise full original log replay without line-count truncation.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

  • MyNameIsEdi/open-qa#114: Modifies ui/src/pages/PlaywrightDashboard.tsx to hydrate runLog from data.runLog without applying the 999-line truncation for archived run restoration.
  • MyNameIsEdi/open-qa#113: Adjusts archived runLog handling and server-side log archiving mechanics to restore historical logs without truncation.
  • MyNameIsEdi/open-qa#116: Modifies how archived run logs are restored in ui/src/pages/PlaywrightDashboard.tsx to avoid truncation.

Poem

🐰 No more logs lopped—archived tales run complete,
From 999 lines to histories sweet,
The cap stays home for SSE's live stream,
While replayed runs fulfill their full dream! ✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description contains only the template boilerplate with no checked items, no explicit summary, no issue reference, and no meaningful content beyond the unchecked checklist boxes. Add a detailed summary of changes, specify the type of change with an 'x' in the appropriate checkbox, mark completed checklist items, and reference any related issue number.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Feat/dashboard collab and UI upgrades' partially relates to the changeset, covering dashboard and UI changes, but does not capture the significant backend changes (multi-agent collaboration flow, run-log persistence, AI summaries) that represent a major portion of the work.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/dashboard-collab-and-ui-upgrades

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
ui/src/pages/DocsPage.tsx (1)

35-307: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Fix Prettier formatting in this file to clear CI.

Lint is currently failing on this file due to formatting; please run Prettier and commit the result.

Suggested command
npx prettier --write ui/src/pages/DocsPage.tsx
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ui/src/pages/DocsPage.tsx` around lines 35 - 307, This file (DocsPage.tsx,
the DocsPage component containing the large blocks array and JSX blocks like
blocks: [...], tables and code snippets) is failing Prettier formatting; run the
suggested formatter (npx prettier --write ui/src/pages/DocsPage.tsx) to reformat
the file, verify the DocsPage component and the blocks constant structure remain
unchanged, fix any remaining lint/format errors reported by CI, and commit the
reformatted file so the CI Prettier check passes.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@ui/src/pages/PlaywrightDashboard.tsx`:
- Around line 4622-4623: The current call to setRunLog truncates archived runs
to the last 999 lines (setRunLog(runId && Array.isArray(data.runLog) ?
data.runLog.slice(-999) : [])), which drops historical context; change the logic
so that when restoring an archived/historical run (data.runLog is an array and
runId is truthy for a specific run) you set the full data.runLog, and only apply
slice(-999) when switching to the "latest" live view. Update the setRunLog
invocation (referencing setRunLog, runId and data.runLog) to conditionally use
data.runLog (no slice) for archived runs and data.runLog.slice(-999) only for
the latest/live run case.

---

Outside diff comments:
In `@ui/src/pages/DocsPage.tsx`:
- Around line 35-307: This file (DocsPage.tsx, the DocsPage component containing
the large blocks array and JSX blocks like blocks: [...], tables and code
snippets) is failing Prettier formatting; run the suggested formatter (npx
prettier --write ui/src/pages/DocsPage.tsx) to reformat the file, verify the
DocsPage component and the blocks constant structure remain unchanged, fix any
remaining lint/format errors reported by CI, and commit the reformatted file so
the CI Prettier check passes.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 60558c3a-f2c5-414a-a2c7-e7c3e7552e2d

📥 Commits

Reviewing files that changed from the base of the PR and between c95f415 and 8112a99.

📒 Files selected for processing (5)
  • CHANGELOG.md
  • README.md
  • server/index.ts
  • ui/src/pages/DocsPage.tsx
  • ui/src/pages/PlaywrightDashboard.tsx

Comment thread ui/src/pages/PlaywrightDashboard.tsx Outdated
MyNameIsEdi and others added 2 commits May 24, 2026 12:11
…-and-ui-upgrades

# Conflicts:
#	CHANGELOG.md
#	README.md
#	ui/src/pages/DocsPage.tsx
setRunLog was applying .slice(-999) to the archived-run restore path,
silently dropping all but the last 999 lines of historical stdout.
The cap is only appropriate for the live SSE streaming path (unbounded
append); archived runs are finite and should be shown in full.

Restore path now sets data.runLog directly; live-streaming paths at the
two SSE consumer loops retain their .slice(-999) guard unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@MyNameIsEdi
MyNameIsEdi merged commit acc4fca into main May 24, 2026
5 of 6 checks passed
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