feat(t-paliad-073): audit polish-2 DEFER cleanup (F-23/32/38/40/48/49) #1
Reference in New Issue
Block a user
No description provided.
Delete Branch "mai/ritchie/audit-polish-2-defer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Six small DEFER findings from
docs/audit-polish-2-2026-04-29.mdshipped as one PR. All low-risk visual / wiring polish, no architectural changes. F-25 (mobile tables → card layout) is redesign-class and is scoped at the bottom of this description as t-paliad-074, not implemented here.Findings shipped
/deadlines+/projectsis hidden when every visible row shares the same status. Toggle is a CSS class on the table that flips at every render; the column re-appears the moment filters re-introduce variety, so the header is never permanently removed from the DOM./agendanow renders only when it disagrees with the day-bucket heading. ComputedexpectedUrgency(bucket.day)mirrors the server's bucketing rule. Common case (a "Heute" item under HEUTE, a "Diese Woche" item under "in 3 Tagen") drops the redundant tag; outliers (e.g. an Überfällig deadline that landed in today's bucket through a filter quirk) still show the pill so the disagreement reads clearly./api/deadlines/summaryalready returned atodaybucket and the badge code already summedoverdue + today(option (b) per brief). Added a localizedtitle=+aria-labelso a "2" badge on the bottom-nav now reads as"X überfällig + Y heute fällig"(DE) /"X overdue + Y due today"(EN) instead of an opaque number.glossar.filter.litigation/glossar.filter.prosecutionkeys translated for DE:"Streitsachen"/"Erteilungsverfahren". EN keeps"Litigation"/"Prosecution". Same keys also wired through the Suggest-modal<select>so the language stays consistent across the chip row and the category dropdown./projects/{id}/sub-projectsnow 301-redirects to the canonical/projects/{id}/children. Added via a small parameterised redirect on the outer mux inredirects.go; newredirects_test.golocks the alias in (preserves query string).changelog/changelog_test.goare length-agnostic and stay green.Verification
go build ./... && go vet ./... && go test ./...— cleancd frontend && bun run build— clean (branding: firm="HLC", all bundles emitted)redirects_test.gocovers/projects/abc-123/sub-projects→/projects/abc-123/children(with and without query string)Test plan
tester@hlc.deon paliad.de:/deadlineswith default filter (pending) → STATUS column hidden; switch filter to "Alle offen & erledigt" with mixed rows → column re-appears/projectswith all-statuses filter and at least one archived/closed project → column visible; filter to a single status → column hidden/agendaHEUTE bucket: "Heute"-urgency items have no pill; an overdue item that lands in HEUTE keeps its pill/glossaryDE: chips read "Streitsachen / Erteilungsverfahren / Allgemein"; switch to EN → "Litigation / Prosecution / General"; suggest modal category dropdown matchescurl -i https://paliad.de/projects/<some-id>/sub-projects→ 301 to/children/changelogno longer leads with the meta-circular "Neuigkeiten / What's New" entry; first entry is the 2026-04-20 settings cardCoordination
t-paliad-069 is a separate worker on
internal/services/reminder_service.go. No file overlap with this PR — merge order does not matter.Self-merge
Authorized by the task brief.
Follow-up: t-paliad-074 — Mobile tables → card layout (F-25, scope only)
Brief for head to file as a standalone task once this PR lands. Below ~640px, four pages render data tables that overflow horizontally and force the user to scroll:
/projects,/deadlines,/appointments,/admin/team. The right fix is a card layout — each row collapses into a stacked card with the most important fields up top.Today's table structure → card layout migration per page
/projects(frontend/src/projects.tsx+client/projects.ts)/projects/{id}./deadlines(frontend/src/deadlines.tsx+client/deadlines.ts)/deadlines/{id}; checkbox stays a hit-target./appointments(frontend/src/appointments.tsx+client/appointments.ts)/admin/team(frontend/src/admin-team.tsx+client/admin-team.ts)Shared CSS plan
.card-row(or.mobile-card) with companion.card-row-headline,.card-row-sub,.card-row-meta,.card-row-footerblocks.~640pxbreakpoint, hide.akten-table-wrap/.fristen-table-wrap/.admin-team-table/.appointments-tableand reveal a<ul class="card-row-list">rendered alongside.<table>rows and a<ul>of cards from the samefilteredarray — CSS picks which is visible. No server-side knowledge of viewport needed; everything stays one HTML payload.<main>; no extra padding needed.Test plan
overflow-x: auto— unchanged.display: none. Tap targets ≥ 44px. Headline truncation respects existing ellipsis rules. Sort/filter/search continue to drive both renderers.<li role="link">or wraps<a>so screen readers announce a single tappable region; status chips and action buttons keep theiraria-labels.Six findings from docs/audit-polish-2-2026-04-29.md DEFER list: - F-23: hide STATUS column on /deadlines + /projects when every visible row shares the same status. Toggled at render time via a CSS class on the table; the column re-appears the moment filters re-introduce variety. - F-32: agenda urgency pill now renders only when it disagrees with the day-bucket heading (e.g. an Überfällig deadline that lands in HEUTE through a filter quirk). Common case drops the redundant tag. - F-38: bottom-nav agenda badge already counted overdue+today (the brief's option (b)); added a localized title + aria-label so the count's semantics ("X überfällig + Y heute fällig") is no longer ambiguous. - F-40: glossary filter chips no longer mix EN+DE — DE shows "Streitsachen / Erteilungsverfahren / Allgemein", EN keeps "Litigation / Prosecution / General". Same i18n keys cover the Suggest-modal category dropdown. - F-48: /projects/{id}/sub-projects now 301-redirects to the canonical /children URL via the existing redirects.go mechanism. Added a small redirects_test.go to lock the alias in. - F-49: dropped the meta-circular 2026-04-22 "Neuigkeiten / What's New" changelog entry that referenced "this changelog" itself. go build/vet/test clean, bun run build clean. F-25 (mobile tables → card layout) is redesign-class and is scoped at the bottom of the PR description as t-paliad-074, not implemented here.