Commit graph

887 commits

Author SHA1 Message Date
Tommy Chow
ed59896c5f deduplicate SystemChrome calls and optimize PiP animation rebuilds
- extract _scheduleSystemUiModeSync to avoid redundant platform calls on
  every build, deferred via addPostFrameCallback with state tracking
- use AnimatedBuilder.child so the video subtree is not rebuilt on every
  animation tick during PiP spring-back
- move orientation reset from build() to initState() in home screen
- reformat landscape LayoutBuilder for consistency

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 00:13:08 -08:00
Tommy Chow
d28a3279e4 replace per-message Future.delayed with lightweight callback queue
drains delayed chat/7TV callbacks via the existing 200ms message buffer
timer instead of creating one Future.delayed per incoming event, removing
the biggest memory-pressure risk on busy channels with chat delay active

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 00:11:42 -08:00
Tommy Chow
9e81b2d80a make auto-synced chat delay session-only and improve video store
- split chatDelay into persisted (manual) and session-only (synced) fields
  so auto-synced latency values don't carry over between channels
- make latency tracker singleton/idempotent to prevent overlapping JS pollers
- add isCycling guard to prevent re-entrant latency cycles
- deduplicate concurrent stream info API requests
- tie JS cleanup timer to video mode only (skip in chat-only)
- update UI to reflect effective delay instead of persisted value

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 00:11:21 -08:00
Tommy Chow
04e5479acd add keep screen awake setting
adds a user-controlled toggle (default on) under video settings that
controls whether wakelock is enabled during channel sessions. previously
wakelock was unconditional with no way to turn it off.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 23:58:32 -08:00
Tommy Chow
3b3cd92026 show buy me a coffee icon on iOS
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:45:24 -08:00
Tommy Chow
4ff331ec98 replace about dialog and FAQ tile with bottom-pinned author and version footer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:31:32 -08:00
Tommy Chow
d500119219 move clear recent emotes action to tab bar icon button
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:40:33 -08:00
Tommy Chow
93c7b5b637 remove landscape top-edge gesture barrier causing black bar on iPad
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:28:48 -08:00
Tommy Chow
2e9d0bd16a extract kCardBorderRadius constant for card thumbnails
Replace 13 occurrences of BorderRadius.all(Radius.circular(8)) with a
shared kCardBorderRadius constant in constants.dart. All uses represent
the same design token: card/thumbnail corner radius across stream cards,
category cards, and their skeleton loader placeholders.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 19:01:58 -08:00
Tommy Chow
96bce87a0e add FrostyColors ThemeExtension, align hardcoded colors with M3 roles
Introduce FrostyColors ThemeExtension with 7 semantic color fields
(highlightedMessage, emoteOnly, followersOnly, slowMode, subOnly,
uniqueMode, overlayOnSurface) and brightness-aware light/dark variants.

Replace hardcoded colors across 15 files:
- Links use colorScheme.primary instead of Colors.blue
- Mentions use colorScheme.error instead of Colors.red
- First-time chatters share highlightedMessage (Twitch purple)
- Chat mode indicators use frostyColors fields
- Overlay text uses frostyColors.overlayOnSurface

Remove Provider<FrostyThemes> pattern from main.dart, channel.dart,
video_overlay.dart, and frosty_photo_view_dialog.dart.

Replace manual onSurface.withValues(alpha: 0.6) with M3's built-in
onSurfaceVariant for secondary text in section headers, chat modes,
alerts, loading indicators, and input hints. Fix double-muted
onSurfaceVariant.withValues(alpha: 0.6) in navigation icons and
notification dismiss button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 19:01:44 -08:00
Tommy Chow
9119a69b17 fix 7TV emote mutations on computed map, fix search store disposer leak, fix typo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:34:49 -08:00
Tommy Chow
f9302b0d82 replace BackdropFilter with solid container on stream card badge, remove AnimatedContainer from BlurredContainer
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:13:35 -08:00
Tommy Chow
467dca9b86 upgrade dependencies, fix null-aware element lint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:13:35 -08:00
Tommy Chow
a0b46eaf3d fix overlay toggle stream reload, fix spring-back animation listener
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:19:13 -08:00
Tommy Chow
a3b8ac3237 clean up and harden webview video JS infrastructure
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:19:02 -08:00
Tommy Chow
93cd39c99f consolidate overlay shadow constants, simplify overlay gradients
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 23:18:54 -08:00
Tommy Chow
9306d9c48d fix useragent breaking login on ios 2026-01-09 02:14:52 -05:00
Tommy Chow
260348736d fix landscape bottom padding in chat bottom bar 2026-01-09 01:47:02 -05:00
Tommy Chow
f383c447f5 revert auto-fill safe area 2026-01-09 01:04:09 -05:00
Tommy Chow
5963a0ab3c fix draggable divider still active in fullscreen
fixes #486
2026-01-08 20:49:13 -05:00
Tommy Chow
9aea491966 fix chat text shadows causing frame drops 2026-01-08 19:12:34 -05:00
Tommy Chow
549a93b495 actually fix safe area filll resetting when moving to portrait 2026-01-08 17:24:30 -05:00
Tommy Chow
bde322fd09 fix safe area filll resetting when moving to portrait 2026-01-08 16:30:22 -05:00
Tommy Chow
ba7f68af1e fix google log in 2026-01-08 01:42:11 -05:00
Tommy Chow
487700f5b7 add device orientation detection for optimal landscape rotation 2026-01-08 00:06:18 -05:00
Tommy Chow
50c9bb2387 add native device orientation support, auto-fill safe area depending on orientation 2026-01-07 23:54:11 -05:00
Tommy Chow
57671967c9 fix ios landscape bottom safe area 2026-01-07 00:31:42 -05:00
Tommy Chow
82ab13b517 add swipe pip gesture support in landscape 2026-01-07 00:31:40 -05:00
Tommy Chow
bfc5e0e19b update default latency setting to false 2026-01-06 23:31:44 -05:00
Tommy Chow
71efc3cfa5 format 2026-01-06 20:22:14 -05:00
Tommy Chow
c378b9b2fd add connection state management to ChatStore and update UI feedback in chat 2026-01-06 19:42:09 -05:00
Tommy Chow
d296a20aef enhance reconnect message handling and improve countdown display in chat 2026-01-06 18:22:21 -05:00
Tommy Chow
7a3f78bc7a add message acknowledgment handling and update UI feedback for sending state 2026-01-06 16:59:16 -05:00
Tommy Chow
a43e453e7e fix send button broken in landscape mode
fixes #491
2026-01-06 15:33:20 -05:00
Tommy Chow
c0362b975f enhance latency tracking and memory management in video store 2026-01-06 00:21:06 -05:00
Tommy Chow
4d0b75a1c5 rename enhanced rendering setting to reset for all users 2026-01-05 23:40:31 -05:00
Tommy Chow
04e076747b fix error message 2026-01-04 22:18:07 -05:00
Tommy Chow
08913c1e35 fix reply bar blocking bottom of chat, redesign 2026-01-04 21:36:00 -05:00
Tommy Chow
4a9678bb15 fix autocomplete bar blocking bottom of chat 2026-01-04 20:36:53 -05:00
Tommy Chow
bd194e91c2 fix chat delay message sending ux
refactor chat store to bypass delay for specific IRC commands and remove sending state management
2026-01-04 17:49:44 -05:00
Tommy Chow
fc56c3347a fix clear recent emotes button sizing 2026-01-04 16:35:43 -05:00
Tommy Chow
1c712659f1 fix black screen when logging in 2026-01-04 16:14:53 -05:00
Tommy Chow
cfc0e6187c tweak padding 2026-01-04 04:04:20 -05:00
Tommy Chow
23fee7bd4e add inline emote support in chat text field 2026-01-02 21:51:50 -05:00
Tommy Chow
359509ec52 refactor chat interaction handling, improve gesture detection, restore chat delay input indicator 2026-01-02 19:51:58 -05:00
Tommy Chow
8b54b3ba1b make search page type to search 2026-01-02 18:08:30 -05:00
Tommy Chow
69a7bcba92 make video enhanced rendering opt-out 2026-01-02 16:05:44 -05:00
Tommy Chow
f3f5629b75 restore show latency setting
part of #485
2026-01-02 15:48:54 -05:00
Tommy Chow
ba28e09e58 downgrade flutter_secure_storage, safer async ops
potential fix for #484
2026-01-02 15:28:26 -05:00
Tommy Chow
5f3b97b8f8 happy new year 2026-01-02 00:04:50 -05:00