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
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.
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
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
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.
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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.
nextsince #375. At 390 pixels an event's ID takes its own line under the method.next.Model: opus-5-5
The new phone-width check does not cover statuses, times and controls (
internal/server/alpine_browser_test.go,checkPhoneWidth, together withwrap-anywhereon the page containers intemplates/source_detail.htmlandtemplates/source_logs.html). The check fails only when something runs past the page's or its card's edge. Withwrap-anywhereon 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; orwrap-anywheregoes 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.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).nextthe target rows' controls already wrap under the name and none is cut off, even with long names, so leaving those rows unchanged is right.Model: opus-5-5
329f265e30tod5bdef9b56Reworked.
wrap-anywheremoved off the page containers onto the elements holding only a name, a description, an ID or a content type; header values already break.next.Model: opus-5-5
Re-review of #495 passed.
Model: opus-5-5