edde746
41a2e996e1
perf(test): scale test concurrency and stop re-onboarding every Maestro flow
...
The Dart suite spent 77% of its cost compiling one isolate per test file
while `flutter test` used half the cores, and every Maestro flow replayed
a full Jellyfin onboarding before its first real assertion.
- Add scripts/run_tests.sh, which runs `flutter test` with -j set to the
cores the process may actually use instead of the ncpu/2 default.
Measured on 8 cores: 190s -> 136s; -j 12 regresses to 165s, so it scales
to the core count rather than hard-coding one. CI and CONTRIBUTING use it.
A cgroup v2 quota, a cgroup v1 quota, and the cpuset/affinity nproc
reports can each be the binding limit independently, so the detector
takes the smallest; trusting whichever it found first would oversubscribe
4x on a container holding an 8-CPU quota while pinned to 2. Covered by
scripts/test_run_tests.py, which the ci_guard_checks.sh glob picks up.
- Add .maestro/subflows/ensure_onboarded.yaml: cold-start the app and only
onboard when no session is stored. Flows that just need a signed-in Home
use it; 02_onboarding_home, 08_logout, 09_download_offline_playback and
the profile regressions keep clearing state. 59s -> 16s per flow.
- Guard onboarding's two optional taps behind visibility checks. A missed
`optional: true` tap still runs the full element search, costing 3.0s
and 7.8s per onboarding to find nothing.
- Disable device animation scales in run_maestro.py, restored by the
existing cleanup path. CI's emulator got this from the runner flag;
physical devices never did.
- Shorten the watch_together setup-timeout replacement from 500ms to the
10ms the same file already proves sufficient, and shorten the retry
backoff at the one site that missed it: 8.04s -> 1.59s of execution.
- Make the LAN discovery waits deadline-based and resend the beacon while
polling. Loopback UDP drops datagrams under load, which timed out a
wait that could never be satisfied; this was the suite's one flaky test.
- Fix 08_logout, which searched for "Logout" and "Are you sure you want to
logout?" after both strings became "Log out". The flow had been failing
and aborting the suite before 09 ever ran.
flutter test 190s -> 131s. Maestro's Android suite 621s -> 385s across the
eight flows the baseline reached, and now runs all nine green.
2026-07-27 03:59:27 +02:00
edde746
a56b9a3dfb
Merge the deduplication and dead-code removal pass
...
Consolidates duplicated logic behind shared implementations — paginated
grid tabs, focus chrome, cached remote stores, sheet selection columns,
the server artifact store and a test fixture layer — and removes code
that had become unreachable. Net reduction of about 5,500 lines with no
behaviour change.
Where a fix had landed separately in code that moved into a shared
helper, the fix was re-applied inside the helper rather than left behind
in the copy that went away.
2026-07-26 19:41:23 +02:00
edde746
7e05686a7c
fix(windows): restore x64 and arm64 builds
2026-07-26 15:32:02 +02:00
edde746
352b88109b
refactor: extract shared mixins and helpers, drop dead abstractions
...
Introduces shared seams for paginated views, D-pad reorder, media control
routing, async singletons and the device method channel, then points the
open-coded copies at them.
Also removes unused models and duplicated provider/server plumbing, folds
the twice-implemented artifact store in the server, and factors the
repeated Flutter toolchain prologue in CI into a composite action.
2026-07-26 06:09:48 +02:00
edde746
77da82b648
fix(ci): make cross-platform checks deterministic
2026-07-25 16:17:25 +02:00
edde746
b7d5922b0a
fix(ci): repair Windows native checks
2026-07-25 00:22:23 +02:00
edde746
d1cec00b51
fix(ci): repair native and Maestro checks
2026-07-24 20:30:45 +02:00
edde746
40833e65ec
fix(ci): align toolchains and isolate platform tests
2026-07-24 10:06:50 +02:00
dependabot[bot] and dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ef0524485a
build(deps): bump softprops/action-gh-release ( #1665 )
...
Bumps [softprops/action-gh-release](https://github.com/softprops/action-gh-release ) from c12583777ecdfd3be55c69cf75464299dc01057e to 3d0d9888cb7fd7b750713d6e236d1fcb99157228.
- [Release notes](https://github.com/softprops/action-gh-release/releases )
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md )
- [Commits](https://github.com/softprops/action-gh-release/compare/c12583777ecdfd3be55c69cf75464299dc01057e...3d0d9888cb7fd7b750713d6e236d1fcb99157228 )
---
updated-dependencies:
- dependency-name: softprops/action-gh-release
dependency-version: 3d0d9888cb7fd7b750713d6e236d1fcb99157228
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 07:38:40 +02:00
dependabot[bot] and dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
071b632c93
build(deps): bump awalsh128/cache-apt-pkgs-action ( #1664 )
...
Bumps [awalsh128/cache-apt-pkgs-action](https://github.com/awalsh128/cache-apt-pkgs-action ) from 2153a1bf62a0ad7830c24ccdf1d588bedc2834a7 to 553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9.
- [Release notes](https://github.com/awalsh128/cache-apt-pkgs-action/releases )
- [Commits](https://github.com/awalsh128/cache-apt-pkgs-action/compare/2153a1bf62a0ad7830c24ccdf1d588bedc2834a7...553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9 )
---
updated-dependencies:
- dependency-name: awalsh128/cache-apt-pkgs-action
dependency-version: 553a35bb8ebd9fcabcb1c9451aa4c98e1b4ca8a9
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 07:38:38 +02:00
dependabot[bot] and dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
62330413ee
build(deps): bump actions/attest-build-provenance ( #1663 )
...
Bumps [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance ) from 78e6cbd37d0ac1a40113c04f2037dacf1ea3f12e to 0f67c3f4856b2e3261c31976d6725780e5e4c373.
- [Release notes](https://github.com/actions/attest-build-provenance/releases )
- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md )
- [Commits](https://github.com/actions/attest-build-provenance/compare/78e6cbd37d0ac1a40113c04f2037dacf1ea3f12e...0f67c3f4856b2e3261c31976d6725780e5e4c373 )
---
updated-dependencies:
- dependency-name: actions/attest-build-provenance
dependency-version: 0f67c3f4856b2e3261c31976d6725780e5e4c373
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 07:38:34 +02:00
dependabot[bot] and dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
aa66f9a15d
build(deps): bump actions/checkout from 7.0.0 to 7.0.1 ( #1662 )
...
Bumps [actions/checkout](https://github.com/actions/checkout ) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 7.0.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 07:38:31 +02:00
dependabot[bot] and dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7ed2049a01
build(deps): bump actions/setup-java from 5.5.0 to 5.6.0 ( #1661 )
...
Bumps [actions/setup-java](https://github.com/actions/setup-java ) from 5.5.0 to 5.6.0.
- [Release notes](https://github.com/actions/setup-java/releases )
- [Commits](https://github.com/actions/setup-java/compare/0f481fcb613427c0f801b606911222b5b6f3083a...03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 )
---
updated-dependencies:
- dependency-name: actions/setup-java
dependency-version: 5.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 07:38:29 +02:00
dependabot[bot] and dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
a961a5a997
build(deps): bump reactivecircus/android-emulator-runner ( #1660 )
...
Bumps [reactivecircus/android-emulator-runner](https://github.com/reactivecircus/android-emulator-runner ) from 4c44018e59b437e86cdfc41da381398f93ed8808 to a421e43855164a8197daf9d8d40fe71c6996bb0d.
- [Release notes](https://github.com/reactivecircus/android-emulator-runner/releases )
- [Changelog](https://github.com/ReactiveCircus/android-emulator-runner/blob/main/CHANGELOG.md )
- [Commits](https://github.com/reactivecircus/android-emulator-runner/compare/4c44018e59b437e86cdfc41da381398f93ed8808...a421e43855164a8197daf9d8d40fe71c6996bb0d )
---
updated-dependencies:
- dependency-name: reactivecircus/android-emulator-runner
dependency-version: a421e43855164a8197daf9d8d40fe71c6996bb0d
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 07:38:26 +02:00
edde746
09656fa4d3
fix(supply-chain): verify CI and production inputs
...
Pin external actions, images, toolchains, native archives, and tvOS engine artifacts; enforce fail-closed CI checks and keep website privacy disclosures aligned with shipped behavior.
2026-07-24 03:56:40 +02:00
edde746
43a8fe020d
fix(relay): secure reconnect and room ownership
2026-07-24 03:46:50 +02:00
edde746
658da37b48
build: make toolchain inputs reproducible
2026-07-24 03:40:06 +02:00
edde746
1d1c301f61
test: stabilize deterministic integration coverage
2026-07-24 03:40:06 +02:00
edde746
fa901be328
fix(e2e): run emulator suites through Python
2026-07-15 08:25:55 +02:00
edde746
0bcd00bcb6
ci: harden privileged workflow trust boundaries
2026-07-15 07:57:42 +02:00
edde746
87c0547090
ci: harden pull request workflows
2026-07-15 07:15:34 +02:00
edde746
9471e30585
ci(test): consolidate Maestro workflow setup
2026-07-15 06:58:22 +02:00
edde746
139cf83507
feat(test): add Maestro end-to-end coverage
2026-07-15 06:40:35 +02:00
edde746
30c978719b
fix(ci): update actions for Node 24
2026-07-14 07:23:16 +02:00
edde746
cbb0a01c5f
fix(release): create untagged build drafts
2026-07-14 00:33:12 +02:00
edde746
a0013323f2
chore(ui): enforce icon consistency
2026-07-13 23:13:53 +02:00
edde746
7400a10c59
fix(release): prevent published asset replacement
2026-07-13 21:48:44 +02:00
edde746
822657972d
fix(android): enforce minSdk compatibility
2026-07-13 17:00:50 +02:00
edde746
8210b23d31
fix(ci): set explicit release tag
2026-07-13 01:42:41 +02:00
edde746
e03edad824
fix: prevent async state and platform regressions
2026-07-13 00:03:52 +02:00
edde746
780a1ea180
fix(ci): restore analyzer and unit checks
2026-07-12 19:55:24 +02:00
edde746
fe8d405a56
fix(i18n): enforce complete localized coverage
2026-07-12 17:31:14 +02:00
edde746
a5449a1430
refactor(ci): matrix architecture builds
2026-07-12 08:42:25 +02:00
edde746
c0d8951677
fix(release): centralize pubspec version parsing
2026-07-12 08:42:24 +02:00
edde746
eaa60cc2b5
fix(release): resolve package tags once
2026-07-12 08:42:23 +02:00
edde746
5f8d263d63
fix(ci): fail closed on analyzer errors
2026-07-12 08:42:22 +02:00
edde746
d1a67828b6
fix(ci): detect silent tool failures
2026-07-12 08:42:19 +02:00
edde746
e4b0680158
fix(ci): enforce automation checks
2026-07-12 08:42:18 +02:00
edde746
5867809560
fix: resolve Jellyfin, logout, playback, and Android regressions
2026-07-09 17:14:45 +02:00
edde746
1d2dea214c
ci(windows): set up arm64 Flutter 3.44.0 from git tag
2026-07-01 07:10:24 +02:00
edde746
e07f54921c
ci(windows): install patched DComp engine for x64 and arm64
2026-07-01 06:37:51 +02:00
edde746
eba553413c
fix(macos): allow LuaJIT under hardened runtime
...
close #1214
2026-06-01 02:46:37 +02:00
edde746
656d512858
ci: add build platform toggles
2026-05-31 09:26:55 +02:00
edde746
4f636dfffd
fix(ci): install libmpv scripting deps
2026-05-31 07:54:37 +02:00
edde746
139eed9ca9
fix(templates): require substantive issue-form fields
2026-05-30 07:33:06 +02:00
edde746
f565684842
fix(ci): stabilize analyzer and linux builds
2026-05-20 19:10:46 +02:00
edde746
1978d710da
fix(ci): unblock Flutter 3.44 checks
2026-05-19 12:38:43 +02:00
edde746
e98d7febdd
chore: upgrade Flutter to 3.44
2026-05-18 22:52:51 +02:00
edde746
81b05f00df
fix(ci): pin Flutter stable version
2026-05-18 20:37:00 +02:00
edde746
5139e39ed4
fix(sentry): upload symbols with dart plugin
2026-05-12 06:40:54 +02:00