Skip to content

feat: one folder view, a padded picker, and ways back - #304

Merged
InstaZDLL merged 1 commit into
mainfrom
fix/folder-picker-spacing
Oct 22, 2026
Merged

InstaZDLL merged 1 commit into
mainfrom
fix/folder-picker-spacing

Conversation

@InstaZDLL

@InstaZDLL InstaZDLL commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

What the owner found using the Folders page on the dev server after #302 and #303.

One folder view: the filed folders

The page drew the disk tree (#301) beside the filed one (#302). A file uploaded into the folder Test then showed in Test under Filed and in Received under On disk. Both were true, and the owner read it as the file manager contradicting itself.

The Folders page now draws the filed tree only. A track has one place there: its folder, or Unfiled.

  • pages/folders-page.tsx is the filed view, moved from components/filed-folders.tsx with git mv. The view switch and the disk view are gone, and the root is titled Folders.
  • /folders takes ?folder= only: empty for the root, unfiled, or a folder id. Links, the delete redirect and the upload screen's way back follow.
  • The dead client code goes: getDiskTree, diskTreeQuery, the disk types, RECEIVED_FOLDER, SongTable's captions, the view-switch style, and 8 translation keys per language.
  • The server is unchanged. GET /libraries/{id}/tree keeps its contract for any client that wants it.
  • RFC-012 records the decision under decision 1, in "What the web client draws", and in its Revised line.

The folder picker had no padding

.folder-picker and .folder-list used var(--space-5). The spacing tokens go --space-4, then --space-6, so there is no --space-5: the padding resolved to nothing. A scan of every stylesheet for variables used but never defined finds only those two.

  • The picker gets --space-6 of padding, a 34rem width, and taller rows. The cards get their bottom margin.
  • When filing a track, the root's folders are no longer indented under Unfiled, which is a choice beside them, not their parent. This is the nested prop on FolderPicker.

Dark-theme screenshots were checked on desktop and mobile.

A way back

A shared PageBack arrow sits above the header. It goes back to wherever the page was opened from, using the router's history rather than the browser's. With nowhere to go back to:

  • the tag editor goes to the songs list, and shows the arrow while the track loads and when loading fails;
  • the upload screen goes to the folder it files into, or home when it files into none.

Tests

Playwright:

  • "goes back from the tag editor to where it was opened" fails if Back always goes to /songs, and fails if Back always calls history.back().
  • "goes back from the upload screen to the folder it was opened for" fails without the folder fallback.
  • The filed-folder tests now open /folders.
  • The two disk-view tests are removed with the view.

Each inversion ran on a build that compiles.

Validation

  • webapp: lint (the same 7 warnings in refresh.css), tsc, 190 unit tests, build
  • Playwright: 186 passed (190 before, minus the two disk-view tests on desktop and mobile)

The picker and the folder cards named --space-5, a token that does not exist, so the dialog had no padding and its rows touched its edges. They now use the tokens that exist, with more room per row. Filing a track no longer indents the root's folders under Unfiled, which is a choice beside them, not their parent.

The tag editor gets a Back arrow above its header, back to wherever it was opened from, or to the songs list when there is nowhere to go back to; it shows while the track loads too.

Signed-off-by: InstaZDLL <github.105mh@8shield.net>
@github-actions github-actions Bot added type: fix Bug fix scope: web Embedded web player (React) scope: components Web UI components and removed type: fix Bug fix labels Oct 21, 2026
@coderabbitai

coderabbitai Bot commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: InstaZDLL/waveflow-server/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: ab997a47-0c98-4273-900f-c84a51673d8a
📥 Commits

Reviewing files that changed from the base of the PR and between 762d6cb and ab5c917.

📒 Files selected for processing: 7
  • webapp/e2e/studio-nocturne.spec.ts
  • webapp/src/components/folder-picker.tsx
  • webapp/src/components/icons.tsx
  • webapp/src/components/track-editor.tsx
  • webapp/src/components/track-menu.tsx
  • webapp/src/state/i18n.tsx
  • webapp/src/styles/styles.css

Included review availability: This review used your included allowance. 1 included review remains after this review. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.

📝 Walkthrough

L’éditeur de pistes ajoute un bouton de retour avec une destination de secours. Le sélecteur de dossiers ajoute un mode d’affichage non imbriqué, utilisé lors du déplacement d’une piste, et reçoit des ajustements de présentation.

Changes: Navigation de retour de l’éditeur

Layer / File(s) Summary
Bouton de retour et navigation
webapp/src/components/track-editor.tsx, webapp/src/components/icons.tsx, webapp/src/state/i18n.tsx, webapp/src/styles/styles.css, webapp/e2e/studio-nocturne.spec.ts
L’éditeur affiche un bouton de retour dans le formulaire et pendant le chargement. Le bouton revient à l’historique précédent si possible, sinon à /songs. Les traductions anglaise et française, l’icône et les styles sont ajoutés. Le test E2E couvre le retour vers un album et vers /songs après un accès direct.

Affichage du sélecteur de dossiers

Layer / File(s) Summary
Mode d’imbrication et présentation
webapp/src/components/folder-picker.tsx, webapp/src/components/track-menu.tsx, webapp/src/styles/styles.css
La propriété nested vaut true par défaut et contrôle l’indentation des dossiers. Le déplacement d’une piste définit nested={false}. Les dimensions et les espacements du sélecteur sont ajustés.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to ab5c9

The Back button and folder picker match their intended behavior. No actionable issue remains before merge.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed Le titre décrit clairement les deux changements principaux : l’espacement du sélecteur de dossiers et l’ajout d’un retour dans l’éditeur de tags.
Description check Passed La description explique les changements, leur justification, les comportements attendus et les validations exécutées. Elle ne reprend pas exactement les rubriques du modèle ni toutes les cases de vali…
Docstring Coverage Passed Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 6 files. (1 skipped: 1 u…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Description check

Explanation

La description explique les changements, leur justification, les comportements attendus et les validations exécutées. Elle ne reprend pas exactement les rubriques du modèle ni toutes les cases de validation, mais elle reste complète et pertinente.

Full details: Docstring Coverage

Explanation

Docstring coverage is 80.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 6 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

🔧 Biome (2.5.14)
webapp/e2e/studio-nocturne.spec.ts

Biome could not lint this file: nested root configuration. Check the repository's Biome configuration and plugins.

webapp/src/components/folder-picker.tsx

Biome could not lint this file: nested root configuration. Check the repository's Biome configuration and plugins.

webapp/src/components/icons.tsx

Biome could not lint this file: nested root configuration. Check the repository's Biome configuration and plugins.

  • 4 others

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added size: m 50-200 lines type: fix Bug fix labels Oct 21, 2026
@InstaZDLL InstaZDLL self-assigned this Oct 22, 2026
@InstaZDLL
InstaZDLL merged commit 6c65abd into main Oct 22, 2026
16 checks passed
@InstaZDLL
InstaZDLL deleted the fix/folder-picker-spacing branch October 22, 2026 21:12
@InstaZDLL InstaZDLL changed the title fix: give the folder picker its padding, and the tag editor a way back feat: one folder view, a padded picker, and ways back Oct 22, 2026
@github-actions github-actions Bot added type: feat New feature and removed type: fix Bug fix labels Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: components Web UI components scope: web Embedded web player (React) size: m 50-200 lines type: feat New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant