Skip to content

style(webapp): two warnings and a stale RFC section - #190

Merged
InstaZDLL merged 2 commits into
mainfrom
fix/two-warnings-and-a-stale-rfc
Sep 11, 2026
Merged

InstaZDLL merged 2 commits into
mainfrom
fix/two-warnings-and-a-stale-rfc

Conversation

@InstaZDLL

@InstaZDLL InstaZDLL commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Summary

Two small debts, one from the linter and one from a document, with nothing else left open on the repository.

The two Biome warnings

noDescendingSpecificity has been reported since Biome 2.5.12 on .mobile-navigation a span and .player-progress span, both declaring display: none after .mobile-header .library-picker span and its neighbours had claimed the same element type with one class more. Nothing rendered wrong — each selector hides a span of its own and no element is matched by two of them — which is why they were warnings and not a bug.

The three rules are now one, with its selectors ordered from the least specific to the most. The declaration is identical for every selector, so the order cannot change what any element gets.

A first attempt merged the selectors without ordering them, and the warning stayed: the rule compares selectors inside a single list too. Worth knowing before grouping anything else.

RFC-008's stale open section

It still listed the upload values as undecided and asked whether abandoned working areas are swept at expiry, at boot, or both. Both had been settled by implementing:

  • UploadLimits (src/config.rs) carries all six values behind their environment variables — 1 GiB per file, 50 GiB quota, 4 MiB fragments, batches of 200, 4 sessions per account, 24 hour expiry — and validate_uploads cross-checks them at boot.
  • spawn_upload_sweeper (src/services/uploads.rs) sweeps at boot, once per session lifetime, and every negotiation sweeps before counting a quota.

Both entries are struck through with what shipped and where, rather than deleted, since they record what was open. The third question — sharing one blob between libraries — stays open, now pointing at RFC-009 decision 11, which drew the same line for canvases without settling what a library may learn from another.

Verification

  • biome check src e2e clean — the first time with no warnings since 2.5.12 began reporting this
  • tsc --noEmit, 102 unit tests, 56 Playwright tests across the desktop and mobile projects, axe sweeps included
  • The mobile navigation is still icon-only, which is what this CSS rule is load-bearing for and what an end-to-end test counts in the DOM
  • No Rust file is touched, so no server gate applies

No behaviour changes in either commit: one reorders selectors that share a declaration, the other edits a document.

Summary by CodeRabbit

  • Améliorations

    • Sur mobile, l’interface du lecteur, la navigation et les sélecteurs d’en-tête sont plus compacts grâce à l’affichage masqué de certains libellés.
  • Documentation

    • La documentation précise désormais les limites d’envoi de fichiers et les moments où le nettoyage des fichiers temporaires est effectué.
    • Les décisions concernant le partage de fichiers entre bibliothèques restent à définir.

Biome 2.5.12 began reporting noDescendingSpecificity on two rules that
predate lot D. `.mobile-navigation a span` and `.player-progress span`
each said `display: none` after `.mobile-header .library-picker span`
and its neighbours had claimed the same element type with one class
more. Nothing rendered wrong, and that is why the warning sat there
rather than being a bug: every one of those selectors hides a span of
its own, and no element is matched by two of them.

The three rules are now one, whose selectors run from the least specific
to the most. The declaration is the same for every selector, so their
order cannot change what any element gets, and none of them sits behind
a selector that already outranks it. The comment says so, rather than
leaving the next reader to work out why a phone's hidden labels live in
one place.

A first attempt merged the selectors without ordering them and kept the
warning: the rule compares selectors inside a single list too, which is
worth knowing before grouping anything else.

`biome check src e2e` is clean for the first time since 2.5.12 started
reporting this. tsc, 102 unit tests and 56 Playwright tests over the
desktop and mobile projects pass, so the mobile navigation is still
icon-only: the one thing this rule is load-bearing for, and the thing an
end-to-end test counts.

Claude-Session: https://claude.ai/code/session_019coGCzcX775GmG9kYz8fft
Signed-off-by: InstaZDLL <github.105mh@8shield.net>
Its "Ce qui reste ouvert" section still listed the upload values as
undecided, and still asked whether an abandoned working area is swept at
expiry, at boot, or both. Both were settled by implementing, and the
section had not noticed.

`UploadLimits` in `src/config.rs` carries all six values, each behind its
own environment variable: 1 GiB per file, 50 GiB of quota per library,
4 MiB fragments, batches of 200 offers, 4 concurrent sessions per
account, and a 24 hour expiry. `validate_uploads` cross-checks them at
boot, so no setting can contradict another. `spawn_upload_sweeper` in
`src/services/uploads.rs` sweeps at boot, then once per session
lifetime, and every negotiation sweeps before it counts a quota, which
is where the cleanup actually matters since the negotiation is what
decides.

The entries are struck through with what shipped and where, rather than
deleted: they are the record of what was open. The third question, the
sharing of one blob between libraries, stays open and now points at
RFC-009 decision 11, which has since drawn the same line for canvases
without settling what a library may learn from another.

This is the failure mode `CLAUDE.md` warns about in its own words: a
document about the code is not evidence about the code. This section
read as work remaining while the work had been done two weeks earlier.

Claude-Session: https://claude.ai/code/session_019coGCzcX775GmG9kYz8fft
Signed-off-by: InstaZDLL <github.105mh@8shield.net>
@github-actions github-actions Bot added scope: web Embedded web player (React) scope: docs Docs, README, assets type: style size: s 10-50 lines labels Sep 11, 2026
@coderabbitai

coderabbitai Bot commented Sep 11, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 7ab6d89d-4b1d-41f1-9b34-c6f1a6819b65

📥 Commits

Reviewing files that changed from the base of the PR and between d2e82e9 and b039bdd.

📒 Files selected for processing (2)
  • docs/rfcs/RFC-008-receiving-a-file.md
  • webapp/src/styles.css

Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.


📝 Walkthrough

Walkthrough

La PR documente les décisions de la RFC-008 sur les limites d’upload et le nettoyage. Elle regroupe aussi les règles CSS qui masquent plusieurs libellés sur les écrans mobiles.

Changes

Documentation de la réception de fichiers

Layer / File(s) Summary
Décisions documentées dans la RFC
docs/rfcs/RFC-008-receiving-a-file.md
La RFC précise les limites d’upload, leur validation, le nettoyage des sessions abandonnées et le statut du partage de blobs entre bibliothèques.

Styles de l’interface mobile

Layer / File(s) Summary
Règle commune pour les libellés mobiles
webapp/src/styles.css
Une règle mobile commune masque les libellés du lecteur, de la navigation mobile et des sélecteurs d’en-tête. Les règles locales redondantes sont supprimées.

Priority: ⬇️ Low

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

Change: Other

Merge Risk: ⚪ Minimal · up to b039b

The RFC and mobile CSS updates are consistent with the described behavior and verification results.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed Le titre décrit les deux changements principaux : la correction des avertissements CSS et la mise à jour de la section obsolète de RFC-008. Il est concis et spécifique.
Description check ✅ Passed La description présente le contexte, les changements, les décisions documentées et les vérifications exécutées. Elle ne reprend pas exactement les sections « Changes » et « Test plan » du modèle, mais…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/two-warnings-and-a-stale-rfc

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

@InstaZDLL InstaZDLL self-assigned this Sep 11, 2026
@InstaZDLL
InstaZDLL merged commit 46c1aa2 into main Sep 11, 2026
13 checks passed
@InstaZDLL
InstaZDLL deleted the fix/two-warnings-and-a-stale-rfc branch September 11, 2026 22:59
InstaZDLL added a commit that referenced this pull request Sep 15, 2026
style(webapp): two warnings and a stale RFC section
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: docs Docs, README, assets scope: web Embedded web player (React) size: s 10-50 lines type: style

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant