Files
werkator/docs/prs/2026-09-08-PR#39-ui-small-corrections.md
d6823815d5 ui: small corrections after v1.3.0 — tab scrollbar, clickable overview entries, Imprint and Privacy, tellable watch/critical (#39)
The tab row no longer turns its 1 px underline overhang into a scrollbar on the
desktop; an overview entry opens its repository wherever it is clicked; the footer
carries Imprint and Privacy from server.impressumUrl and the new server.privacyUrl;
the System page's watch is a yellower amber and its critical a red clearly redder
than the clay of a failed build.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: mhoennig <michael@hoennig.de>
Reviewed-on: #39
2026-09-08 20:47:51 +02:00

77 lines
4.4 KiB
Markdown

> **WARNING:** This document describes only the change applied in this PR.
> It may already be outdated once the next PR is merged.
> Historic PR-documentation is not maintained along with new PRs — treat it as a snapshot, not as current documentation.
## Related Links
- [PR#35 — the design](2026-09-08-PR#35-ui-kin-design.md) and [PR#37 — the Repositories page](2026-09-08-PR#37-ui-repositories-overview.md), which this PR corrects after their first day in use.
## The Problem
Four small things showed on the first day of v1.3.0:
- The row of view tabs (`Latest`, `Branches`, `History`) showed a vertical scrollbar on the desktop — not scrollable, just sitting at the edge: the active tab's underline overhangs the row by one pixel, and the row was `overflow-x: auto`, which turns any overflow into scrollbars.
- On the Repositories page only the repository's name was a link; the rest of the entry, which holds no other control, did nothing when clicked.
- The footer had one link, `Impressum (Legal Disclosure)`, and none for the privacy policy; the author's sites carry `Imprint` and `Privacy` on the right.
- On the System page the `watch` amber and the `critical` clay were hard to tell apart.
## Non-Goals
- No other visual change; the palette otherwise stays as RFC 0001 specifies it.
- Failed builds keep their clay; only the System page's *critical* level gets the redder tone, because there it stands next to *watch*.
## The Scenarios
### Feature: small corrections to the new UI
#### Scenario#39.01: the footer carries Imprint and Privacy
So that every page links the legal pages the way the author's sites do.
- **Given** `server.impressumUrl` and `server.privacyUrl` are configured (instance-level, `~/.werkator.yml` on a multi-repository instance)
- **When** any page renders
- **Then** the footer's right side links `Imprint` and `Privacy`, each opening in a new tab
- **and** an empty URL hides its link; with both empty the right side is empty.
##### Verified by
- [UiControllerTest — latest view renders rows with badge, Gitea links, artifact link, actions, and token](../../src/test/kotlin/de/hoennig/werkator/server/UiControllerTest.kt) (asserts both links)
#### Scenario#39.02: the whole overview entry opens the repository
So that a reader can click anywhere in the entry, not only on the name.
- **Given** the Repositories page
- **When** the reader clicks anywhere in an entry that is not a link, without selecting text
- **Then** the browser opens that repository's Latest view
- **and** the name stays a real link for the keyboard and for opening in a new tab
- **and** an entry re-rendered by `werkator.js` behaves the same.
##### Verified by
- [UiControllerTest — the Repositories page lists every served repository as the overview sorts them](../../src/test/kotlin/de/hoennig/werkator/server/UiControllerTest.kt) (asserts the entry's `data-url`)
- The click itself is script behaviour, checked in the browser.
#### Scenario#39.03: no scrollbar on the tabs, and two tellable levels
- **Given** a desktop viewport
- **When** a repository view renders
- **Then** the tab row shows no scrollbar; on a phone it still scrolls sideways when the tabs do not fit.
- **Given** the System page with a gauge at `watch` and one at `critical`
- **Then** `watch` is a yellow amber and `critical` a red clearly redder than the clay of a failed build, in both color schemes.
##### Verified by
- Stylesheet only; checked in the browser, light and dark.
## The Solution
- `werkator.css`: the tab row loses `overflow-x: auto` on the desktop and keeps it on the phone with `overflow-y: hidden` and a 1 px bottom padding for the underline's overhang; `.repo` gets a pointer cursor and a hover ground; new tokens `--amber` (yellower), `--crit`/`--crit-soft` (red) used by the System page's critical level, the overloaded verdict and the `upgrade` advice.
- `ServerConfig.privacyUrl`, the `init` template and `docs/configuration.md` gain the key; `UiController` puts it on the model; the footer fragment renders `Imprint` and `Privacy`.
- `repos.html` writes the entry's `data-url`; `werkator.js` sets it on re-rendered entries and opens it on a click that hits no link and selects no text.
## Additional Changes
- Version 1.3.1 and its release-notes entry, since this is what gets deployed.
- On mih09 the instance file gets `server.impressumUrl` and `server.privacyUrl` pointing at the author's pages.