Jean Chevronnet reverse
reverse pushed to main at orbit/orbit 2026-07-11 00:29:11 +00:00
e36d3a1d34 Keep the games button in the mobile topbar
reverse pushed to main at orbit/orbit 2026-07-11 00:12:47 +00:00
7c074d7a8b Rework the mobile topbar into a native header
reverse pushed to main at orbit/orbit 2026-07-10 23:52:06 +00:00
d817db9255 Theme the topbar toolbar icons to match the footer set
reverse pushed to main at orbit/orbit 2026-07-10 22:58:26 +00:00
e82b4b7f01 Replace footer emoji glyphs with a themed icon set
reverse pushed to main at orbit/orbit 2026-07-10 22:27:24 +00:00
dbb45e4d17 Load only the active UI locale on first paint
reverse pushed to main at orbit/orbit 2026-07-10 22:15:16 +00:00
d5ddbbff4f Coalesce inbound messages into batched renders
reverse pushed to main at orbit/orbit 2026-07-10 21:51:03 +00:00
14cf38afa8 Fix Turnstile ref write during render and the gtag lint error
9b21adb9cc Derive prop-synced state during render, not in effects
Compare 2 commits »
reverse pushed to main at orbit/orbit 2026-07-10 21:31:13 +00:00
7ea1fd3e87 Add @/ path alias, replace deep relative imports
reverse pushed to main at orbit/orbit 2026-07-10 21:10:10 +00:00
96ff3bef78 Image/voice shares: bold + italic so they stand out in the log
b1b628bdc9 Fix CTCP ACTION: wrap in \x01 so /me + image shares render as '* nick …' in every client (mIRC etc.)
Compare 2 commits »
reverse pushed to main at orbit/orbit 2026-07-10 20:05:23 +00:00
4f8d10c8a5 yomirc: float the hover toolbar above the log line so it no longer overlaps the next line (fixes hover jump)
f90aca5252 Sidebar rows: div[role=button] + a real close button — valid HTML, keyboard-reachable close
Compare 2 commits »
reverse pushed to main at orbit/orbit 2026-07-10 19:51:12 +00:00
5d6de5a357 Sidebar: memoize each room row (subscribes to its own buffer) so a message updates only that row
b7265b5706 Composer: mark fire-and-forget image uploads with void (intent; store already catches)
d3300d4a4e Images: decode avatars + link previews off-thread (decoding=async), pin preview img size
bbd8b81ea6 Modals: trap Tab inside the dialog and return focus to the trigger on close (a11y)
Compare 4 commits »
reverse pushed to main at orbit/orbit 2026-07-10 19:17:48 +00:00
77d8a0a669 Message rows use content-visibility to skip off-screen layout/paint (faster channel switch)
reverse pushed to main at orbit/orbit 2026-07-10 19:07:46 +00:00
c3b96c5b16 Memoize message rows: a new message re-renders only the new row, not the whole list
reverse pushed to main at orbit/orbit 2026-07-10 18:54:55 +00:00
67e6493b71 Native tactile press feedback: controls dip+dim on touch, no tap delay/callout
reverse pushed to main at orbit/orbit 2026-07-10 18:38:04 +00:00
8bc88557b3 Mobile native-feel: kill iOS input-zoom (16px), overscroll-contain, no tap-flash, safe-area top, non-selectable chrome
reverse pushed to main at orbit/orbit 2026-07-10 18:22:00 +00:00
c0ec75d6dd iOS keyboard: native easing curve + 60px threshold to stop suggestion-bar jitter
reverse pushed to main at orbit/orbit 2026-07-10 17:55:24 +00:00
d5af169c73 Self-heal the iOS pre-resize when no keyboard opens (hardware keyboard / programmatic focus)
reverse pushed to main at orbit/orbit 2026-07-10 17:53:49 +00:00
88e689fc82 Smooth iOS keyboard open: pre-resize on focus + CSS height glide, corrected by the resize event
reverse pushed to main at orbit/orbit 2026-07-10 17:42:26 +00:00
9a4757e839 Track mobile keyboard via VisualViewport directly; drop the pre-resize guess that broke the first open
reverse pushed to main at orbit/orbit 2026-07-10 16:26:35 +00:00
db1ba1420f Analytics consent: grant only analytics_storage in the app (ad signals stay denied, ad-free)