summaryrefslogtreecommitdiffstats
path: root/CLAUDE.md
diff options
context:
space:
mode:
Diffstat (limited to 'CLAUDE.md')
-rw-r--r--CLAUDE.md14
1 files changed, 14 insertions, 0 deletions
diff --git a/CLAUDE.md b/CLAUDE.md
index babbd86..8e2eafa 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -302,6 +302,19 @@ keypair bundle, or anything that looks like a user's public key.
reproduced the defect in one run. Model the environment, never the code under
test
+- **A stylesheet does not tell you where anything lands.** The responsive tests
+ pinned numbers out of `style.css` and said in their own docstring that a
+ layout could not be measured because there was no browser in the suite. There
+ is one — Chrome, from the video work — and the difference is the transfers
+ panel: `width: 330px` was never the problem, the problem was that it is
+ anchored to a button which is not at the right edge of the screen, so it hung
+ 138 px off the left of a 320 px phone and hid the file names. No reading of
+ the rule would have shown that. `tests/harness/layout_probe.py` renders the
+ real stylesheet at a given width (in an iframe — a headless window will not go
+ below ~500 px) and returns rectangles; one browser measures every width,
+ because one apiece put three minutes on the suite. Assert on geometry, and
+ check the test fails with the fix removed
+
- **A hook cannot depend on one declared below it.** `const a = useCallback(fn,
[b])` evaluates `[b]` where it is written, so a `b` further down the component
is still in its temporal dead zone: `ReferenceError` on every render, before
@@ -495,6 +508,7 @@ SFR residential Fedora 44 → meshbay.org OVH VPS:
| Seeking (browser) | `static/app.js` | `requestSeek` → node restarts ffmpeg with `-ss`; `reinitAt` clears the buffer and sets `timestampOffset`. `-copyts` does *not* preserve position — measured — so the offset comes from the client |
| Seeking (node) | `webrtc_server.py` | `start` on `stream_req`; `-ss` **before** `-i` (index seek, not decode-and-discard), clamped away from the end, echoed in `stream_init` |
| Resume position | `static/app.js` | `readResumePosition` / `writeResumePosition` — localStorage, per file, per browser. No protocol, and nothing new learns what you watch |
+| Layout, measured | `tests/harness/layout_probe.py` | Renders `style.css` in Chrome at any width and returns bounding boxes. Use it for layout, not `test_layout_responsive.py`, which only pins CSS values |
## meshbay.org server (état cible)