Clean up and clarify the web UI #57
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
The webhooker web UI needs a cleanup pass to make it more conceptually clear and logically organized.
Goals:
This is a UX/design pass, not just cosmetic — the UI should make the system's concepts easy to understand for someone seeing it for the first time.
clawbot referenced this issue2026-08-07 13:16:13 +02:00
Concrete items for this cleanup, from the 1.0 re-audit (see #33):
/source, but page headings say Webhook(s) — one concept, pick one name.templates/source_detail.html) — present friendly fields instead of the verbatim config blob.database/logtarget options (tracked as #70)./redirecting to the sources list.Suggest tackling this as a proposal first (a short before/after of the target flow and terminology), then splitting into small sub-issues — pending your go-ahead in #33.
Correction per @sneak's 2026-08-07 decision: the
databaseandlogtarget options stay — they are required for 1.0 and will be implemented (database archiving in #43, log target in #70). Disregard the "do not offer thedatabase/logoptions" bullet in my previous comment. For this UI-cleanup issue, the scope for those targets is to render their config and delivery status clearly, not to hide them.Definition of done
Scoping this to land for 1.0.0. #43 and #70 have both closed, so the target-rendering bullets are actionable. The raw-config bullet turned out to be a credential exposure rather than a cosmetic issue and is split out as #113 so it can land on its own; it is not part of this unit.
templates/navbar.html:19,41) while headings say Webhooks (Webhooks,Create Webhook,Edit Webhook). Standardise user-visible copy on "Webhook", which matches the product name, the model (database.Webhook), and most existing headings. URLs are out of scope —/sourcesand/source/{id}stay; changing routes breaks existing bookmarks and buys nothing here.templates/profile.html:52-53reads "Profile settings and preferences will be available here." Password change (#65) has landed and is the only real setting; delete the empty section rather than shipping placeholder copy.source_detail.html. Progressive enhancement only — no framework, and the URL stays selectable if the script does not run.Out of scope
The "real home/dashboard instead of
/redirecting to the sources list" bullet is deferred past 1.0. It is a design proposal rather than a cleanup, and nothing in the milestone depends on it. Say the word if you want it pulled in.Implementation requirements
next; PR based onnext; single commit; title ending(closes #57).next, not the issue text — readparseRetentionDaysandRetentionLabelbefore writing the copy.make check, plusscript/cibuildwith the Docker cache defeated.Scope correction: the Definition of done above says #79 has landed. It has not —
RetentionLabel,parseRetentionDaysandRetentionForeverDaysexist only on #96, still open.Item 3 (retention copy) is therefore dropped from this unit: PR 96 already rewrites that copy in
sources_new.htmlandsource_edit.html, so doing it here would duplicate it and conflict. Items 1, 2 and 4 ship now; item 3 stays open on this issue and gets done once PR 96 lands.clawbot referenced this issue2026-08-11 14:31:20 +02:00
Items 1, 2 and 4 are up as #116 (base
next).templates/navbar.htmllinks now read Webhooks, andtemplates/sources_list.html's title block saysWebhooks - Webhooker./sourcesand/source/{id}unchanged, per the DoD.templates/profile.html; the two-column grid collapses to the one remaining column.templates/source_detail.htmlrenders each entrypoint URL in an id'd<code>followed by a button carrying thehiddenattribute;static/js/app.jsreveals it only when both the target and the Clipboard API resolve, so without the script there is no dead control and the URL stays selectable. No framework, no new Tailwind classes.Item 3 is not in that PR. The DoD states #79 has landed; it has not —
parseRetentionDays,RetentionLabel,RetainsForeverandRetentionForeverDaysexist only on the open #96. Onnexttoday a 0 is unreachable from the UI (create falls back to 30, edit ignores it, GORM substitutes the column default on insert), so "0 retains forever" copy would be false, and PR 96 already rewrites the same form lines.sources_new.htmlandsource_edit.htmlare left byte-identical tonextso that rebase stays clean.Verified:
make checkexit 0 with0 issues.from the linter, andscript/cibuildexit 0 with the fmt-check, lint, test and build layers all executing rather than replaying from cache.Separately noted while working here: page
{{define "title"}}blocks never render, becauseparsePageTemplateparses the page beforehtmlheader.html, whose{{block "title"}}then redefines it. Every tab reads just "Webhooker". Pre-existing and left alone.