Break long values on the webhook page and event log at phone width (closes #391) #495

Merged
clawbot merged 1 commits from issue-391-phone-width-rows into next 2026-10-03 06:56:44 +02:00
Collaborator

At 390 pixels, values with no place to break ran past their rows: an event's ID or a long content type in the event log, and a long webhook or target name on the webhook page, which also made that page scroll sideways. The elements holding only such a value (a name, a description, an ID, a content type) now carry wrap-anywhere, so it breaks only where it does not fit. Controls, statuses and times never break inside a word, so a row too wide for a phone still runs past the edge, where the new check sees it. Wide screens look as they do today. The event log's title row now wraps like the webhook page's, so on a phone the event count drops under the heading.

The browser test gets a 390-pixel check of both pages, the event log with a delivery's attempts open: neither page scrolls sideways, and nothing shown runs past the page's or its card's edge. The seeded webhook name and the newer event's content type are long enough to fail it without this change.

  • Deviation from the plan: target rows are unchanged; their controls already wrap under the name on next since #375. At 390 pixels an event's ID takes its own line under the method.
  • Judgement call: in an event's row a target's name shares its element with the delivery's status, so it does not break; a name long enough to need it still runs past the edge, as on next.

Model: opus-5-5

At 390 pixels, values with no place to break ran past their rows: an event's ID or a long content type in the event log, and a long webhook or target name on the webhook page, which also made that page scroll sideways. The elements holding only such a value (a name, a description, an ID, a content type) now carry `wrap-anywhere`, so it breaks only where it does not fit. Controls, statuses and times never break inside a word, so a row too wide for a phone still runs past the edge, where the new check sees it. Wide screens look as they do today. The event log's title row now wraps like the webhook page's, so on a phone the event count drops under the heading. The browser test gets a 390-pixel check of both pages, the event log with a delivery's attempts open: neither page scrolls sideways, and nothing shown runs past the page's or its card's edge. The seeded webhook name and the newer event's content type are long enough to fail it without this change. - Deviation from the plan: target rows are unchanged; their controls already wrap under the name on `next` since https://git.eeqj.de/sneak/webhooker/issues/375. At 390 pixels an event's ID takes its own line under the method. - Judgement call: in an event's row a target's name shares its element with the delivery's status, so it does not break; a name long enough to need it still runs past the edge, as on `next`. Model: opus-5-5
clawbot added the needs-review label 2026-10-03 06:00:52 +02:00
clawbot self-assigned this 2026-10-03 06:00:52 +02:00
Author
Collaborator
  1. The new phone-width check does not cover statuses, times and controls (internal/server/alpine_browser_test.go, checkPhoneWidth, together with wrap-anywhere on the page containers in templates/source_detail.html and templates/source_logs.html). The check fails only when something runs past the page's or its card's edge. With wrap-anywhere on the whole page, a row that does not fit no longer pushes anything past the edge: it squeezes its controls, badges, statuses and times and breaks them inside words. So if the target rows or the event rows stop wrapping, Delete, Deactivate, Edit, Active, the type badge and the delivery statuses show broken mid-word at 390 pixels (the issue's "Del" defect in a new form), and the check still passes. Acceptable: the check also fails when the text of a status, time, badge or control is broken inside a word; or wrap-anywhere goes only on the elements that hold long values (names, IDs, content types), so a squeezed row still runs past the edge and the check catches it.

  2. The README's list of what the browser test checks leaves out the new check (README.md, section "Third-party browser assets", the paragraph ending "at phone width the menu button opens and closes the mobile menu"). Every earlier check is listed there. Acceptable: one more clause saying that at phone width neither the webhook page nor the event log, with a delivery's attempts open, scrolls sideways or cuts anything off at the page's or a card's edge (plus whatever finding 1 adds).

  • Judgement call: the disclosed deviation stands. On current next the target rows' controls already wrap under the name and none is cut off, even with long names, so leaving those rows unchanged is right.
  • Judgement call: at 1024 pixels a long entrypoint description that used to run past its card now wraps; taken as a fix, not a change to the wide layout.

Model: opus-5-5

1. **The new phone-width check does not cover statuses, times and controls** (`internal/server/alpine_browser_test.go`, `checkPhoneWidth`, together with `wrap-anywhere` on the page containers in `templates/source_detail.html` and `templates/source_logs.html`). The check fails only when something runs past the page's or its card's edge. With `wrap-anywhere` on the whole page, a row that does not fit no longer pushes anything past the edge: it squeezes its controls, badges, statuses and times and breaks them inside words. So if the target rows or the event rows stop wrapping, Delete, Deactivate, Edit, Active, the type badge and the delivery statuses show broken mid-word at 390 pixels (the issue's "Del" defect in a new form), and the check still passes. Acceptable: the check also fails when the text of a status, time, badge or control is broken inside a word; or `wrap-anywhere` goes only on the elements that hold long values (names, IDs, content types), so a squeezed row still runs past the edge and the check catches it. 2. **The README's list of what the browser test checks leaves out the new check** (`README.md`, section "Third-party browser assets", the paragraph ending "at phone width the menu button opens and closes the mobile menu"). Every earlier check is listed there. Acceptable: one more clause saying that at phone width neither the webhook page nor the event log, with a delivery's attempts open, scrolls sideways or cuts anything off at the page's or a card's edge (plus whatever finding 1 adds). - Judgement call: the disclosed deviation stands. On current `next` the target rows' controls already wrap under the name and none is cut off, even with long names, so leaving those rows unchanged is right. - Judgement call: at 1024 pixels a long entrypoint description that used to run past its card now wraps; taken as a fix, not a change to the wide layout. Model: opus-5-5
clawbot added needs-rework and removed needs-review labels 2026-10-03 06:27:17 +02:00
clawbot added 1 commit 2026-10-03 06:45:21 +02:00
A name, ID or content type with no place to break ran past its row and
was cut off by the card at 390 pixels, and a long webhook name made the
webhook page scroll sideways. The elements holding such values now
carry wrap-anywhere, so a value breaks only where it must; controls,
statuses and times never do, so a row too wide for a phone still runs
past the edge. The event log's title row wraps like the webhook page's.

The browser test gains a 390-pixel check of both pages: neither scrolls
sideways and nothing shown runs past the page's or its card's edge. Its
seeded webhook name and newer event's content type are long enough to
fail without the change.

Model: opus-5-5
clawbot force-pushed issue-391-phone-width-rows from 329f265e30 to d5bdef9b56 2026-10-03 06:45:21 +02:00 Compare
Author
Collaborator

Reworked.

  1. wrap-anywhere moved off the page containers onto the elements holding only a name, a description, an ID or a content type; header values already break.
  2. The README's list gains the phone-width clause.
  • Partially verified: tried it. A target row kept on one line fails the check, with Delete cut off; an event row kept on one line passes it, as the event's ID and content type narrow to a few characters a line while every status and time still shows whole.
  • Judgement call: a target's name in an event's row shares its element with the delivery's status, so it carries no class; a name long enough to need one still runs past the edge, as on next.
  • Judgement call: the webhook's and an entrypoint's descriptions carry the class too, as an entrypoint's description names it in its list.

Model: opus-5-5

Reworked. 1. `wrap-anywhere` moved off the page containers onto the elements holding only a name, a description, an ID or a content type; header values already break. 2. The README's list gains the phone-width clause. - Partially verified: tried it. A target row kept on one line fails the check, with Delete cut off; an event row kept on one line passes it, as the event's ID and content type narrow to a few characters a line while every status and time still shows whole. - Judgement call: a target's name in an event's row shares its element with the delivery's status, so it carries no class; a name long enough to need one still runs past the edge, as on `next`. - Judgement call: the webhook's and an entrypoint's descriptions carry the class too, as an entrypoint's description names it in its list. Model: opus-5-5
clawbot added needs-review and removed needs-rework labels 2026-10-03 06:45:29 +02:00
Author
Collaborator

Re-review of #495 passed.

Model: opus-5-5

Re-review of https://git.eeqj.de/sneak/webhooker/pulls/495 passed. Model: opus-5-5
clawbot merged commit 9ccaa8ce01 into next 2026-10-03 06:56:44 +02:00
clawbot deleted branch issue-391-phone-width-rows 2026-10-03 06:56:44 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/webhooker#495