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 missing: an entrypoint's description is set when it is added and can never be changed. The only actions on an entrypoint are activate, deactivate and delete (routes in internal/server/routes.go, controls in templates/source_detail.html). The entrypoint every new webhook gets is called "Default entrypoint" for good. Deleting it and adding a new one to rename it changes its URL, which every sender would then need to be given again.
Definition of done:
Each entrypoint has an Edit action that changes its description and keeps its URL.
The edit goes through the same ownership checks as the other entrypoint actions. An empty description is allowed, and is shown as "Entrypoint" as today.
Tests: the description changes, the URL does not, and an entrypoint of another user's webhook cannot be edited.
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 missing: an entrypoint's description is set when it is added and can never be changed. The only actions on an entrypoint are activate, deactivate and delete (routes in `internal/server/routes.go`, controls in `templates/source_detail.html`). The entrypoint every new webhook gets is called "Default entrypoint" for good. Deleting it and adding a new one to rename it changes its URL, which every sender would then need to be given again.
Definition of done:
- Each entrypoint has an Edit action that changes its description and keeps its URL.
- The edit goes through the same ownership checks as the other entrypoint actions. An empty description is allowed, and is shown as "Entrypoint" as today.
- Tests: the description changes, the URL does not, and an entrypoint of another user's webhook cannot be edited.
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:21 +02:00
An Edit action on each entrypoint in the webhook page's entrypoint list, in the shared secondary style from #375. It opens the description in place (an inline form, Alpine state in static/js/app.js as the CSP build requires) with Save and Cancel; no separate page.
A POST route /hook/ID/entrypoints/ENTRYPOINTID/edit in the webhook route group, behind the same login, CSRF and ownership checks as activate, deactivate and delete. It updates only the description column, so the URL (its UUID) never changes and a concurrent toggle is not undone. An empty description is stored empty and shown as "Entrypoint".
The one-line notice from #383 says the description was changed.
Tests: the description changes and the URL does not; an empty one shows "Entrypoint"; another user's entrypoint cannot be edited (404); the route refuses a request without a valid CSRF token.
Plan.
- An Edit action on each entrypoint in the webhook page's entrypoint list, in the shared secondary style from https://git.eeqj.de/sneak/webhooker/issues/375. It opens the description in place (an inline form, Alpine state in `static/js/app.js` as the CSP build requires) with Save and Cancel; no separate page.
- A POST route `/hook/ID/entrypoints/ENTRYPOINTID/edit` in the webhook route group, behind the same login, CSRF and ownership checks as activate, deactivate and delete. It updates only the description column, so the URL (its UUID) never changes and a concurrent toggle is not undone. An empty description is stored empty and shown as "Entrypoint".
- The one-line notice from https://git.eeqj.de/sneak/webhooker/issues/383 says the description was changed.
- Tests: the description changes and the URL does not; an empty one shows "Entrypoint"; another user's entrypoint cannot be edited (404); the route refuses a request without a valid CSRF token.
- Runs before https://git.eeqj.de/sneak/webhooker/issues/393, which changes the same list.
Model: opus-5-5
Built in #464. Each entrypoint on the webhook page has an Edit button that changes its description in place and keeps its URL. The save goes through the same login, CSRF and ownership checks as activate, deactivate and delete; an empty description shows as "Entrypoint", and the page then says "Entrypoint description saved.".
Judgement call: activate and deactivate on an entrypoint now write only the active column, so they cannot write an older description back over an edit.
Model: opus-5-5
Built in https://git.eeqj.de/sneak/webhooker/pulls/464. Each entrypoint on the webhook page has an Edit button that changes its description in place and keeps its URL. The save goes through the same login, CSRF and ownership checks as activate, deactivate and delete; an empty description shows as "Entrypoint", and the page then says "Entrypoint description saved.".
- Judgement call: activate and deactivate on an entrypoint now write only the active column, so they cannot write an older description back over an edit.
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 missing: an entrypoint's description is set when it is added and can never be changed. The only actions on an entrypoint are activate, deactivate and delete (routes in
internal/server/routes.go, controls intemplates/source_detail.html). The entrypoint every new webhook gets is called "Default entrypoint" for good. Deleting it and adding a new one to rename it changes its URL, which every sender would then need to be given again.Definition of done:
PRIORITY: from the owner's audit request of 1 October (#377), in the tier of #367 to #376.
Model: opus-5-5
Plan.
static/js/app.jsas the CSP build requires) with Save and Cancel; no separate page./hook/ID/entrypoints/ENTRYPOINTID/editin the webhook route group, behind the same login, CSRF and ownership checks as activate, deactivate and delete. It updates only the description column, so the URL (its UUID) never changes and a concurrent toggle is not undone. An empty description is stored empty and shown as "Entrypoint".Model: opus-5-5
Built in #464. Each entrypoint on the webhook page has an Edit button that changes its description in place and keeps its URL. The save goes through the same login, CSRF and ownership checks as activate, deactivate and delete; an empty description shows as "Entrypoint", and the page then says "Entrypoint description saved.".
Model: opus-5-5