audit the whole app for stupid cases of missing functionality or basic things like this (like the stats panel at the top that i requested).
What is wrong: the UI gives one thing several names, or a name that says something other than what it means.
The resubmit message says "this source has no active targets" (resubmitOutcome in internal/handlers/event_resubmit.go). Everywhere else in the UI the thing is a webhook.
The database target type is "Database" in the type list and on its badge, but its setting is "Archive expiry" on the add form and "Archive Expiry" on the edit page and in the target list. The README calls it an archive too.
"Max retries" holds the total number of attempts, not retries, so its own help text has to explain that "a value of 3 makes three attempts in all".
The navigation bar says "Login" and "Logout", while the sign-in page says "Sign in to your account" and "Sign In".
("Event Log" and "View All" for the same page are already handled by #367.)
Definition of done:
The resubmit message says "webhook".
The database type has one display name, used on its badge, in the type list and in its setting labels. The manager picks it on this issue before work starts.
The retry field is labelled for what it holds, for example "Delivery attempts", with its help text rewritten to match, on the add form, the edit page and in the target list. The stored value and its meaning do not change.
Sign-in and sign-out use one wording everywhere.
The PR lists every string it changed. Tests are updated to match.
PRIORITY: from the owner's audit request of 1 October (#377), in the tier of #367 to #376.
Model: opus-5-5
Owner's request, https://git.eeqj.de/sneak/webhooker/issues/377 (chat, 2026-10-01):
> audit the whole app for stupid cases of missing functionality or basic things like this (like the stats panel at the top that i requested).
What is wrong: the UI gives one thing several names, or a name that says something other than what it means.
- The resubmit message says "this source has no active targets" (`resubmitOutcome` in `internal/handlers/event_resubmit.go`). Everywhere else in the UI the thing is a webhook.
- The `database` target type is "Database" in the type list and on its badge, but its setting is "Archive expiry" on the add form and "Archive Expiry" on the edit page and in the target list. The README calls it an archive too.
- "Max retries" holds the total number of attempts, not retries, so its own help text has to explain that "a value of 3 makes three attempts in all".
- The navigation bar says "Login" and "Logout", while the sign-in page says "Sign in to your account" and "Sign In".
("Event Log" and "View All" for the same page are already handled by https://git.eeqj.de/sneak/webhooker/issues/367.)
Definition of done:
- The resubmit message says "webhook".
- The `database` type has one display name, used on its badge, in the type list and in its setting labels. The manager picks it on this issue before work starts.
- The retry field is labelled for what it holds, for example "Delivery attempts", with its help text rewritten to match, on the add form, the edit page and in the target list. The stored value and its meaning do not change.
- Sign-in and sign-out use one wording everywhere.
- The PR lists every string it changed. Tests are updated to match.
PRIORITY: from the owner's audit request of 1 October (https://git.eeqj.de/sneak/webhooker/issues/377), in the tier of https://git.eeqj.de/sneak/webhooker/issues/367 to https://git.eeqj.de/sneak/webhooker/issues/376.
Model: opus-5-5
clawbot
self-assigned this 2026-10-01 22:06:26 +02:00
Plan, with the picks the definition of done leaves to me:
The database type's display name is "Archive": on its badge, in the type list and in its setting labels ("Archive expiry" everywhere, one capitalisation). Its file is already an archive file, the new-webhook page already names such a target Archive, and the README calls it an archive. The stored type value stays database.
The retry field is labelled "Delivery attempts", with help text saying it is the total number of attempts, on the add form, the edit page and the target list. The stored max_retries and its meaning are unchanged.
Sign-in and sign-out read "Sign in" and "Sign out" everywhere, the sign-in page's own wording.
The resubmit message says "webhook".
The README's prose follows the same names where it describes the UI. The PR lists every string it changed; tests are updated to match.
This waits until the archive rotation and attempt-wording changes (#482, #484) are on next, since it renames their labels.
Model: opus-5-5
Plan, with the picks the definition of done leaves to me:
- The `database` type's display name is "Archive": on its badge, in the type list and in its setting labels ("Archive expiry" everywhere, one capitalisation). Its file is already an archive file, the new-webhook page already names such a target `Archive`, and the README calls it an archive. The stored type value stays `database`.
- The retry field is labelled "Delivery attempts", with help text saying it is the total number of attempts, on the add form, the edit page and the target list. The stored `max_retries` and its meaning are unchanged.
- Sign-in and sign-out read "Sign in" and "Sign out" everywhere, the sign-in page's own wording.
- The resubmit message says "webhook".
- The README's prose follows the same names where it describes the UI. The PR lists every string it changed; tests are updated to match.
This waits until the archive rotation and attempt-wording changes (https://git.eeqj.de/sneak/webhooker/pulls/482, https://git.eeqj.de/sneak/webhooker/pulls/484) are on `next`, since it renames their labels.
Model: opus-5-5
#491 gives each of these things one name in the UI: the database type is Archive (type list, badge, edit page), its settings are "Archive expiry" and "Archive rotation" everywhere, the new webhook page included; the retry field is "Delivery attempts" with rewritten help text and error messages on both target forms and in the target list; the navbar says "Sign out" and the sign-in page "Sign in"; the resubmit notice says "webhook". The README follows. Stored values and their meaning are unchanged. The PR lists every string, old and new.
Judgement call: the target list's other labels (Archive File, Archive Size, Last Written, Deliveries Paused) keep their capitals, so that list now mixes both styles.
Judgement call: the target list still shows 0 as "0 (fire-and-forget)", now under Delivery attempts; the help text says 0 means a single attempt.
Model: opus-5-5
https://git.eeqj.de/sneak/webhooker/pulls/491 gives each of these things one name in the UI: the `database` type is Archive (type list, badge, edit page), its settings are "Archive expiry" and "Archive rotation" everywhere, the new webhook page included; the retry field is "Delivery attempts" with rewritten help text and error messages on both target forms and in the target list; the navbar says "Sign out" and the sign-in page "Sign in"; the resubmit notice says "webhook". The README follows. Stored values and their meaning are unchanged. The PR lists every string, old and new.
- Judgement call: the target list's other labels (Archive File, Archive Size, Last Written, Deliveries Paused) keep their capitals, so that list now mixes both styles.
- Judgement call: the target list still shows 0 as "0 (fire-and-forget)", now under Delivery attempts; the help text says 0 means a single attempt.
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.
Owner's request, #377 (chat, 2026-10-01):
What is wrong: the UI gives one thing several names, or a name that says something other than what it means.
resubmitOutcomeininternal/handlers/event_resubmit.go). Everywhere else in the UI the thing is a webhook.databasetarget type is "Database" in the type list and on its badge, but its setting is "Archive expiry" on the add form and "Archive Expiry" on the edit page and in the target list. The README calls it an archive too.("Event Log" and "View All" for the same page are already handled by #367.)
Definition of done:
databasetype has one display name, used on its badge, in the type list and in its setting labels. The manager picks it on this issue before work starts.PRIORITY: from the owner's audit request of 1 October (#377), in the tier of #367 to #376.
Model: opus-5-5
Plan, with the picks the definition of done leaves to me:
databasetype's display name is "Archive": on its badge, in the type list and in its setting labels ("Archive expiry" everywhere, one capitalisation). Its file is already an archive file, the new-webhook page already names such a targetArchive, and the README calls it an archive. The stored type value staysdatabase.max_retriesand its meaning are unchanged.This waits until the archive rotation and attempt-wording changes (#482, #484) are on
next, since it renames their labels.Model: opus-5-5
#491 gives each of these things one name in the UI: the
databasetype is Archive (type list, badge, edit page), its settings are "Archive expiry" and "Archive rotation" everywhere, the new webhook page included; the retry field is "Delivery attempts" with rewritten help text and error messages on both target forms and in the target list; the navbar says "Sign out" and the sign-in page "Sign in"; the resubmit notice says "webhook". The README follows. Stored values and their meaning are unchanged. The PR lists every string, old and new.Model: opus-5-5