Skip to content

feat(ui): desktop content column for entry screens#111

Merged
gelbh merged 5 commits into
mainfrom
feat/desktop-entry-column
Jul 19, 2026
Merged

feat(ui): desktop content column for entry screens#111
gelbh merged 5 commits into
mainfrom
feat/desktop-entry-column

Conversation

@gelbh

@gelbh gelbh commented Jul 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add useDesktopLayout (1024px) and DesktopContentColumn (28rem entry).
  • Constrain home/join/premium/feedback/auth CTAs to ≤20rem at desktop; mobile unchanged.
  • Shared ops rail CSS tokens; admin aliases onto --ops-*.

Test plan

  • Targeted Vitest for layout gate + column
  • Desktop @smoke layout-ops e2e
  • Manually: ≥1024 home CTAs capped; <1024 unchanged

Summary by CodeRabbit

  • New Features

    • Added a reusable desktop layout container (DesktopContentColumn) and a useDesktopLayout hook for consistent desktop sizing and centering.
    • Updated Home, Feedback, Join Session, Premium, and Play Hub to use the new desktop-constrained layout.
    • Introduced shared desktop “ops” design tokens and new desktop styling for entry controls.
  • Bug Fixes

    • Ensured desktop entry actions (including “Join session”) respect the intended maximum width.
  • Tests

    • Added unit tests for the desktop layout container and hook.
    • Added an E2E smoke test validating the desktop link width constraint.

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Adds desktop viewport detection, a reusable content-width wrapper, shared layout tokens, constrained entry controls, and desktop layout coverage across entry routes and Play Hub. Unit and end-to-end tests verify breakpoint behavior, width classes, visibility, and CTA sizing.

Changes

Desktop entry layout

Layer / File(s) Summary
Desktop layout primitives
src/hooks/useDesktopLayout.ts, src/hooks/useDesktopLayout.test.ts, src/components/ui/DesktopContentColumn.tsx, src/components/ui/DesktopContentColumn.test.tsx
Adds 1024px desktop detection and a reusable wrapper supporting centered entry and social max-width variants, with unit tests.
Shared desktop sizing styles
src/styles/desktop-ops.css, src/index.css, src/styles/map-shell.css, src/styles/home-entry.css
Adds shared rail tokens, imports them globally, reuses them in the map shell, and constrains desktop entry controls to centered 20rem-wide elements.
Entry surface integration
src/routes/Home.tsx, src/routes/Feedback.tsx, src/routes/JoinSession.tsx, src/routes/Premium.tsx, src/components/home/PlayHubSheet.tsx, src/components/auth/*
Wraps desktop entry content and action groups with shared layout constraints while preserving existing navigation, form, and action behavior.
Desktop layout validation
e2e/features/desktop/layout-ops.spec.ts
Adds a 1280px Playwright check that verifies the Play Hub “Join session” link is visible and no wider than 320px.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Browser
  participant EntryRoute
  participant DesktopContentColumn
  participant useDesktopLayout
  participant CSSLayout
  Browser->>EntryRoute: open desktop entry screen
  EntryRoute->>DesktopContentColumn: render entry content
  DesktopContentColumn->>useDesktopLayout: check 1024px breakpoint
  useDesktopLayout-->>DesktopContentColumn: return desktop match
  DesktopContentColumn->>CSSLayout: apply centered 28rem wrapper
  CSSLayout-->>Browser: render constrained entry controls
Loading

Possibly related PRs

  • gelbh/jetlag#2: Related Home entry-screen viewport, scroll-locking, and layout adjustments.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/desktop-entry-column

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@e2e/features/desktop/layout-ops.spec.ts`:
- Around line 14-15: Update the width assertion in the layout test to enforce
the actual 20rem limit of 320px at the stated root size, replacing the
permissive 336px threshold or asserting the computed max-width directly.

In `@src/components/ui/DesktopContentColumn.tsx`:
- Around line 24-25: Update the non-desktop branch of DesktopContentColumn to
apply the supplied className while preserving its current no-width-constraint
behavior and rendering children unchanged. Add a regression assertion covering
className preservation below the desktop breakpoint, using the component’s
existing test conventions.

In `@src/routes/Feedback.tsx`:
- Around line 24-28: Move the `flex min-h-0 flex-1 flex-col justify-between`
layout classes from `DesktopContentColumn` onto an inner wrapper that renders at
all viewport sizes, preserving the existing `space-y-3` and
`screenHeaderOffsetClassName` content while ensuring the feedback CTA group
keeps the same flex layout on mobile.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 071dcd13-0ef6-4426-8a5f-aff0bf4d050f

📥 Commits

Reviewing files that changed from the base of the PR and between 1e9ea51 and 776ab29.

📒 Files selected for processing (16)
  • e2e/features/desktop/layout-ops.spec.ts
  • src/components/auth/AccountSignInGate.tsx
  • src/components/auth/UsernameSetupGate.tsx
  • src/components/home/PlayHubSheet.tsx
  • src/components/ui/DesktopContentColumn.test.tsx
  • src/components/ui/DesktopContentColumn.tsx
  • src/hooks/useDesktopLayout.test.ts
  • src/hooks/useDesktopLayout.ts
  • src/index.css
  • src/routes/Feedback.tsx
  • src/routes/Home.tsx
  • src/routes/JoinSession.tsx
  • src/routes/Premium.tsx
  • src/styles/desktop-ops.css
  • src/styles/home-entry.css
  • src/styles/map-shell.css

Comment thread e2e/features/desktop/layout-ops.spec.ts Outdated
Comment thread src/components/ui/DesktopContentColumn.tsx Outdated
Comment thread src/routes/Feedback.tsx Outdated
@gelbh

gelbh commented Jul 19, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai approve

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
✅ Action performed

Comments resolved and changes approved.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/routes/Feedback.tsx`:
- Around line 24-25: Update the desktop layout around DesktopContentColumn so
the outer column is the flex-growing child again, allowing the CTA group to
remain pushed to the bottom. Retain the inner div wrapper and its mobile flex
behavior, but remove or relocate the desktop flex-growth styling from the inner
wrapper as needed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: fd298aac-c0bb-4211-9305-11d440f173a5

📥 Commits

Reviewing files that changed from the base of the PR and between 776ab29 and 54dfba5.

📒 Files selected for processing (4)
  • e2e/features/desktop/layout-ops.spec.ts
  • src/components/ui/DesktopContentColumn.test.tsx
  • src/components/ui/DesktopContentColumn.tsx
  • src/routes/Feedback.tsx

Comment thread src/routes/Feedback.tsx Outdated
@gelbh

gelbh commented Jul 19, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai approve

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
✅ Action performed

Comments resolved and changes approved.

@gelbh
gelbh force-pushed the feat/desktop-entry-column branch 2 times, most recently from 8cb8fd4 to f7e8d39 Compare July 19, 2026 19:47
@gelbh
gelbh force-pushed the feat/desktop-entry-column branch from f7e8d39 to 2f646e2 Compare July 19, 2026 20:04

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/components/ui/DesktopContentColumn.test.tsx`:
- Around line 39-56: Add desktop-branch coverage in the existing
DesktopContentColumn max-width test by passing className="flex flex-1" and
asserting both caller classes remain alongside the expected max-width class.
Keep the test focused on the desktop wrapper behavior and preserve the existing
entry or social max-width assertion.

In `@src/hooks/useDesktopLayout.test.ts`:
- Around line 7-14: Update the matchMedia stub in the desktop layout tests to
set matches only when query exactly equals "(min-width: 1024px)", while
preserving false results for other queries. Ensure the related assertions cover
both the expected width query and an incorrect query such as "(min-height:
1024px)" without relying on substring matching.

In `@src/routes/JoinSession.tsx`:
- Around line 192-250: Update the DesktopContentColumn usages to preserve
desktop vertical spacing: in src/routes/JoinSession.tsx lines 192-250, add
className="flex flex-col gap-8"; in src/routes/Premium.tsx lines 149-199, add
className="flex flex-col gap-4" to both DesktopContentColumn instances. No other
changes are needed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 14162892-c067-4f43-abdc-2a873ce88e05

📥 Commits

Reviewing files that changed from the base of the PR and between 54dfba5 and 2f646e2.

📒 Files selected for processing (16)
  • e2e/features/desktop/layout-ops.spec.ts
  • src/components/auth/AccountSignInGate.tsx
  • src/components/auth/UsernameSetupGate.tsx
  • src/components/home/PlayHubSheet.tsx
  • src/components/ui/DesktopContentColumn.test.tsx
  • src/components/ui/DesktopContentColumn.tsx
  • src/hooks/useDesktopLayout.test.ts
  • src/hooks/useDesktopLayout.ts
  • src/index.css
  • src/routes/Feedback.tsx
  • src/routes/Home.tsx
  • src/routes/JoinSession.tsx
  • src/routes/Premium.tsx
  • src/styles/desktop-ops.css
  • src/styles/home-entry.css
  • src/styles/map-shell.css

Comment thread src/components/ui/DesktopContentColumn.test.tsx
Comment thread src/hooks/useDesktopLayout.test.ts
Comment thread src/routes/JoinSession.tsx Outdated
@gelbh

gelbh commented Jul 19, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai approve

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 19, 2026
@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
✅ Action performed

Comments resolved and changes approved.

@gelbh

gelbh commented Jul 19, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai approve

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
src/components/ui/DesktopContentColumn.test.tsx (1)

42-49: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Assert both caller classes as distinct tokens.

toMatch(/flex/) also matches flex-1, so the test does not verify that the bare flex class is preserved. Use classList.contains("flex") and classList.contains("flex-1").

As per path instructions, tests should use behavior-focused assertions.

Suggested assertion update
-    expect(root?.className).toMatch(/flex/);
-    expect(root?.className).toMatch(/flex-1/);
+    expect(root).not.toBeNull();
+    expect(root?.classList.contains("flex")).toBe(true);
+    expect(root?.classList.contains("flex-1")).toBe(true);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/ui/DesktopContentColumn.test.tsx` around lines 42 - 49, Update
the DesktopContentColumn test assertions to use root.classList.contains for
separate exact-token checks of “flex” and “flex-1”, while retaining the existing
max-width assertion.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Duplicate comments:
In `@src/components/ui/DesktopContentColumn.test.tsx`:
- Around line 42-49: Update the DesktopContentColumn test assertions to use
root.classList.contains for separate exact-token checks of “flex” and “flex-1”,
while retaining the existing max-width assertion.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: dd69a0dd-eaa1-4b1b-b026-e7c526468204

📥 Commits

Reviewing files that changed from the base of the PR and between 2f646e2 and ce67ecc.

📒 Files selected for processing (4)
  • src/components/ui/DesktopContentColumn.test.tsx
  • src/hooks/useDesktopLayout.test.ts
  • src/routes/JoinSession.tsx
  • src/routes/Premium.tsx

@coderabbitai

coderabbitai Bot commented Jul 19, 2026

Copy link
Copy Markdown
✅ Action performed

Comments resolved and changes approved.

@gelbh
gelbh merged commit b914673 into main Jul 19, 2026
8 checks passed
gelbh added a commit that referenced this pull request Jul 20, 2026
* feat(ui): add desktop content column for entry screens

* fix(ui): scope desktop entry CTA max-width to entry hosts

* fix(ui): address coderabbit desktop entry review

* fix(ui): restore Feedback desktop flex column parent

* fix(ui): address coderabbit desktop entry spacing and tests
@gelbh
gelbh deleted the feat/desktop-entry-column branch July 20, 2026 21:12
gelbh added a commit that referenced this pull request Jul 25, 2026
* feat(ui): add desktop content column for entry screens

* fix(ui): scope desktop entry CTA max-width to entry hosts

* fix(ui): address coderabbit desktop entry review

* fix(ui): restore Feedback desktop flex column parent

* fix(ui): address coderabbit desktop entry spacing and tests
gelbh added a commit that referenced this pull request Jul 25, 2026
…h 2 updates (#150)

* fix(ci): update settings map tab visual baseline (#74)

* test(e2e): update settings map tab snapshot for tilt control

* chore(ship): add npm run ship:poll wrapper script

* fix(sentry): ignore IDB deleted errors (#75)

* fix(sentry): ignore IDB deleted errors Fixes JETLAG-1S

* fix(sentry): bind IDB reset to failed connection

* fix(sentry): guard recaptcha and view transitions (#76)

* fix(sentry): guard recaptcha and transitions Fixes JETLAG-1P JETLAG-1T

* test(services): cover app check and IDB error helpers

* fix: address coderabbit review for sentry error helpers

* revert(map): remove tilted view preference (#77)

* revert(map): remove tilted view preference

* fix: address coderabbit review for map tilt revert

* fix(admin): resolve CSP violations and redirect-first sign-in (#78)

* fix(worker): route all requests through worker for nonce CSP

* fix(csp): allow CF challenge scripts and drop insights beacon

* fix(auth): use redirect-first Google sign-in under strict CSP

* chore(changeset): admin CSP and sign-in fixes

* fix(auth): remove unused test import

* fix(auth): ship thermos remediation for redirect-first OAuth

* fix(auth): address coderabbit review for OAuth tests and changelog

* feat(photo): add external send fallback when upload is down (#79)

* feat(photo): add sent_externally answer kind

* feat(chat): replace photo upload with external send fallback

* test(photo): cover mark-sent flow in unit, rules, and e2e

* chore(changeset): photo external send fallback

* fix(photo): disable mark-sent buttons while answer saves

* fix(photo): address coderabbit review for errors and legacy preview

* fix(admin): live-refresh map annotations in monitor (#80)

* fix(admin): gate session sync on auth and clear annotations on switch

* test(session): unmount hooks between useSessionSync emulator cases

* fix(session): address CodeRabbit on admin annotation sync

* chore(release): 0.6.3 (#81)

* feat(game): game over, stats, friends & leaderboards (#82)

* docs(game): add game-over stats leaderboard design spec

* feat(game): game over stats, friends, and leaderboards

* test(session): cover resetSessionForRematch callable client

* test(firestore): cover game result and profile serialization

* test(firestore): cover game result subscription client

* test(firestore): cover trail and location writes for coverage gate

* test(e2e): update smoke specs for Play hub home IA

* fix: address coderabbit review for game over stats PR

* fix: harden game-over subscription and trail sync edge cases

* fix: simplify auth-loading splash on stats routes

* chore(release): version 0.7.0 (#83)

* chore(release): version 0.7.0

* test(emulator): retry storage rules emulator cleanup

* test(e2e): fix home safe-area spec for Play hub IA (#84)

* fix(map): harden elimination worker and radar submit errors (#85)

* fix(map): harden elimination worker and radar submit errors

* fix: address coderabbit review for radar hardening

* feat(map): policy-driven question-setting placement camera (#86)

* feat(map): add policy-driven question-setting placement camera

* fix: address coderabbit review for placement camera

* fix: address remaining coderabbit review for placement camera

* chore(release): version 0.7.1 (#87)

* fix(auth): restore popup-first Google sign-in on premium (#88)

* fix(auth): restore popup-first Google sign-in on premium

* fix(auth): address coderabbit review for premium sign-in

* chore(release): version 0.7.2 (#89)

* feat(auth): unique username claim and social gates (#90)

* feat(auth): claim unique username after sign-in

* test(auth): align claimUsername tests with handler errors

* fix(auth): ship thermos remediation for username identity

* fix(auth): allow profile hook reset without lint error

* fix(auth): tidy profile hook lint disables

* fix(auth): address coderabbit review for username claim

* fix(auth): require claimed username for profile identity

* feat(friends): username search and friend requests (#91)

* feat(friends): search usernames and manage friend requests

* fix(friends): resolve mutual requests without orphan pending docs

* fix(friends): satisfy lint for list load and error cause

* fix(friends): rate-limit actions, cap pending lists, expand tests

* test(friends): cover profileFriends client callable wrapper

* fix(friends): loosen profileFriends test mock typing

* feat(leaderboard): ranked list with board subscribe (#92)

* feat(leaderboard): ranked list UI with board subscribe

* fix(leaderboard): lint subscribe effect and harden entry parse

* fix(leaderboard): tidy set-state-in-effect lint disable

* test(leaderboard): cover entry parse and board subscribe

* fix(leaderboard): drop unused onSnapshot error param in test

* fix(leaderboard): contiguous ranks after invalid entry filter

* fix(leaderboard): respect reduced motion on rank skeleton

* fix(navigation): wrap route navigate in startViewTransition for WebKit (#93)

* fix(navigation): wrap route navigate in startViewTransition for WebKit

* fix(navigation): address coderabbit route transition findings

* feat(map): smoother hybrid camera motion for question placement (#94)

* feat(map): smoother hybrid camera motion for question placement

* test(map): add computeFramedCenterZoom regression test

* test(map): add computeFramedCenterZoom padding and clamp cases

* refactor(map): extract isLargeCameraJump into domain layer

* fix(map): reset focusPreferFly after one-shot reframe is consumed

* chore(release): version 0.8.0 (#95)

* fix(sentry): filter IDB closing and Safari Load failed (#96)

* fix(sentry): filter IDB closing and Safari Load failed Fixes JETLAG-1X Fixes JETLAG-1V

* fix(sentry): ship thermos remediation for client noise filters

* test(sentry): cover Load failed trim in client noise predicate

* fix(map): harden map export against html2canvas oklch (#97)

* fix(map): harden map export against oklch html2canvas parse Fixes JETLAG-8

* fix(map): ship thermos remediation for map export oklch handling

* fix(map): rewrite clone colors to rgb before html2canvas capture

* fix(map): address coderabbit review for html2canvas color rewrite

* chore(release): version 0.8.1 (#98)

* chore(release): version 0.8.1

* docs(release): polish 0.8.1 notes for player-facing wording

* fix(sentry): match Safari Load failed host suffixes (#99)

* fix(sentry): match Safari Load failed host suffixes Fixes JETLAG-1Y

* fix(sentry): tighten Load failed host-suffix matcher

* test(e2e): add mobile layout and axe smoke checks (#101)

* test(e2e): add mobile layout and axe smoke checks

* fix(e2e): ship thermos remediation for layout axe smoke

* fix(e2e): assert map more-tools control stays in viewport

* ci: add stylelint for hand-written css (#100)

* ci: add stylelint for hand-written css

* fix(ci): ship thermos remediation for stylelint base

* fix(ci): make pre-commit stylelint paths filename-safe

* fix(ci): harden pre-commit path handling for bash

* fix(ci): reject partial staging in pre-commit lint hooks

* fix(ci): fail closed when inspecting unstaged pre-commit paths

* test(e2e): harden visual smoke coverage for entry screens (#103)

* ci: add lighthouse mobile budgets on pull requests (#102)

* ci: add lighthouse mobile budgets on pull requests

* fix(ci): ship thermos remediation for lighthouse config

* fix(ci): use lighthouse target-size assertion id

* fix(ci): disable checkout credentials for lighthouse job

* fix(sync): ignore already-exists on trail point append (#104)

* fix(sync): ignore already-exists on trail point append

* fix(ci): re-exec pre-commit under bash for husky sh

* feat(leaderboard): layout viewport quality gates (#105)

* feat(leaderboard): scroll metric filters as chip strip

* test(e2e): gate social layout overflow and visuals

* ci: add nightly layout-deep playwright workflow

* fix(e2e): ship thermos remediation for layout viewport gates

* fix: address coderabbit review for layout viewport gates

* fix(e2e): assert metric chip tap height not width

* feat(changelog): nest closed versions under minor and major groups (#106)

* feat(changelog): nest closed versions under minor and major groups

* fix(changelog): avoid render-time reassignment for latest highlight

* fix(changelog): sort entries and cover empty/invalid grouping edges

* chore(release): version 0.8.2 (#107)

* fix(admin): frame real play area on first monitor join (#108)

* fix(admin): re-read session after join so map frames play area

* fix(admin): extract join-preview helpers under 1k-line limit

* fix(admin): use getDocFromServer after join membership write

* test(admin): mock getDocFromServer on join re-read path

* fix(admin): keep join-preview helpers leaflet-free for emulator

* docs(changelog): clarify admin observe framing changeset copy

* feat(thermometer): cancel orphan and stuck GPS walks (#109)

* feat(thermometer): cancel orphan and stuck GPS walks

* fix(thermometer): move identity-heal walk cancel out of annotations

* fix(thermometer): avoid Date.now during MapTimerCluster render

* fix(thermometer): satisfy react-compiler and unused walk id lint

* fix(thermometer): address coderabbit cancel review

* test(thermometer): type getDocs mock for identity-heal coverage

* feat(leaderboard): board filters, lead pack, and sticky self footer (#110)

* feat(leaderboard): board filters, lead pack, and sticky self footer

* fix(leaderboard): fix board ready locator and stale self footer

* fix(leaderboard): fix self-entry metric type and effect lint

* fix(leaderboard): drop unused eslint-disable in self entry

* fix(leaderboard): address coderabbit board chrome review

* test(leaderboard): update filters visual snapshot for board chrome

* test(leaderboard): update filters visual snapshot for board chrome

* test(leaderboard): use 390x115 filters screenshot as baseline

* feat(ui): desktop content column for entry screens (#111)

* feat(ui): add desktop content column for entry screens

* fix(ui): scope desktop entry CTA max-width to entry hosts

* fix(ui): address coderabbit desktop entry review

* fix(ui): restore Feedback desktop flex column parent

* fix(ui): address coderabbit desktop entry spacing and tests

* test(e2e): refresh tutorial sandbox visual baselines on main (#116)

* feat(ui): desktop social column and friends master-detail (#112)

* feat(ui): desktop social column and friends master-detail

* fix(friends): allow selection clear effect for desktop master-detail

* fix(leaderboard): constrain self footer to social column on desktop

* feat(map): desktop ops shell with left tool rail (#113)

* feat(map): desktop ops shell with left tool rail

* fix(map): win rail dock CSS over fixed bottom dock

* fix(map): restore walking-cancel props on desktop status rail

* feat(map): desktop contextual rail + sheet host (#114)

* feat(map): add contextual rail and sheet host for desktop ops

* fix(map): gate rail Escape and tool shortcuts

* fix(map): split rail panel hook for fast refresh and harden shortcuts

* fix(map): drop unused ContextualRailTab import

* docs(desktop): add desktop-ops-adapt changeset for wide-screen layout (#115)

* chore(release): version 0.9.0 (#117)

* chore(release): version 0.9.0

* chore(release): bump package-lock to 0.9.0

* perf(caching): edge Cache-Control + elevation/entitlements/join soft TTL (#118)

* perf(worker): set cache-control for assets and geo

* perf(geo): persist elevation samples in indexeddb

* perf(billing): persist premium entitlements snapshot

* perf(session): debounce and cache join code preview

* fix(caching): harden entitlements uid check and elevation hydrate order

* test(session): assert join preview cache expires at ttl boundary

* perf(functions): shared Overpass L2 cache (KV + R2) (#119)

* perf(functions): add shared overpass l2 cache via r2 and kv

* fix(functions): wire overpass l2 secrets and sigv4 header order

* fix(session): Background Sync honesty + Transitland 5m L1 (#120)

* fix(session): honor background sync for offline annotations

* fix(pwa): restore skip_waiting and sync retry without clients

* chore(release): version 0.9.1 (#121)

* fix(functions): make overpass l2 secrets optional for deploy (#122)

* ci: modernize PR-gated suite and thin main CD (#123)

* ci: modernize PR-gated suite and thin main CD

* fix(ci): ship thermos remediation for paths-filter and deploy outputs

* fix(ci): address coderabbit review for checkout and shell env

* chore(ci): soften CodeRabbit App for CLI-primary gate (#143)

* chore: purge .cursor/ path mentions from tracked files

* chore: ignore agent-local IDE dir and harden pre-push

* chore: drop agent-local dir from tracked gitignore

* ci(dependabot): group updates and auto-merge safe npm bumps (#144)

* ci(dependabot): group npm patch and minor by dependency type

* ci(dependabot): auto-merge npm patch and minor when checks pass

* docs: note Dependabot grouping and auto-merge policy

* fix(ci): ship thermos remediation for Dependabot auto-merge deploy

* fix: address coderabbit cli review for Dependabot config

* fix: address coderabbit cli review for automerge head bind

* chore(deps): bump the production-dependencies group

Bumps the production-dependencies group in /functions with 2 updates: [@sentry/node](https://github.com/getsentry/sentry-javascript) and [firebase-functions](https://github.com/firebase/firebase-functions).


Updates `@sentry/node` from 10.65.0 to 10.67.0
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript@10.65.0...10.67.0)

Updates `firebase-functions` from 7.2.5 to 7.3.0
- [Release notes](https://github.com/firebase/firebase-functions/releases)
- [Commits](firebase/firebase-functions@v7.2.5...v7.3.0)

---
updated-dependencies:
- dependency-name: "@sentry/node"
  dependency-version: 10.67.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: firebase-functions
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: purge IDE config path mentions from tracked files

* chore: ignore local IDE dir and harden pre-push

* chore: drop local IDE dir from tracked gitignore

* ci(dependabot): group updates and auto-merge safe npm bumps (#144)

* ci(dependabot): group npm patch and minor by dependency type

* ci(dependabot): auto-merge npm patch and minor when checks pass

* docs: note Dependabot grouping and auto-merge policy

* fix(ci): ship thermos remediation for Dependabot auto-merge deploy

* fix: address coderabbit cli review for Dependabot config

* fix: address coderabbit cli review for automerge head bind

* fix(overpass): normalize AbortError to timed-out 504 without Sentry (#155)

* fix(overpass): normalize AbortError and retry HTTP 500 with failover logs

* test(overpass): cover failover AbortError and retryable statuses

* fix(overpass): ship thermos remediation for failover status classify

* fix: address coderabbit cli review for overpass failover tests

* fix: address coderabbit cli review for overpass body cancel

* fix: address coderabbit cli review for async body cancel

* fix(overpass): align QL timeout with 25s fetch abort (#157)

* feat(admin): annotation filters and sorts on session list (#158)

* feat(admin): add annotation count and last-annotation session filters

* test(admin): add annotation fields to AdminPanel fixtures

* fix(admin): coalesce session list refresh and fix initial loading (#160)

* fix(session): canonical end + idle purge orphan code sweep (#159)

* fix(session): end idle sessions with outcome and delete codes

* fix(session): raise idle purge batch and sweep orphan codes

* fix(session): finalize game results on abandoned outcome

* fix(session): ship thermos remediation for canonical end race

* fix(session): address coderabbit cli review for end/purge

* fix(session): delete session codes inside end transaction

* feat(session): host leave promote and endSession callables (#161)

* feat(session): add leaveHostSession and endSession callables

* feat(session): wire host leave promote and endSession callable

* fix(session): end alone host leave inside promote transaction

* fix(session): fall back to client end when callables unavailable

* fix(session): reclaim orphan session codes on create (#162)

* fix(session): reclaim orphan session codes on create

* fix(session): allow orphan sessionCodes delete in rules

* test(session): expect missing code after endRemoteSession delete

* chore(release): 0.9.2 host leave transfer notes (#163)

* feat(analytics): replace GA with PostHog EU (#166)

* chore(deps): add posthog-js

* feat(analytics): replace GA with PostHog facade

* feat(analytics): PostHog env CSP and privacy copy

* feat(analytics): wire session and premium events

* chore: add changeset for PostHog analytics

* fix(analytics): ship thermos remediation for event layering

* fix(analytics): address coderabbit cli review for scrub and host

* fix(analytics): disable PostHog GeoIP and external features

* fix(test): use vi.stubEnv for PostHog prod init coverage

* fix(map): restore iPhone PWA status bar safe-area inset (#169)

* perf(a11y): public-shell floors and create weight (#167)

* perf(firebase): lazy-init App Check on first token use

* fix(a11y): allow pinch zoom in viewport meta

* fix(a11y): raise contrast on action and dim tokens

* fix(create): request geolocation only on user gesture

* perf(create): defer map mount and preconnect basemaps

* chore: add changeset for perf a11y shells

* ci(lhci): raise public-shell score floors

* fix(test): avoid parameter properties in App Check mock

* fix(create): ship thermos remediation for map defer ownership

* fix(firebase): arm App Check before Functions callables

* fix(ci): address coderabbit cli review for lhci and App Check

* fix(ci): mock App Check in functions lazy tests and ease LHCI floor

* fix(ci): ease mobile LHCI floors after PostHog on main


---------

* feat(analytics): PostHog consent banner (#168)

* feat(analytics): add consent preference storage

* feat(analytics): gate PostHog behind consent

* feat(analytics): add production consent banner

* chore: add changeset for analytics consent

* fix(analytics): ship thermos remediation for consent capture gate

* fix(analytics): seed e2e consent and capture pageview on accept

* fix(analytics): seed consent denial in first-run e2e


---------

* chore(release): 0.9.3 analytics, consent, and a11y notes (#170)

* chore(ci): reject Cursor attribution trailers in commit-msg (#171)

* chore(ci): harden commit-msg hook before commitlint

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Tomer Gelbhart <gelbharttomer@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
gelbh added a commit that referenced this pull request Jul 25, 2026
…ectory with 13 updates (#164)

* fix(ci): update settings map tab visual baseline (#74)

* test(e2e): update settings map tab snapshot for tilt control

* chore(ship): add npm run ship:poll wrapper script

* fix(sentry): ignore IDB deleted errors (#75)

* fix(sentry): ignore IDB deleted errors Fixes JETLAG-1S

* fix(sentry): bind IDB reset to failed connection

* fix(sentry): guard recaptcha and view transitions (#76)

* fix(sentry): guard recaptcha and transitions Fixes JETLAG-1P JETLAG-1T

* test(services): cover app check and IDB error helpers

* fix: address coderabbit review for sentry error helpers

* revert(map): remove tilted view preference (#77)

* revert(map): remove tilted view preference

* fix: address coderabbit review for map tilt revert

* fix(admin): resolve CSP violations and redirect-first sign-in (#78)

* fix(worker): route all requests through worker for nonce CSP

* fix(csp): allow CF challenge scripts and drop insights beacon

* fix(auth): use redirect-first Google sign-in under strict CSP

* chore(changeset): admin CSP and sign-in fixes

* fix(auth): remove unused test import

* fix(auth): ship thermos remediation for redirect-first OAuth

* fix(auth): address coderabbit review for OAuth tests and changelog

* feat(photo): add external send fallback when upload is down (#79)

* feat(photo): add sent_externally answer kind

* feat(chat): replace photo upload with external send fallback

* test(photo): cover mark-sent flow in unit, rules, and e2e

* chore(changeset): photo external send fallback

* fix(photo): disable mark-sent buttons while answer saves

* fix(photo): address coderabbit review for errors and legacy preview

* fix(admin): live-refresh map annotations in monitor (#80)

* fix(admin): gate session sync on auth and clear annotations on switch

* test(session): unmount hooks between useSessionSync emulator cases

* fix(session): address CodeRabbit on admin annotation sync

* chore(release): 0.6.3 (#81)

* feat(game): game over, stats, friends & leaderboards (#82)

* docs(game): add game-over stats leaderboard design spec

* feat(game): game over stats, friends, and leaderboards

* test(session): cover resetSessionForRematch callable client

* test(firestore): cover game result and profile serialization

* test(firestore): cover game result subscription client

* test(firestore): cover trail and location writes for coverage gate

* test(e2e): update smoke specs for Play hub home IA

* fix: address coderabbit review for game over stats PR

* fix: harden game-over subscription and trail sync edge cases

* fix: simplify auth-loading splash on stats routes

* chore(release): version 0.7.0 (#83)

* chore(release): version 0.7.0

* test(emulator): retry storage rules emulator cleanup

* test(e2e): fix home safe-area spec for Play hub IA (#84)

* fix(map): harden elimination worker and radar submit errors (#85)

* fix(map): harden elimination worker and radar submit errors

* fix: address coderabbit review for radar hardening

* feat(map): policy-driven question-setting placement camera (#86)

* feat(map): add policy-driven question-setting placement camera

* fix: address coderabbit review for placement camera

* fix: address remaining coderabbit review for placement camera

* chore(release): version 0.7.1 (#87)

* fix(auth): restore popup-first Google sign-in on premium (#88)

* fix(auth): restore popup-first Google sign-in on premium

* fix(auth): address coderabbit review for premium sign-in

* chore(release): version 0.7.2 (#89)

* feat(auth): unique username claim and social gates (#90)

* feat(auth): claim unique username after sign-in

* test(auth): align claimUsername tests with handler errors

* fix(auth): ship thermos remediation for username identity

* fix(auth): allow profile hook reset without lint error

* fix(auth): tidy profile hook lint disables

* fix(auth): address coderabbit review for username claim

* fix(auth): require claimed username for profile identity

* feat(friends): username search and friend requests (#91)

* feat(friends): search usernames and manage friend requests

* fix(friends): resolve mutual requests without orphan pending docs

* fix(friends): satisfy lint for list load and error cause

* fix(friends): rate-limit actions, cap pending lists, expand tests

* test(friends): cover profileFriends client callable wrapper

* fix(friends): loosen profileFriends test mock typing

* feat(leaderboard): ranked list with board subscribe (#92)

* feat(leaderboard): ranked list UI with board subscribe

* fix(leaderboard): lint subscribe effect and harden entry parse

* fix(leaderboard): tidy set-state-in-effect lint disable

* test(leaderboard): cover entry parse and board subscribe

* fix(leaderboard): drop unused onSnapshot error param in test

* fix(leaderboard): contiguous ranks after invalid entry filter

* fix(leaderboard): respect reduced motion on rank skeleton

* fix(navigation): wrap route navigate in startViewTransition for WebKit (#93)

* fix(navigation): wrap route navigate in startViewTransition for WebKit

* fix(navigation): address coderabbit route transition findings

* feat(map): smoother hybrid camera motion for question placement (#94)

* feat(map): smoother hybrid camera motion for question placement

* test(map): add computeFramedCenterZoom regression test

* test(map): add computeFramedCenterZoom padding and clamp cases

* refactor(map): extract isLargeCameraJump into domain layer

* fix(map): reset focusPreferFly after one-shot reframe is consumed

* chore(release): version 0.8.0 (#95)

* fix(sentry): filter IDB closing and Safari Load failed (#96)

* fix(sentry): filter IDB closing and Safari Load failed Fixes JETLAG-1X Fixes JETLAG-1V

* fix(sentry): ship thermos remediation for client noise filters

* test(sentry): cover Load failed trim in client noise predicate

* fix(map): harden map export against html2canvas oklch (#97)

* fix(map): harden map export against oklch html2canvas parse Fixes JETLAG-8

* fix(map): ship thermos remediation for map export oklch handling

* fix(map): rewrite clone colors to rgb before html2canvas capture

* fix(map): address coderabbit review for html2canvas color rewrite

* chore(release): version 0.8.1 (#98)

* chore(release): version 0.8.1

* docs(release): polish 0.8.1 notes for player-facing wording

* fix(sentry): match Safari Load failed host suffixes (#99)

* fix(sentry): match Safari Load failed host suffixes Fixes JETLAG-1Y

* fix(sentry): tighten Load failed host-suffix matcher

* test(e2e): add mobile layout and axe smoke checks (#101)

* test(e2e): add mobile layout and axe smoke checks

* fix(e2e): ship thermos remediation for layout axe smoke

* fix(e2e): assert map more-tools control stays in viewport

* ci: add stylelint for hand-written css (#100)

* ci: add stylelint for hand-written css

* fix(ci): ship thermos remediation for stylelint base

* fix(ci): make pre-commit stylelint paths filename-safe

* fix(ci): harden pre-commit path handling for bash

* fix(ci): reject partial staging in pre-commit lint hooks

* fix(ci): fail closed when inspecting unstaged pre-commit paths

* test(e2e): harden visual smoke coverage for entry screens (#103)

* ci: add lighthouse mobile budgets on pull requests (#102)

* ci: add lighthouse mobile budgets on pull requests

* fix(ci): ship thermos remediation for lighthouse config

* fix(ci): use lighthouse target-size assertion id

* fix(ci): disable checkout credentials for lighthouse job

* fix(sync): ignore already-exists on trail point append (#104)

* fix(sync): ignore already-exists on trail point append

* fix(ci): re-exec pre-commit under bash for husky sh

* feat(leaderboard): layout viewport quality gates (#105)

* feat(leaderboard): scroll metric filters as chip strip

* test(e2e): gate social layout overflow and visuals

* ci: add nightly layout-deep playwright workflow

* fix(e2e): ship thermos remediation for layout viewport gates

* fix: address coderabbit review for layout viewport gates

* fix(e2e): assert metric chip tap height not width

* feat(changelog): nest closed versions under minor and major groups (#106)

* feat(changelog): nest closed versions under minor and major groups

* fix(changelog): avoid render-time reassignment for latest highlight

* fix(changelog): sort entries and cover empty/invalid grouping edges

* chore(release): version 0.8.2 (#107)

* fix(admin): frame real play area on first monitor join (#108)

* fix(admin): re-read session after join so map frames play area

* fix(admin): extract join-preview helpers under 1k-line limit

* fix(admin): use getDocFromServer after join membership write

* test(admin): mock getDocFromServer on join re-read path

* fix(admin): keep join-preview helpers leaflet-free for emulator

* docs(changelog): clarify admin observe framing changeset copy

* feat(thermometer): cancel orphan and stuck GPS walks (#109)

* feat(thermometer): cancel orphan and stuck GPS walks

* fix(thermometer): move identity-heal walk cancel out of annotations

* fix(thermometer): avoid Date.now during MapTimerCluster render

* fix(thermometer): satisfy react-compiler and unused walk id lint

* fix(thermometer): address coderabbit cancel review

* test(thermometer): type getDocs mock for identity-heal coverage

* feat(leaderboard): board filters, lead pack, and sticky self footer (#110)

* feat(leaderboard): board filters, lead pack, and sticky self footer

* fix(leaderboard): fix board ready locator and stale self footer

* fix(leaderboard): fix self-entry metric type and effect lint

* fix(leaderboard): drop unused eslint-disable in self entry

* fix(leaderboard): address coderabbit board chrome review

* test(leaderboard): update filters visual snapshot for board chrome

* test(leaderboard): update filters visual snapshot for board chrome

* test(leaderboard): use 390x115 filters screenshot as baseline

* feat(ui): desktop content column for entry screens (#111)

* feat(ui): add desktop content column for entry screens

* fix(ui): scope desktop entry CTA max-width to entry hosts

* fix(ui): address coderabbit desktop entry review

* fix(ui): restore Feedback desktop flex column parent

* fix(ui): address coderabbit desktop entry spacing and tests

* test(e2e): refresh tutorial sandbox visual baselines on main (#116)

* feat(ui): desktop social column and friends master-detail (#112)

* feat(ui): desktop social column and friends master-detail

* fix(friends): allow selection clear effect for desktop master-detail

* fix(leaderboard): constrain self footer to social column on desktop

* feat(map): desktop ops shell with left tool rail (#113)

* feat(map): desktop ops shell with left tool rail

* fix(map): win rail dock CSS over fixed bottom dock

* fix(map): restore walking-cancel props on desktop status rail

* feat(map): desktop contextual rail + sheet host (#114)

* feat(map): add contextual rail and sheet host for desktop ops

* fix(map): gate rail Escape and tool shortcuts

* fix(map): split rail panel hook for fast refresh and harden shortcuts

* fix(map): drop unused ContextualRailTab import

* docs(desktop): add desktop-ops-adapt changeset for wide-screen layout (#115)

* chore(release): version 0.9.0 (#117)

* chore(release): version 0.9.0

* chore(release): bump package-lock to 0.9.0

* perf(caching): edge Cache-Control + elevation/entitlements/join soft TTL (#118)

* perf(worker): set cache-control for assets and geo

* perf(geo): persist elevation samples in indexeddb

* perf(billing): persist premium entitlements snapshot

* perf(session): debounce and cache join code preview

* fix(caching): harden entitlements uid check and elevation hydrate order

* test(session): assert join preview cache expires at ttl boundary

* perf(functions): shared Overpass L2 cache (KV + R2) (#119)

* perf(functions): add shared overpass l2 cache via r2 and kv

* fix(functions): wire overpass l2 secrets and sigv4 header order

* fix(session): Background Sync honesty + Transitland 5m L1 (#120)

* fix(session): honor background sync for offline annotations

* fix(pwa): restore skip_waiting and sync retry without clients

* chore(release): version 0.9.1 (#121)

* fix(functions): make overpass l2 secrets optional for deploy (#122)

* ci: modernize PR-gated suite and thin main CD (#123)

* ci: modernize PR-gated suite and thin main CD

* fix(ci): ship thermos remediation for paths-filter and deploy outputs

* fix(ci): address coderabbit review for checkout and shell env

* chore(ci): soften CodeRabbit App for CLI-primary gate (#143)

* chore: purge IDE config path mentions from tracked files

* chore: ignore local IDE dir and harden pre-push

* chore: drop local IDE dir from tracked gitignore

* ci(dependabot): group updates and auto-merge safe npm bumps (#144)

* ci(dependabot): group npm patch and minor by dependency type

* ci(dependabot): auto-merge npm patch and minor when checks pass

* docs: note Dependabot grouping and auto-merge policy

* fix(ci): ship thermos remediation for Dependabot auto-merge deploy

* fix: address coderabbit cli review for Dependabot config

* fix: address coderabbit cli review for automerge head bind

* fix(overpass): normalize AbortError to timed-out 504 without Sentry (#155)

* fix(overpass): normalize AbortError and retry HTTP 500 with failover logs

* test(overpass): cover failover AbortError and retryable statuses

* fix(overpass): ship thermos remediation for failover status classify

* fix: address coderabbit cli review for overpass failover tests

* fix: address coderabbit cli review for overpass body cancel

* fix: address coderabbit cli review for async body cancel

* fix(overpass): align QL timeout with 25s fetch abort (#157)

* feat(admin): annotation filters and sorts on session list (#158)

* feat(admin): add annotation count and last-annotation session filters

* test(admin): add annotation fields to AdminPanel fixtures

* fix(admin): coalesce session list refresh and fix initial loading (#160)

* fix(session): canonical end + idle purge orphan code sweep (#159)

* fix(session): end idle sessions with outcome and delete codes

* fix(session): raise idle purge batch and sweep orphan codes

* fix(session): finalize game results on abandoned outcome

* fix(session): ship thermos remediation for canonical end race

* fix(session): address coderabbit cli review for end/purge

* fix(session): delete session codes inside end transaction

* feat(session): host leave promote and endSession callables (#161)

* feat(session): add leaveHostSession and endSession callables

* feat(session): wire host leave promote and endSession callable

* fix(session): end alone host leave inside promote transaction

* fix(session): fall back to client end when callables unavailable

* fix(session): reclaim orphan session codes on create (#162)

* fix(session): reclaim orphan session codes on create

* fix(session): allow orphan sessionCodes delete in rules

* test(session): expect missing code after endRemoteSession delete

* chore(release): 0.9.2 host leave transfer notes (#163)

* feat(analytics): replace GA with PostHog EU (#166)

* chore(deps): add posthog-js

* feat(analytics): replace GA with PostHog facade

* feat(analytics): PostHog env CSP and privacy copy

* feat(analytics): wire session and premium events

* chore: add changeset for PostHog analytics

* fix(analytics): ship thermos remediation for event layering

* fix(analytics): address coderabbit cli review for scrub and host

* fix(analytics): disable PostHog GeoIP and external features

* fix(test): use vi.stubEnv for PostHog prod init coverage

* fix(map): restore iPhone PWA status bar safe-area inset (#169)

* perf(a11y): public-shell floors and create weight (#167)

* perf(firebase): lazy-init App Check on first token use

* fix(a11y): allow pinch zoom in viewport meta

* fix(a11y): raise contrast on action and dim tokens

* fix(create): request geolocation only on user gesture

* perf(create): defer map mount and preconnect basemaps

* chore: add changeset for perf a11y shells

* ci(lhci): raise public-shell score floors

* fix(test): avoid parameter properties in App Check mock

* fix(create): ship thermos remediation for map defer ownership

* fix(firebase): arm App Check before Functions callables

* fix(ci): address coderabbit cli review for lhci and App Check

* fix(ci): mock App Check in functions lazy tests and ease LHCI floor

* fix(ci): ease mobile LHCI floors after PostHog on main


---------

* feat(analytics): PostHog consent banner (#168)

* feat(analytics): add consent preference storage

* feat(analytics): gate PostHog behind consent

* feat(analytics): add production consent banner

* chore: add changeset for analytics consent

* fix(analytics): ship thermos remediation for consent capture gate

* fix(analytics): seed e2e consent and capture pageview on accept

* fix(analytics): seed consent denial in first-run e2e


---------

* chore(release): 0.9.3 analytics, consent, and a11y notes (#170)

* chore(deps-dev): bump the development-dependencies group across 1 directory with 13 updates

Bumps the development-dependencies group with 12 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@changesets/cli](https://github.com/changesets/changesets) | `2.31.0` | `2.31.1` |
| [@cloudflare/workers-types](https://github.com/cloudflare/workerd) | `5.20260712.1` | `5.20260724.1` |
| [@playwright/test](https://github.com/microsoft/playwright) | `1.61.1` | `1.62.0` |
| [@sentry/vite-plugin](https://github.com/getsentry/sentry-javascript-bundler-plugins) | `5.3.0` | `5.4.0` |
| [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.3.2` | `4.3.3` |
| [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `6.0.3` | `6.0.4` |
| [eslint](https://github.com/eslint/eslint) | `10.3.0` | `10.8.0` |
| [firebase-tools](https://github.com/firebase/firebase-tools) | `15.23.0` | `15.24.0` |
| [stylelint](https://github.com/stylelint/stylelint) | `17.14.0` | `17.14.1` |
| [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.59.4` | `8.65.0` |
| [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) | `8.0.16` | `8.1.5` |
| [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler) | `4.110.0` | `4.114.0` |



Updates `@changesets/cli` from 2.31.0 to 2.31.1
- [Release notes](https://github.com/changesets/changesets/releases)
- [Commits](https://github.com/changesets/changesets/compare/@changesets/cli@2.31.0...@changesets/cli@2.31.1)

Updates `@cloudflare/workers-types` from 5.20260712.1 to 5.20260724.1
- [Release notes](https://github.com/cloudflare/workerd/releases)
- [Changelog](https://github.com/cloudflare/workerd/blob/main/RELEASE.md)
- [Commits](https://github.com/cloudflare/workerd/commits)

Updates `@playwright/test` from 1.61.1 to 1.62.0
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](microsoft/playwright@v1.61.1...v1.62.0)

Updates `@sentry/vite-plugin` from 5.3.0 to 5.4.0
- [Release notes](https://github.com/getsentry/sentry-javascript-bundler-plugins/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/CHANGELOG.md)
- [Commits](getsentry/sentry-javascript-bundler-plugins@5.3.0...5.4.0)

Updates `@tailwindcss/vite` from 4.3.2 to 4.3.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/@tailwindcss-vite)

Updates `@vitejs/plugin-react` from 6.0.3 to 6.0.4
- [Release notes](https://github.com/vitejs/vite-plugin-react/releases)
- [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@6.0.4/packages/plugin-react)

Updates `eslint` from 10.3.0 to 10.8.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v10.3.0...v10.8.0)

Updates `firebase-tools` from 15.23.0 to 15.24.0
- [Release notes](https://github.com/firebase/firebase-tools/releases)
- [Changelog](https://github.com/firebase/firebase-tools/blob/main/CHANGELOG.md)
- [Commits](firebase/firebase-tools@v15.23.0...v15.24.0)

Updates `stylelint` from 17.14.0 to 17.14.1
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](stylelint/stylelint@17.14.0...17.14.1)

Updates `tailwindcss` from 4.3.2 to 4.3.3
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/tailwindcss)

Updates `typescript-eslint` from 8.59.4 to 8.65.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.65.0/packages/typescript-eslint)

Updates `vite` from 8.0.16 to 8.1.5
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v8.1.5/packages/vite)

Updates `wrangler` from 4.110.0 to 4.114.0
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.114.0/packages/wrangler)

---
updated-dependencies:
- dependency-name: "@changesets/cli"
  dependency-version: 2.31.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@cloudflare/workers-types"
  dependency-version: 5.20260724.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@playwright/test"
  dependency-version: 1.62.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@sentry/vite-plugin"
  dependency-version: 5.4.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: "@tailwindcss/vite"
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: "@vitejs/plugin-react"
  dependency-version: 6.0.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: eslint
  dependency-version: 10.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: firebase-tools
  dependency-version: 15.24.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: stylelint
  dependency-version: 17.14.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: tailwindcss
  dependency-version: 4.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: development-dependencies
- dependency-name: typescript-eslint
  dependency-version: 8.65.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: vite
  dependency-version: 8.1.5
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: wrangler
  dependency-version: 4.114.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(ci): reject Cursor attribution trailers in commit-msg (#171)

* chore(ci): harden commit-msg hook before commitlint

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Tomer Gelbhart <gelbharttomer@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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