Commit graph

6440 commits

Author SHA1 Message Date
AK
dfe0d08a78 chore(fullscreen): drop inline rationale comments, bump copyright to 2026
Addresses review feedback: the explanatory block comments in
FullscreenProvider (source-of-truth rationale, CoreTransport typing
note) were noise — the same context already lives in the PR
description and commit history. Copyright headers on the four new
files were carried over from the template at 2023; bumped to 2026.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 17:20:54 -04:00
AK
9412bb004c fix(build): update gamepad nav useFullscreen import path
The merge of development into this branch combined two incompatible
changes: development's new GamepadNavigation files (#882) imported
useFullscreen from the old 'stremio/common/useFullscreen' path, while
this branch removed that file in b7f7a3d2e and moved the hook to
'stremio/common/Fullscreen'. Webpack failed to resolve the module on
CI even though git auto-merged without conflict markers.

Update the single stale import in useHorizontalNavGamepadNavigation.tsx
to point at the new module. The new index.ts exports useFullscreen as
default, so the import shape is unchanged.

Verified locally with `pnpm build` (passes with only pre-existing
bundle-size warnings).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-29 09:52:42 -04:00
AK
b2eec31114 Merge branch 'development' into fix/fullscreen-state-desync-on-route-change
Resolves a conflict in src/App/App.js between the new GamepadProvider
(landed via #882 on development) and FullscreenProvider on this branch.
Both wrap parts of the app tree at the same point.

Resolution: nest as <GamepadProvider> > <ShortcutsProvider> >
<FullscreenProvider>. FullscreenProvider stays innermost so it remains
inside ShortcutsProvider — required for the onShortcut('fullscreen', ...)
subscription added in 35b100767. Both ShortcutsModal and GamepadModal
render as siblings inside FullscreenProvider. NavBar conflict
auto-merged cleanly (kept useFullscreen import, added gamepad-nav hook).

Lint and types clean on App.js, HorizontalNavBar.js, FullscreenProvider.tsx.
2026-04-29 09:45:59 -04:00
Timothy Z.
971d75e6c2 bump: stremio-translations to v1.52.0
Some checks are pending
Build / build (push) Waiting to run
2026-04-29 14:15:35 +03:00
Timothy Z.
2075b1c521
Merge pull request #882 from Stremio/feat/gamepad-support
Feat: Gamepad Support in Web v5
2026-04-29 14:06:23 +03:00
Timothy Z.
e5570f94a3 correct code indentation 2026-04-29 13:23:49 +03:00
Timothy Z.
a649ef696a correct types for dir analog btns 2026-04-29 13:23:15 +03:00
Timothy Z.
4756a959e8 code style improvements 2026-04-29 13:21:22 +03:00
Timothy Z.
aac69c43db typing improvements 2026-04-29 13:21:09 +03:00
Timothy Z.
4b6b0058fa refactor: code quality improvments 2026-04-29 13:20:14 +03:00
Timothy Z.
12f3138341 add diagram animation 2026-04-29 00:16:38 +03:00
Timothy Z.
831222f812 improve algo for finding items 2026-04-29 00:07:16 +03:00
Timothy Z.
5abe361d00 refactor: improve player navigation 2026-04-28 23:52:59 +03:00
Timothy Z.
70e14c4871 refactor: improve navigation 2026-04-28 23:49:46 +03:00
Timothy Z.
972bd23991 add actiongroup focus 2026-04-28 23:41:30 +03:00
Timothy Z.
4b92d9dd4f correct tab indexes for buttons 2026-04-28 23:38:59 +03:00
Timothy Z.
a9ff0f6365 add search route 2026-04-28 23:32:05 +03:00
Timothy Z.
0b601010e2 fix: tests + stale callbacks 2026-04-28 22:57:33 +03:00
Timothy Z.
f95273b8ce feat: add controller guide 2026-04-28 22:31:33 +03:00
Timothy Z.
d62ba32363 fix: imports 2026-04-28 17:14:07 +03:00
Timothy Z.
93833d0cd1 fixes
1. Player.js — Added optional chaining (gamepad?.on/gamepad?.off) to prevent null crash
  2. GamepadProvider.tsx — Toast messages now use t('GAMEPAD_CONNECTED') / t('GAMEPAD_DISCONNECTED') via i18next, added keys to en-US.json
  3. useVerticalNavGamepadNavigation.tsx — Fixed event.nativeEvent?.spatialNavigationPrevented → event.spatialNavigationPrevented (native DOM events don't have nativeEvent)
  4. GamepadProvider.tsx — Changed connectedGamepads from useState to useRef to avoid rAF effect restart cycle, removed it from effect deps, simplified the enabled guard
2026-04-28 17:09:02 +03:00
Timothy Z.
0c1af71aa9 Merge remote-tracking branch 'origin/development' into feat/gamepad-support
# Conflicts:
#	package-lock.json
#	package.json
#	src/App/App.js
#	src/routes/Player/Player.js
#	src/routes/Settings/General/General.tsx
2026-04-28 16:47:48 +03:00
Timothy Z.
ba45c7f47f
Merge pull request #1235 from mrcanelas/fix/pwa-metadetails-safe-area
Some checks are pending
Build / build (push) Waiting to run
Details: Fix respect PWA safe area
2026-04-28 15:25:57 +02:00
AK
35b100767f refactor(fullscreen): route F key through ShortcutsProvider
shortcuts.json already declares fullscreen -> F, but the provider was
listening for KeyF on its own keydown handler in parallel — both fired
on every F press, with the canonical shortcuts dispatch going nowhere.

Subscribe via onShortcut('fullscreen', toggleFullscreen, ...) and drop
the KeyF branch (plus the now-unused inputFocused check). Escape stays
local because its action is gated on the escExitFullscreen profile
setting; F11 stays local because it's shell-only and not in
shortcuts.json.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 09:15:31 -04:00
Timothy Z.
d31da0d8e0
Merge pull request #1231 from dav1312/br-img
Some checks are pending
Build / build (push) Waiting to run
style(ui): adjust side panel border-radii and center main background image
2026-04-28 10:49:14 +02:00
Timothy Z.
450229a40f restore 2026-04-28 11:48:06 +03:00
Timothy Z.
4107366094 Merge branch 'br-img' of https://github.com/dav1312/stremio-web into pr/1231 2026-04-28 11:40:36 +03:00
AK
d3d35bcb42 perf(fullscreen): subscribe to SettingsUpdated, not every ctx NewState
The previous NewState listener fired on every change to the ctx model —
notifications, search history, library sync, streaming-server URL — and
each fire triggered a getState('ctx') round-trip to the worker just to
re-read escExitFullscreen.

Switch to the CoreEvent / SettingsUpdated channel (same pattern App.js
uses for interfaceLanguage/quitOnClose), reading the new value straight
from the event payload. Initial seed still uses getState('ctx') once
on mount.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-28 01:26:42 -04:00
AK
90e2cbff15 chore(fullscreen): drop ts-expect-error, type ctx + NewState properly
useServices is already typed via src/services/ServicesContext/useServices.d.ts,
so the @ts-expect-error suppression on the import was unnecessary and
masked two real type holes that surfaced once it was removed:

- core.transport.getState('ctx') returns Promise<object>; cast to the
  ambient Ctx type so escExitFullscreen is read through a typed path.
- CoreTransport.on/off types listeners as () => void, but the 'NewState'
  event actually emits a string[]. Use a (...args: unknown[]) wrapper +
  Array.isArray narrowing so the call site stays type-safe without
  weakening the ambient transport signature.

No behavior change.

Made-with: Cursor
2026-04-28 00:57:53 -04:00
mrcanelas
a20640d87f fix: respect PWA safe area in metadetails 2026-04-27 18:42:18 -03:00
dav1312
55904da5f0 style(ui): update background image alignment 2026-04-27 23:01:10 +02:00
Timothy Z.
0c05ec335a bump: release v5.0.0-beta.35
Some checks are pending
Build / build (push) Waiting to run
2026-04-27 15:53:42 +03:00
Timothy Z.
233049cf6d fix: sidedrawer bug on webkit browsers 2026-04-27 14:55:17 +03:00
Timothy Z.
f4e5b71239 Revert "bump: release v5.0.0-beta.35"
This reverts commit c849c6ccd2.
2026-04-27 14:50:13 +03:00
Timothy Z.
0925cb0939 Player: subtitle improvements 2026-04-27 14:50:06 +03:00
Timothy Z.
07a37c872b
Merge pull request #1234 from Stremio/claude/fix-stremio-subtitles-BVkxV
Player: derive subtitles toggle state from live track selection
2026-04-27 13:10:43 +02:00
Timothy Z.
3d9b403cb8 fix(player): derive subtitles toggle state from live track selection
The C shortcut tracked enabled/disabled via a ref that was never reset
on stream change and was not updated when the user picked tracks via
the menu, so the toggle could become inverted or no-op until pressed
twice. Read selectedSubtitlesTrackId / selectedExtraSubtitlesTrackId
directly instead.
2026-04-27 13:57:56 +03:00
Timothy Z.
c849c6ccd2 bump: release v5.0.0-beta.35
Some checks are pending
Build / build (push) Waiting to run
2026-04-27 11:25:25 +03:00
Timothy Z.
21620c81e0
Merge pull request #1233 from Stremio/player/fix-shortcuts-hold-repeat-throttle
Player: Correctly throttle holding shortcut actions
2026-04-27 10:24:53 +02:00
Timothy Z.
849108785b Revert "bump: release v5.0.0-beta.35"
This reverts commit 2efd1f7d2c.
2026-04-27 11:24:22 +03:00
Timothy Z.
2730444445 correct throttle ms 2026-04-27 11:20:42 +03:00
Timothy Z.
5f6ff99cb6 Revert "Update Shortcuts.tsx"
This reverts commit 136b3b24d2.
2026-04-27 11:20:03 +03:00
Timothy Z.
2efd1f7d2c bump: release v5.0.0-beta.35 2026-04-27 10:38:00 +03:00
Timothy Z.
136b3b24d2 Update Shortcuts.tsx 2026-04-27 10:36:26 +03:00
Timothy Z.
e805fef88c fix: throttle repeat actions 2026-04-27 10:27:57 +03:00
Timothy Z.
caf4a09687 Revert "bump: release v5.0.0-beta.35"
This reverts commit e2177938d1.
2026-04-27 10:27:12 +03:00
Timothy Z.
e5b500d74c
Merge pull request #1232 from Stremio/player/fix-subtitles-size-shortcut
Player: Fix subtitles size shortcut
2026-04-27 09:23:02 +02:00
Timothy Z.
95ee640813 Player: fix subtitles size shortcut 2026-04-27 10:11:52 +03:00
Timothy Z.
ee4a6f562d bump: stremio-translations 2026-04-27 09:35:30 +03:00
Timothy Z.
c8ffdf7a44
Merge pull request #1225 from FrigoDev/feat/meta-preview-action-buttons-tooltips
Details: add tooltips to rating actions
2026-04-27 08:34:33 +02:00