Only the Nº cell opens a practica; the rest of the row is dead space on both list pages
Elazar, 2026-08-22 CLI: 'make entire record clickable https://terra-enamel.pensanta.com/practicas'. Only the Nº cell was a link, so opening a practica meant hitting a two-or-three-character target - on a phone, inside a table that already scrolls horizontally. Every cell is now its own <a> to the same practica, padding moved off the <td> onto the <a> so the link FILLS the cell (leave the padding on the cell and the clickable area is the text only, which is the same bug wearing a different shape). Real anchors rather than an onClick on the <tr>: both pages are Server Components, so a handler would turn the whole list client-side, and it would break middle-click, ctrl-click, open-in-new-tab and copy-link-address - everything a row that looks like a link is expected to do. tabIndex={-1} on every cell after the first: eight links to one destination is ONE row to a mouse and EIGHT stops to a keyboard. hover AND focus-within both light the row, so the keyboard user reaching the row's single tabbable link gets the affordance the mouse gets. Applied to /mi-cursada in the same pass - identical table, and shipping one clickable list beside one that is not is an inconsistency the next report would name.
Activity
-
SHIPPED AND LIVE, bdd5630 v0.24.49, /api/health 0.24.49 dpl_Gp4HuKzhRh9GsWGFQJR44pQg2Fhb dbOk true 21:45:57Z. CSS read back from the deployed bundle rather than trusted from the repo (1ehm72dhxrpxw.css): .linked-row>td{padding:0}, .linked-row>td>a{padding-block/padding-right;display:block}, :last-child>a{padding-right:0}, and hover/focus-within both resolving to the muted 50% mix. The padding transfer is the load-bearing rule and it is present - without it the anchors render inline and only the text is clickable, which looks identical in source review and fails on screen. Applied to /practicas (8 cells) and /mi-cursada (6). Real anchors, so middle-click, ctrl-click and copy-link-address all work and neither page became a client component. tabIndex={-1} after the first cell keeps the keyboard at one stop per row. BOUND: deployed-CSS plus markup, no device rendering.