chore(ui): fix persona subtitle for navigation + app mode#30388
chore(ui): fix persona subtitle for navigation + app mode#30388chirag-madlani wants to merge 11 commits into
Conversation
added app mode icon
❌ PR checklist incompleteThis PR cannot be merged until the following are addressed on its linked issue:
The fields live on the linked issue in the Shipping project (open the issue → right sidebar → Projects). After you set them, re-run this check (or push a commit) — issue/project changes do not re-trigger it automatically. Maintainers can bypass this check by adding the |
✅ Playwright Results — workflow succeededValidated commit ✅ 567 passed · ❌ 0 failed · 🟡 2 flaky · ⏭️ 5 skipped · 🧰 0 lifecycle flaky PerformanceBlocking targets: ✅ met · Optimization targets: 🟡 in progress Shard-job maxima below are not the full workflow wall time; the linked run includes build, fixture, planning, and reporting. 🕒 Full workflow signal wall (to summary) 51m 0s ⏱️ Max setup 2m 55s · max shard execution 15m 26s · max shard-job elapsed before upload 18m 39s · reporting 5s 🌐 206.31 requests/attempt · 2.78 app boots/UI scenario · 10.26% common-shard skew Optimization targets still in progress:
🟡 2 flaky test(s) (passed on retry)
How to debug locally# Download playwright-test-results-<shard> artifact and unzip
npx playwright show-trace path/to/trace.zip # view trace |
| @@ -0,0 +1,9 @@ | |||
| <svg width="89" height="89" viewBox="0 0 89 89" fill="none" xmlns="http://www.w3.org/2000/svg"> | |||
There was a problem hiding this comment.
Can we remove the hardcoded width and height from the SVG? This will make it more reusable, to control its dimensions through props
…gression Adding the wait for save-button:enabled between the widget-remove click and the cancel-button click gives NavigationBlocker two React render passes to propagate `enabled=true` and install its pushState override. Without it, a fast Playwright click on cancel-button races the blocker's second-render effect and the navigate goes through natively — landing on the persona page with no modal (as seen in the failing CI screenshot). The other two Discard tests (CustomizeLandingPage + CustomizeNavigationNewItems) already had this wait implicitly (removeAndCheckWidget waits for the widget to disappear; the navigation test asserts save-button:enabled) and passed in CI. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The pushState/replaceState intercepts compared the incoming URL string
against `location.pathname`. Widgets that sync filter state via
navigate/replaceState with a same-path URL that only differs in query
string (e.g. Tables widget writing `?showDeletedTables=false` on mount)
looked "different from pathname" and popped the unsaved-changes modal
unprompted — visible on the customize Database Schema page as soon as the
persona had any non-empty backend page state that made disableSave=false.
Compare pathnames only: parse the incoming URL against location.origin
and require an actual pathname change to block. Query-only ("?...") and
hash-only ("#...") strings short-circuit to false. Explains the
Database Schema Playwright timeout — the modal was covering the whole
page and intercepting every subsequent click.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Code Review ✅ Approved 2 resolved / 2 findingsUpdates persona subtitles for navigation and app mode headers, adds an app-mode icon, and resolves the app-mode subtitle rendering and stale test comment findings. ✅ 2 resolved✅ Bug: App-mode subtitle renders static label as the persona link
✅ Quality: Stale test comment says CustomizeDetailsPage has no blocker
OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar |
|



added app mode icon
Describe your changes:
Screen.Recording.2026-07-23.at.4.34.07.PM.mov
Fixes #
I worked on ... because ...
Type of change:
High-level design:
N/A — small change.
Tests:
Use cases covered
Unit tests
Backend integration tests
Ingestion integration tests
Playwright (UI) tests
Manual testing performed
UI screen recording / screenshots:
Not applicable.
Checklist:
Fixes <issue-number>: <short explanation>Fixes #<issue-number>above.Summary by Gitar
AppModeIconfor the app mode persona configuration.CustomizablePageHeaderto support dynamic subheaders for navigation and app mode pages.NavigationBlockerto consolidate unsaved changes handling.This will update automatically on new commits.
Greptile Summary
Updates persona customization UI behavior and coverage.
NavigationBlocker.Confidence Score: 5/5
The PR appears safe to merge.
No blocking failures remain in the fix for the previously reported app-mode persona subtitle issue.
Important Files Changed
Reviews (9): Last reviewed commit: "fix(ui): don't trip NavigationBlocker on..." | Re-trigger Greptile