Archive expiry is a raw duration typed by hand (720h) #396

Closed
opened 2026-10-01 22:06:25 +02:00 by clawbot · 2 comments
Collaborator

Owner's request, #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: a database target's archive expiry is typed by hand as "never" or a raw duration such as 720h. That is true of both the add form (templates/source_detail.html) and the edit form (templates/target_edit.html). The target list shows the value back raw, as "Archive Expiry: 720h". Typing "30 days" is rejected with a parser error. Right beside it, the webhook's own retention is entered in days and shown as "7 days".

#373 already gives the new-webhook page a list of choices for archive pruning: never, 1h, 12h, 24h, 30d, 90d and 365d.

Definition of done:

  • Adding or editing a database target offers the same list of choices as 373 instead of a text field. The edit form starts on the target's stored value.
  • The list of choices is defined once and shared with 373.
  • The target list shows the expiry in plain units, for example "30 days", "12 hours" or "never".
  • Tests: each choice saves and is shown in plain units, and the edit form starts on the stored value.

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: a `database` target's archive expiry is typed by hand as "never" or a raw duration such as `720h`. That is true of both the add form (`templates/source_detail.html`) and the edit form (`templates/target_edit.html`). The target list shows the value back raw, as "Archive Expiry: 720h". Typing "30 days" is rejected with a parser error. Right beside it, the webhook's own retention is entered in days and shown as "7 days". https://git.eeqj.de/sneak/webhooker/issues/373 already gives the new-webhook page a list of choices for archive pruning: never, 1h, 12h, 24h, 30d, 90d and 365d. Definition of done: - Adding or editing a `database` target offers the same list of choices as 373 instead of a text field. The edit form starts on the target's stored value. - The list of choices is defined once and shared with 373. - The target list shows the expiry in plain units, for example "30 days", "12 hours" or "never". - Tests: each choice saves and is shown in plain units, and the edit form starts on the stored value. 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
Author
Collaborator

Plan.

  • One list of archive pruning choices (never, 1h, 12h, 24h, 30d, 90d, 365d, with the stored values #476 uses), defined once and used by the new-webhook page, the add target form and the target edit form.
  • Adding or editing a database target offers that list instead of a text field. The edit form starts on the stored value, or on the submitted one after a refused save (#381). A stored value that is not one of the choices (set before this change) is shown as its own selected entry, so an edit does not silently change it; pre-1.0, nothing converts stored values.
  • The target list shows the expiry in plain units: "never", "12 hours", "30 days".
  • Tests: each choice saves and is shown in plain units; the edit form starts on the stored value.

Model: opus-5-5

Plan. - One list of archive pruning choices (never, 1h, 12h, 24h, 30d, 90d, 365d, with the stored values https://git.eeqj.de/sneak/webhooker/pulls/476 uses), defined once and used by the new-webhook page, the add target form and the target edit form. - Adding or editing a `database` target offers that list instead of a text field. The edit form starts on the stored value, or on the submitted one after a refused save (https://git.eeqj.de/sneak/webhooker/issues/381). A stored value that is not one of the choices (set before this change) is shown as its own selected entry, so an edit does not silently change it; pre-1.0, nothing converts stored values. - The target list shows the expiry in plain units: "never", "12 hours", "30 days". - Tests: each choice saves and is shown in plain units; the edit form starts on the stored value. Model: opus-5-5
Author
Collaborator

Done in #479. Adding or editing a database target now offers the new webhook page's archive expiry choices instead of a text field. The list is defined once and all three forms use it. The edit form starts on the stored expiry, and the target list shows it in plain units ("30 days", "12 hours", "never").

  • Judgement call: a stored expiry that is not one of the choices is listed first in the edit form under its stored value, such as 36h, so saving unchanged keeps it.
  • Unverified: #474 had not landed, so the edit form starting on the submitted value after a refused save waits on it.

Model: opus-5-5

Done in https://git.eeqj.de/sneak/webhooker/pulls/479. Adding or editing a `database` target now offers the new webhook page's archive expiry choices instead of a text field. The list is defined once and all three forms use it. The edit form starts on the stored expiry, and the target list shows it in plain units ("30 days", "12 hours", "never"). - Judgement call: a stored expiry that is not one of the choices is listed first in the edit form under its stored value, such as `36h`, so saving unchanged keeps it. - Unverified: https://git.eeqj.de/sneak/webhooker/pulls/474 had not landed, so the edit form starting on the submitted value after a refused save waits on it. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/webhooker#396