docs+manifest: hub v0.49.0 — Edit tab merge train (CHANGELOG, REUSE rows, CONTEXT, GitOps bump)
Version note: the task spec targeted 0.48.0 but that tag had already shipped (app_start_failed); published tags are never re-pointed → this train is 0.49.0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TZc5w5jDhFLv6qDC32KN5v
This commit is contained in:
@@ -1,5 +1,45 @@
|
||||
# Felhom Hub — Changelog
|
||||
|
||||
## v0.49.0 — Edit tab merge (edit-a), scoped auto-refresh, style.css cache-bust (2026-07-12)
|
||||
|
||||
> The task spec targeted "v0.48.0", but v0.48.0 (app_start_failed, below) had already shipped +
|
||||
> deployed by the time this train ran — a published tag is never re-pointed, so this is v0.49.0.
|
||||
> Baseline `3e949bc`; commits `e740147` → `2e03de1` → `1d94b1a` → docs/manifest.
|
||||
|
||||
- **Edit tab merge (edit-a)** (`templates/customer_unified.html`, `templates/config_form.html`,
|
||||
new `templates/config_form_body.html`, `web/configs.go`, `web/pbsdr.go`): the standalone
|
||||
customer edit page merged into the customer page's Settings tab, renamed **Edit**. The form
|
||||
body is a shared `{{define "config_form_body"}}` sub-template (the `host_detail_body`
|
||||
pattern) built by the one `configFormData` view-model builder; the standalone chrome keeps
|
||||
rendering it for the create flow (`/configs/new`) and the validation-error re-render. The
|
||||
Edit tab renders: config form, Controller Update card, Geo card, and a **Danger zone** card
|
||||
holding the Block/Unblock/Delete forms relocated verbatim from the Customer Info header
|
||||
(endpoints + `confirm()` unchanged) — all SIBLINGS after `</form>` (nested forms are invalid
|
||||
HTML and would break the offsite/PBS `formaction` sub-buttons). The header keeps only the
|
||||
config-less Create Config action. `GET /configs/{id}/edit` → 302 `/customers/{id}#tab=edit`;
|
||||
tabs JS gains the `settings`→`edit` legacy-hash alias.
|
||||
- **Server-side required fields on update** (`web/configs.go` `handleConfigUpdate`): the twin
|
||||
of the form's `required` attributes (Display Name + Domain), checked BEFORE provisioning; the
|
||||
error path re-renders the standalone page with the SUBMITTED overrides so typed values are
|
||||
never lost (red-proofed: nil overrides → values reset → test fails).
|
||||
- **Redirect anchors**: update/block/unblock/offsite-reissue/offsite-freeze/pbsdr-reissue →
|
||||
`?flash=…#tab=edit`; regen-password → `#tab=setup` (its card lives there); delete unchanged
|
||||
(`/configs?flash=deleted`).
|
||||
- **Scoped auto-refresh** (`templates/customer_unified.html`): the 60s reload fires only while
|
||||
a live tab (`data-live-tabs="overview,applications,events,host"` on the nav) is active AND no
|
||||
form is dirty (delegated document-level input/change listener, never reset — a reload clears
|
||||
it). Skipped ticks reschedule; a muted `(paused)` hint shows next to the toggle on non-live
|
||||
tabs / dirty forms. Toggle, `hub_auto_refresh` localStorage key, cadence, default-on: unchanged.
|
||||
- **style.css cache-bust** (all `templates/*.html`): every stylesheet link is now
|
||||
`/style.css?v={{hubVersion}}` — closes the v0.47.0 gotcha (`max-age=3600` served stale
|
||||
styling for up to an hour after each deploy). Red-proofed (bare link fails the render test).
|
||||
- **Repo staging rule** (`CLAUDE.md`): never `git add -A` in this repo (the v0.47.0 `146d165`
|
||||
sweep incident) — explicit paths, pull-rebase, one writing session per clone.
|
||||
- Tests: +11 (Group A panel surface / sibling-form / header-count, Group B redirect + create +
|
||||
typed-values-preservation table, Group C refresh structural pins, Group D cache-bust sweep).
|
||||
Amended pins: `customer_tabs_test.go` (settings→edit), `pbsdr_test.go` (postUpdate supplies
|
||||
the now-required fields; FormRendersState asserts the embedded Edit-tab render).
|
||||
|
||||
## v0.48.0 — accept the app_start_failed event (controller fix-3, CAMPAIGN-3) (2026-07-12)
|
||||
|
||||
- `app_start_failed` added to `allowedEventTypes` (`internal/api/handler.go`) + `customerMessages`
|
||||
|
||||
Reference in New Issue
Block a user