Repository navigation
fix(player): 修复移动端布局、搜索交互与 iPhone 音效 #463
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
XCQ0607
merged 3 commits into
XCQ0607:dev
from
pokemonred06-creator:codex/ui-mobile-validation
Oct 25, 2026
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| name: Player validation | ||
|
|
||
| on: | ||
| pull_request: | ||
| branches: [dev] | ||
| push: | ||
| branches: [codex/ui-mobile-validation] | ||
| workflow_dispatch: | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| test-and-build: | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-node@v4 | ||
| with: | ||
| node-version: '24' | ||
| cache: npm | ||
| - name: Install dependencies | ||
| run: npm ci --ignore-scripts --no-audit --no-fund | ||
| - name: Regression tests | ||
| run: npm test | ||
| - name: Production build | ||
| run: npm run build | ||
| - name: Compiled authorization smoke check | ||
| run: node test/candidate-smoke.cjs | ||
| env: | ||
| LX_BUILT_SERVER_DIR: ${{ github.workspace }}/server/server | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| # UI repair architecture | ||
|
|
||
| Keep the existing vanilla JavaScript player and backend. Extend existing queue, search and collection entry points rather than adding another playback model. Add shared UI focus management for dialogs/drawers and history metadata for main views. Preserve nested lyric/detail navigation. | ||
|
|
||
| Player CSS owns responsive layout using the same 1025px desktop boundary as the existing theme. The visualizer retains its artwork and audio behavior; its mobile canvas occupies a dedicated row. Static Tailwind output scans player markup and script-generated classes, using the existing CSS-variable theme and breakpoint configuration. | ||
|
|
||
| Local artwork endpoints retain their existing authentication and path validation. An optional bounded thumbnail transform runs only after authorization, with byte-limited caching and constrained decoding/concurrency. Original images remain available for lyrics/Media Session/export. Closed queue content is materialized only when opened; existing queue state remains authoritative. | ||
|
|
||
| Deployment uses an immutable overlay on the verified live image, a disposable candidate with isolated data and disabled background jobs, protected backup/rollback and recreation of only the lxserver Compose service. Compare assets, runtime, configuration, mounts and unrelated containers before/after. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| # UI repair progress | ||
|
|
||
| - [x] Port reviewed responsive/accessibility/search/artwork/queue repairs onto current upstream dev. | ||
| - [x] Preserve upstream VU artwork and modern login layout while applying mobile reachability/input fixes. | ||
| - [x] Enable explicit iPhone audio effects and provide a native-playback reload for AirPlay. | ||
| - [x] Add runnable regression coverage and a pull-request test/build workflow. | ||
| - [x] Production compilation and179regression tests pass. | ||
| - [x] Combined browser checks at320/390/1024/1440px and desktop-to-mobile resizing pass without overflow or hidden Play. | ||
| - [x] Actual modern login succeeds with a disposable local account; input text is16px, capitalization is disabled and the username field remains unique. Mode/rate menus fit and effects dialog Escape/focus behavior passes. | ||
| - [x] Submitted [PR #463](https://github.com/XCQ0607/lxserver/pull/463) to upstream dev; GitHub Player validation passes (tests, production build and compiled smoke). Maintainer review/merge remains pending. | ||
|
|
||
| The independently deployed repair source remains verified on Synology. Deployment state and private operational evidence are kept outside this upstream contribution. See [verification](verification.md) for test scope and physical-device limits. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| # Web player UI repairs | ||
|
|
||
| Repair the audited player without changing saved preferences, native/AirPlay/Cast routing, lyric metadata, provider configuration or library data. | ||
|
|
||
| - Keep all player controls and the VU meter visible without overlap at 320px, 390px, tablet and desktop widths, including after resizing. | ||
| - Expose labelled, keyboard-accessible controls with adequate touch targets. Dialogs contain focus, close on Escape where dismissal is allowed, and restore focus; closed drawers cannot receive focus. | ||
| - Allow Play next and Add to queue without replacing the queue or interrupting playback. Include Default List in the collection picker. | ||
| - Restore the prior main view through browser Back/Forward. | ||
| - Cancel obsolete searches, ignore late responses, bound provider waits, show partial results and distinguish provider failure from no results. | ||
| - Defer closed queue rendering/artwork, serve bounded thumbnails, compile utility CSS ahead of time and defer optional features. | ||
| - Pass existing regression tests, type/build checks, isolated browser/HTTP checks and candidate/live asset verification before declaring deployment successful. Report physical-device limitations separately. | ||
| - Verify mobile flows on the newest installed iPhone simulator runtime; keep simulator, browser-fixture and physical-device results distinct. Keep short-screen agreements/detail actions reachable, avoid iOS input zoom and hover-only first taps, and fit player menus within the viewport. | ||
|
|
||
| - Make explicit iPhone effect edits change local audio output while native startup and existing AirPlay/Cast routes remain protected. Explain the native reload required to release Safari media capture before AirPlay. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| # UI repair verification | ||
|
|
||
| - [x] Responsive footer/VU and controls, including resizing between mobile/tablet/desktop. | ||
| - [x] Queue insertion preserves current playback; unopened queue omits rows and artwork. | ||
| - [x] Default List supports individual and batch collection changes. | ||
| - [x] Search replacement cancels prior requests; provider deadlines cover response-body reads; partial failures remain visible. | ||
| - [x] Dialog focus/inert lifecycle handles nested input/confirmation surfaces. | ||
| - [x] iPhone agreement remains scrollable in landscape; inputs use16px text and account names disable capitalization. | ||
| - [x] Local iPhone effect edits activate processing; wireless/Cast edits remain saved-only; native reload releases processing and preserves saved settings. | ||
| - [x] Regression suite:168CommonJS and11TypeScript tests on current upstream dev, plus production compilation and compiled authorization smoke test. | ||
|
|
||
| The three configuration-migration tests from the separately deployed source are omitted here because that deployment-only module is absent from upstream dev. Backend route fixtures use upstream's actual cache-browse request context. | ||
|
|
||
| The earlier deployed repair source passed182tests,69isolated/65live HTTP checks,31effects/session/login regressions per image and14public HTTPS asset checks. These deployment results describe that source; this PR is rebased onto upstream v2.1.4 and retains its newer VU/login/library features. | ||
|
|
||
| An iPhone18Pro/iOS27.0 simulator, driven through CLI HID touches, verified a16x RMS change between EQ-12/+12dB, a1kHz→1.5kHz pitch shift, a reverb change and reversal of stereo channel dominance. Native reload left no graph/context/bridge and retained saved effects. The PR sound-effects and AirPlay modules match those signal-tested modules exactly. This establishes simulator processing, not physical speaker fidelity or receiver delivery. | ||
|
|
||
| Broad simulator checks cover playback, seek/speed/mode, search/pagination, collections, queue removal/clear, playlists/rankings, lyrics/export, settings and artist/album navigation. Queue dragging, PWA/admin, exhaustive secondary settings/import/export mutations and physical receiver/lock-screen playback remain unverified. The original query-specific search500and old WebKit crash have no proven root cause; this change does not claim to fix those incidents. | ||
|
|
||
| Combined branch browser verification uses a separate loopback-only server with disposable data/configuration. Account login succeeds; the modern login retains one username field,16px input text and disabled capitalization. At320/390/1024/1440px and after desktop-to-mobile resize, Play stays inside the viewport, the document has no horizontal overflow and the mobile VU starts below song information. Mode/rate menus remain within the phone viewport; the effects modal exposes dialog semantics and Escape closes it. |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
关闭检出凭据持久化。
当拉取请求中的代码运行
npm test和npm run build时,actions/checkout@v4默认仍将检出令牌保存在本地 Git 配置中。该工作流不需要让后续脚本使用令牌。请为 checkout 添加persist-credentials: false,避免测试或构建脚本读取具有contents: read权限的令牌。(github.com)🧰 Tools
🪛 zizmor (1.30.1)
[warning] 17-17: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false
(artipacked)
Source: Linters/SAST tools