Repository navigation
Web app: responsive desktop panel, guest mode and GitHub Pages deploy - #21
Merged
Merged
Conversation
The landing page no longer ships the clickable fake demo. Its calls to action open the real app instead: "Try it as a guest" goes to app/guest and "Sign in" to app/welcome, relative to the site root so they work under the GitHub Pages project path. VITE_APP_URL points them at a local dev server. Old #/try links forward to the guest entry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On the web, Welcome offers "Continue as guest" and /guest starts one directly (the landing page links there). A guest is an anonymous Supabase user named Guest that uses the real product API and starts at onboarding. It can save its progress by adding an email and password to the same user, or leave guest mode. Phones have no guest entry. Desktop widths show the sign-in screens as a split layout with a brand panel. Auth redirects on the web now include the router base path, so they return to the GitHub Pages app URL. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On the web, every interactive kit component gets hover feedback, a pointer cursor and a keyboard focus ring; sliders, Segmented and radio groups work with the mouse and the keyboard. On desktop widths a Sheet opens as a centered dialog that closes on Escape or a click outside and returns focus. New desktop pieces: Panel, StatTile, Tooltip (IconButton shows one from its label), Kbd, HoverBand, webStyle and useWebKeyboard. Native rendering is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From 768 px the Calendar tab is a month board of day tiles with session chips beside a sticky day panel, with keyboard navigation (arrows, T, P/N). Plan history shows a version timeline next to the selected version's changes and sessions. On the web the device calendar is reported as unsupported, so sync and planning never ask for it. Phones keep their layout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ChatPanel renders the conversation either as the /coach page or inside the desktop shell's dock and drawer, taking the prefill, attached session and Move it intent as props. On the web Enter sends and Shift+Enter adds a line, Escape closes the dock, new messages ease in, and the thread no longer jumps to the end after scrolling up. /coach on desktop centres the thread; phones keep the same screen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From 768 px the You tab is a dashboard: the assistant's summary, the answers that shape the plan, how Movo sees the person, progress across the weeks, feedback and shortcuts, with an Edit answers menu. Profile pages, Settings (two columns, appearance preview tiles) and Data & privacy get desktop layouts. Guests see no email row and leave through the guest card instead of Sign out. On the web, phone-only calendar and step rows are replaced by one note. Phones keep their layout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On the web from 768 px, signed-in pages render inside a shell: a sidebar (Today, Calendar, You, Plan history, account card, "Ask your coach" with Cmd/Ctrl K) that folds to an icon rail at medium widths, and the coach chat as a resizable docked column on wide screens or a drawer at medium widths. useOpenChat opens the dock there and still pushes /coach on phones. Feedback, Log it and Edit answers open as centred dialogs; the gym runner stays full screen. The responsive foundation (useLayout, Columns, Grid, PageHeader and a desktop-aware Content) gates every desktop layout; native and web below 768 px keep the phone layout. Pages get per-route titles, theme colours, scrollbars and focus rings on the web. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From 768 px onboarding shows a step rail with each answer and the progress, the questions in a card with a short "why we ask" aside, inline Back and Continue (Enter continues) and slide transitions. Choices, places and sports become card grids; Review shows the answers as cards before Build plan. On the web Review offers only the Google Calendar row. Phones keep the same steps and order. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From the dock over a nested page, router.navigate pushed a second set of tabs. It now goes through the shell's navigation, which goes back down to the tabs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The GitHub Pages export renders from Expo's plain SPA template, so app/+html.tsx (scrollbars, selection, focus ring, background, Movo icon) never ran there. The style sheet and icon now live in one module that +html.tsx uses and DocumentHead adds at runtime when the document lacks them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…p web From 768 px the session page has a main column (hero, coach tip, the plan at a larger media size) and a sticky action column (Start or Log it, Move it, Skip it, Ask your coach, and the done state). Log it is a page with a summary card; FIT and GPX files import from the browser's picker or by drag and drop, read in memory. Feedback opens as a dialog and its options take Space and arrow keys. The gym runner is a full-screen focus mode with keyboard shortcuts; a late timer in a background tab still ends on time. Phones keep their layouts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From 768 px Today shows a page header with week paging (arrows, T) and "Ask your coach", a larger hero for the selected day with the session's steps, a seven-day week board, and a sticky side column: week progress, next week, why this plan and quick plan changes. Building, failed, empty and past-week states have desktop layouts. The step counter reports itself unsupported on the web. Phones keep their layout. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
npm run build:pages builds the landing page and exports the Expo app as a single-page app under /hackyeah-2026/app (app.config.ts sets the base path only when EXPO_WEB_BASE_URL is set; local and native builds are unchanged), then copies the app page to 404.html so deep links and reloads work. It refuses to build without Supabase values or with a secret key. The Pages workflow typechecks and builds on pull requests without deploying, and deploys from main and develop. It uses repository variables when set and otherwise the publishable Supabase URL and key, which the client bundle carries anyway. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds the web app feature doc (desktop panel, shell, guest mode, redirects, hosted settings) and updates AGENTS.md, the development and design docs and the website README: the web app is the Expo web build, guests are anonymous Supabase users on the real API, and the website demo is gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
npm run preview:pages serves dist/pages under /hackyeah-2026/ the way GitHub Pages does (file, .html, index.html, else 404.html), so reloading an app deep link works as on the real site. The pages-preview launch configuration runs it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Summary
The whole app now runs on the web as a responsive panel, with sign-in or Continue as guest on the real API.
useLayout())./app/guest.npm run build:pagesbuilds the landing page at/hackyeah-2026/and the app at/hackyeah-2026/app/. The app is a single-page export, with a404.htmlfallback so deep links and reloads work.main/develop.npm run preview:pagesserves the result the way GitHub Pages does.Docs: new web app feature doc;
AGENTS.md, development, deployment, design and website docs updated.Acceptance criteria
…/hackyeah-2026/app/auth/callback,/auth/reset). Both URLs are in the Supabase allowlist.404.htmlfallback).Verification (4 October 2026)
Commands (in
apps/mobileunless noted):npm run typecheck(app + 3 test projects)npx eslint srcnpm run test:remotenpm testnpm run test:calendarnpm run test:activity-importnpm run typecheck --workspace @hackyeah/websitenpm run build:pages(repo root)Production build, served with
preview:pagesat 1440 px, against the hosted Supabase project:Mock mode: each area was checked at 1440/1024/390 by the agent that built it. Browser checks were trimmed late on to save credits, so some widths and states were checked by DOM only; the PR notes per area are in the commit messages.
Notes for reviewers
https://taqix.github.io/hackyeah-2026/app/.🤖 Generated with Claude Code