Skip to content

Add global header and sesh settings drawer#874

Merged
marcodejongh merged 2 commits intomainfrom
feature/global-header-sesh-settings
Mar 1, 2026
Merged

Add global header and sesh settings drawer#874
marcodejongh merged 2 commits intomainfrom
feature/global-header-sesh-settings

Conversation

@marcodejongh
Copy link
Owner

Summary

  • Unified persistent global header across all pages (home, board, notifications, library, profile, settings, etc.) with UserDrawer, search pill, and context-aware Sesh button
  • New SeshSettingsDrawer with session info (name, participants, duration, goal), angle selector, and stop session button
  • Elevated session ending to root-level PersistentSessionContext so ending a session works from any page (not just board routes)
  • Simplified board page header by removing UserDrawer and fixed positioning (now a contextual toolbar)
  • Added onAngleChange callback prop to AngleSelector for non-URL-based angle changes

Key Changes

File Change
global-header/global-header.tsx New persistent header component
global-header/global-header.module.css Header styles
sesh-settings/sesh-settings-drawer.tsx New sesh settings drawer
persistent-session-context.tsx Added endSessionWithSummary, sessionSummary, dismissSessionSummary
persistent-session-wrapper.tsx Renders GlobalHeader + root SessionSummaryDialog
home-page-content.tsx Removed inline header, drawers, boardConfigs prop
board-page/header.tsx Removed UserDrawer, AngleSelector; simplified to toolbar
board-page/angle-selector.tsx Added optional onAngleChange prop
Board route layouts Removed unused boardConfigs fetch
All page layouts/CSS Added paddingTop for fixed global header

Test plan

  • Global header appears on /, board pages, notifications, library, profile, settings
  • Search pill opens UnifiedSearchDrawer (climbs on board routes, boards elsewhere)
  • Sesh button is blue with no session, opens StartSeshDrawer
  • Start a session, Sesh button turns sage green
  • Tap sage green Sesh, opens SeshSettingsDrawer with angle selector
  • Stop session from drawer, session saved, summary dialog appears
  • Navigate between pages, header persists, bottom tab bar still works
  • Test on mobile viewport (responsive behavior, safe area insets)
  • Board page contextual toolbar still shows back button, search pill, angle selector, create button

🤖 Generated with Claude Code

@chatgpt-codex-connector
Copy link

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@vercel
Copy link

vercel bot commented Feb 28, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
boardsesh Building Building Preview, Comment Mar 1, 2026 8:09pm

Request Review

@claude
Copy link

claude bot commented Feb 28, 2026

Claude Review

Ready to merge - Minor issues noted below, but nothing blocking.

Issues

  1. Duplicated magic padding value across 10+ files - The expression calc(max(8dvh, 48px) + env(safe-area-inset-top, 0px)) is hardcoded in CSS modules and inline styles throughout the PR. Consider extracting to a CSS custom property (e.g., --global-header-height) in theme config for maintainability.

  2. Unused state variable - packages/web/app/home-page-content.tsx:41 - _selectedBoard is renamed with underscore prefix but never used. If the value isn't needed, consider removing the destructured state entirely.

  3. No tests for new components - SeshSettingsDrawer and GlobalHeader are new components with user-facing functionality (session ending, navigation) but lack test coverage. The new context methods (endSessionWithSummary, sessionSummary, dismissSessionSummary) are also untested.

marcodejongh and others added 2 commits March 1, 2026 21:09
Unify all pages under a single persistent global header with UserDrawer,
search pill, and context-aware Sesh button (sage green when session active).
Move angle selector into a new sesh settings drawer. Elevate session ending
to root level so it works from any page.

- Create GlobalHeader component rendered at root level
- Create SeshSettingsDrawer with session info, angle selector, stop button
- Add endSessionWithSummary/sessionSummary to PersistentSessionContext
- Remove inline headers from home page and simplify board page header
- Add paddingTop for fixed header across all page layouts
- Add onAngleChange callback prop to AngleSelector

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…state

Define --global-header-height in index.css and replace all hardcoded
calc(max(8dvh, 48px) + env(safe-area-inset-top)) expressions across
14 files. Also remove the dead selectedBoard state from home-page-content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@marcodejongh marcodejongh force-pushed the feature/global-header-sesh-settings branch from 1bb374b to a4fa560 Compare March 1, 2026 20:09
@claude
Copy link

claude bot commented Mar 1, 2026

Claude Review

Ready to merge - Minor issues noted below, but nothing blocking.


Minor Issues:

  1. sesh-settings-drawer.tsx:87-94 - Fragile path manipulation: handleAngleChange assumes the angle is always the last path segment. This could navigate to an incorrect URL for non-standard route patterns (e.g., routes with trailing slugs).

  2. home-page-content.tsx - UX regression: Removed onFindClimbers prop from ActivityFeed means the "Find Climbers" button no longer appears in the empty feed state. Users can still access search via global header, but it's a less discoverable path for new users.

  3. No tests added - New components (GlobalHeader, SeshSettingsDrawer) and the elevated endSessionWithSummary functionality have no test coverage.

Documentation: No updates needed - changes don't affect the documented WebSocket architecture.

@marcodejongh marcodejongh merged commit a4fa560 into main Mar 1, 2026
4 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