feat(layout): replace floating feedback launcher with a top-bar icon button #93

Merged
YousifShkara merged 1 commit from feat/bunyip-upgrade-06-feedback-top-bar into main 2026-06-10 07:24:57 +02:00
Owner

The floating feedback widget at views/layout.rs::feedback_launcher sat
fixed bottom-4 right-4 z-40 and overlapped the Vervain Agent Download buttons on the bottom of /downloads. The auditor reported the launcher partially covered the platform-specific download CTAs, and any future page whose primary action lands in the bottom-right would hit the same collision.

Picked the structural fix from docs/bunyip-upgrade/06-feedback-widget-positioning.md: relocate the affordance to a top-bar icon button (smile-plus) sitting next to the existing theme controls. Top-bar icons live in normal document flow, so no page's content stacking context fights them for clicks.

Wiring:

  • New helper feedback_top_button(icon_class) mirrors theme_controls: a <a href="/feedback"> styled as a ghost icon button. Visually consistent with the existing top-bar cluster.
  • app_topbar (authenticated shells) now renders the feedback button between theme_controls and the logout icon. Every authenticated page (dashboard_shell, admin_shell) inherits it; no per-page change.
  • header (public shells) grows a show_feedback: bool parameter that gates the top-bar feedback button on the marketing pages. public_shell's historical launcher: bool parameter renames to show_feedback with identical semantics, plumbed straight through. Marketing routes (Pricing / Our Story / Terms / Privacy) keep their true; the auth pages (Login / Register / Password reset) keep their false to preserve the minimal pre-auth chrome.
  • feedback_launcher and its (feedback_launcher()) call in dashboard_shell are deleted. The fixed-position fragment is gone entirely; no z-index competition remains.

Closes finding 8 (feedback widget overlaps Downloads page buttons) from the Claude-for-Chrome audit. See docs/bunyip-upgrade/06-feedback-widget-positioning.md for the full spec.

The floating feedback widget at `views/layout.rs::feedback_launcher` sat `fixed bottom-4 right-4 z-40` and overlapped the Vervain Agent Download buttons on the bottom of `/downloads`. The auditor reported the launcher partially covered the platform-specific download CTAs, and any future page whose primary action lands in the bottom-right would hit the same collision. Picked the structural fix from `docs/bunyip-upgrade/06-feedback-widget-positioning.md`: relocate the affordance to a top-bar icon button (smile-plus) sitting next to the existing theme controls. Top-bar icons live in normal document flow, so no page's content stacking context fights them for clicks. Wiring: - New helper `feedback_top_button(icon_class)` mirrors `theme_controls`: a `<a href="/feedback">` styled as a ghost icon button. Visually consistent with the existing top-bar cluster. - `app_topbar` (authenticated shells) now renders the feedback button between `theme_controls` and the logout icon. Every authenticated page (`dashboard_shell`, `admin_shell`) inherits it; no per-page change. - `header` (public shells) grows a `show_feedback: bool` parameter that gates the top-bar feedback button on the marketing pages. `public_shell`'s historical `launcher: bool` parameter renames to `show_feedback` with identical semantics, plumbed straight through. Marketing routes (Pricing / Our Story / Terms / Privacy) keep their `true`; the auth pages (Login / Register / Password reset) keep their `false` to preserve the minimal pre-auth chrome. - `feedback_launcher` and its `(feedback_launcher())` call in `dashboard_shell` are deleted. The fixed-position fragment is gone entirely; no `z-index` competition remains. Closes finding 8 (feedback widget overlaps Downloads page buttons) from the Claude-for-Chrome audit. See `docs/bunyip-upgrade/06-feedback-widget-positioning.md` for the full spec.
feat(layout): replace floating feedback launcher with a top-bar icon button
All checks were successful
Create release / Create release from merged PR (pull_request) Has been skipped
Check / fmt / clippy / build / test (pull_request) Successful in 2m23s
99921d3a16
The floating feedback widget at `views/layout.rs::feedback_launcher` sat
`fixed bottom-4 right-4 z-40` and overlapped the Vervain Agent Download buttons on the bottom of `/downloads`. The auditor reported the launcher partially covered the platform-specific download CTAs, and any future page whose primary action lands in the bottom-right would hit the same collision.

Picked the structural fix from `docs/bunyip-upgrade/06-feedback-widget-positioning.md`: relocate the affordance to a top-bar icon button (smile-plus) sitting next to the existing theme controls. Top-bar icons live in normal document flow, so no page's content stacking context fights them for clicks.

Wiring:

- New helper `feedback_top_button(icon_class)` mirrors `theme_controls`: a `<a href="/feedback">` styled as a ghost icon button. Visually consistent with the existing top-bar cluster.
- `app_topbar` (authenticated shells) now renders the feedback button between `theme_controls` and the logout icon. Every authenticated page (`dashboard_shell`, `admin_shell`) inherits it; no per-page change.
- `header` (public shells) grows a `show_feedback: bool` parameter that gates the top-bar feedback button on the marketing pages. `public_shell`'s historical `launcher: bool` parameter renames to `show_feedback` with identical semantics, plumbed straight through. Marketing routes (Pricing / Our Story / Terms / Privacy) keep their `true`; the auth pages (Login / Register / Password reset) keep their `false` to preserve the minimal pre-auth chrome.
- `feedback_launcher` and its `(feedback_launcher())` call in `dashboard_shell` are deleted. The fixed-position fragment is gone entirely; no `z-index` competition remains.

Closes finding 8 (feedback widget overlaps Downloads page buttons) from the Claude-for-Chrome audit. See `docs/bunyip-upgrade/06-feedback-widget-positioning.md` for the full spec.
YousifShkara deleted branch feat/bunyip-upgrade-06-feedback-top-bar 2026-06-10 07:24:57 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
psa-systems/bunyip!93
No description provided.