Repository navigation
feat(ui): move Ask AI to a fixed corner launcher - #8016
Merged
Merged
Conversation
What changed: Move the launcher from the header into the footer stack, retain the shared gradient, and use smaller mobile padding. Update the ADR and add Playwright coverage. Why: Keep Ask AI available as readers scroll without a wide mobile control. Impact: Hide footer controls during chat and modal interactions, preserve focus and conversations, and measure page-end clearance. Hide closed wayfinding content at text zoom. Verification: 18 launcher Playwright tests passed after the mobile adjustment; the earlier combined launcher and timestamp run passed 22 tests. TypeScript, ESLint, Hugo preview builds, and live Kapa answer/history checks passed. Physical-device and deployed-preview checks remain pending.
jstirnaman
marked this pull request as ready for review
November 6, 2026 18:17
jstirnaman
requested review from
sanderson
and
a balanced review from Copilot
and removed request for
a team
November 6, 2026 18:17
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Unresolved modal-readiness and back-forward-cache bugs can cause modal overlap or leave Ask AI blocked, while nonportable screenshot paths, unsupported Firefox touch emulation, and outdated widget assertions cause test failures.
5 open issues
What changed in this PR
Moves the global Ask AI entry point from the header to a fixed lower-right launcher, keeping it accessible while readers scroll and preserving the existing chat integration.
Changes:
- Adds a responsive, labeled launcher beneath the timestamp control, with safe-area spacing and page-end clearance.
- Hides the control stack during chat and excludes it from keyboard access behind modals.
- Adds Playwright coverage and records the revised design in ADR 0008.
| File | Description |
|---|---|
playwright/e2e/custom-timestamps.spec.js |
Sets consistent preferences before timestamp tests. |
playwright/e2e/ask-ai-launcher.spec.js |
Adds launcher layout, interaction, accessibility, and recovery coverage. |
layouts/partials/topnav.html |
Removes the header launcher. |
layouts/partials/footer/widgets.html |
Adds the labeled launcher and chat icon to the footer stack. |
docs/adr/0008-shared-article-navigation-and-ask-ai.md |
Records launcher placement, sizing, and interaction decisions. |
assets/styles/layouts/_v3-wayfinding.scss |
Hides the closed wayfinding modal. |
assets/styles/layouts/_page-layout.scss |
Removes header-specific styling and hides the stack during chat at all widths. |
assets/styles/layouts/_footer-widgets.scss |
Defines responsive launcher styling, safe-area offsets, and scroll clearance. |
assets/js/components/ask-ai.ts |
Measures stack clearance and manages modal-based keyboard exclusion. |
Review effort: Balanced
What changed: Recheck modal availability after widget readiness and preserve subscriptions for persisted pagehide. Migrate outdated footer resize coverage to Playwright and use per-test screenshot paths. Why: Prevent modal overlap and blocked launchers after cached navigation. Make test and DOM contracts explicit with TypeScript declarations, typed geometry, a dedicated type-check command, and ESLint project support. Impact: Preserve launcher behavior while removing redundant comments, optional checks, and function-type assertions. Keep Firefox touch coverage because Playwright 1.63 supports hasTouch. Verification: 26 Chromium Playwright tests passed. Production and Playwright TypeScript checks, ESLint, diff checks, and Hugo testing build passed. Firefox browser download was blocked by network policy. Product-spec changes remain excluded.
1 of 3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What changed
Move the global Ask AI button from the header to the lower-right footer stack. Keep the production gradient, add an outline chat icon, and retain the 1rem label. Use a 128 × 48px minimum on desktop and 112 × 44px on mobile, with reduced mobile padding.
Place the existing timestamp control above the launcher. Hide the stack while chat is open, exclude it from keyboard access behind modal backdrops, and measure its height to provide scrollable page-end clearance. Hide the closed wayfinding modal so enlarged text cannot extend it into the viewport.
Update ADR 0008 and add Playwright coverage. Product-spec and plan files are excluded.
Why
The header button disappears as readers scroll. A compact fixed launcher keeps Ask AI discoverable while limiting the amount of article content it covers.
Impact
Readers can open the existing Kapa composer from any scroll position. Preserve the existing controller, source filters, contextual prefills, conversation history, drawer widths, and focus restoration. Timestamp eligibility, appearance, and date behavior remain unchanged. Temporary overlap with article content is intentional; final feedback actions can scroll clear of the stack. The launcher remains excluded from 404 and print views.
Verification
To rerun locally:
PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH=/usr/bin/chromium yarn test:e2e:playwright playwright/e2e/ask-ai-launcher.spec.js playwright/e2e/custom-timestamps.spec.js --workers=2.Preview pages
/influxdb3/cloud-serverless/get-started/write/Expected: timestamp control above the compact launcher; opening chat hides both; closing restores focus without a scroll jump. Final feedback can scroll above the stack.
/influxdb3/core/api/write-data/Expected: one fixed launcher on an API operation page with readable content behind it.
/influxdb3/core/admin/identify-version/Expected: contextual Ask AI links retain their prefills, source selection, and return focus.
/and/404.htmlExpected: homepage launcher without a timestamp control; no launcher on 404.
The repository's PR Preview workflow skips drafts. Mark ready when the deployed preview is needed.
Checklist
origin/master.npx hugo --quiet): Hugo testing server builds passed; this standalone command was not rerun.Suggested reviewers (click to expand)
The docs team is assigned through CODEOWNERS. Keep this PR in draft until deployed-preview and physical-device verification are complete.