You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## Summary
### UX Improvements
- **Single-click tab switching** — Tabs now activate on pointer-up
(bypasses dnd-kit click interference), cursor changed to pointer
- **Clickable session cards** — Entire SessionsHub card is clickable, no
need to find the Connect button
- **Smart session naming** — New sessions default to folder name (e.g.
`termbeam`) with `(X)` dedup for duplicates
- **Stable Create button** — No more size shift when submitting
### Push Notification Fixes
- **Auto-recovery** — `isPushSubscribed()` now re-subscribes when
subscription is lost but permission is granted
- **Page-load re-init** — `ensurePushSubscription()` always tries
re-init when permission exists (recovers from server restarts)
- **No more duplicates** — Local `new Notification()` is skipped when
push is active (service worker handles it)
### Test Coverage
- **82.6% → 93.4%** line coverage
- 120+ new tests across routes, sessions, websocket, push, resume,
update-executor, update-check, bin/termbeam
- Fixed pre-existing resume.test.js crash (TERMBEAM_SESSION env var
interference)
- Excluded `bin/` from coverage (entry point, not logic code)
### Files Changed
- `SortableTab.tsx` — onPointerUp click detection
- `SessionCard.tsx` — full card onClick + swipe prevention
- `NewSessionModal.tsx` — folder-name default + dedup
- `pushSubscription.ts` — auto-recovery logic
- `audio.ts` — skip local notification when push active
- 10 test files added/updated
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
0 commit comments