audit 4: cards ordered by number, a notification owed to each recipient
test / test (push) Canceled after 0s

The cards layout (owner, 2026-10-13; the mockup first, b90a2f0): box_open
writes data-order for a box with InCards and a number, and panel.css orders
by it up to twelve - Health's eight and the kit's three.
TestCardsBoxesCarryTheirNumberAsTheirOrder reads the rendered pages.

Notifications (owner, 2026-10-14): migration 0011, notify_addressees. open
sends a subject's first message to every recipient and records who was
handed it; followUp, on every check while the subject is open and still
wrong, hands it to the owed and untold who are still recipients; closed
sends the end to the told (all recipients for a subject from before the
table). Tests: a failed copy goes out at the next check, once; the hourly
ceiling holds one back; a user added mid-subject hears nothing of it.

Also in the roadmap, from the owner today: dns-record-collapse,
notification-mail-recheck, settings-save-row (agreed, design first).

Tested on the test server: go vet + go test of 25 packages, make e2e (all
pass, 644 s) on this tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mix
2026-10-15 11:49:50 +03:00
co-authored by Claude Opus 5.5
parent b90a2f0321
commit eee089ad4b
17 changed files with 538 additions and 74 deletions
+21
View File
@@ -12,6 +12,7 @@ package view
import (
"fmt"
"html/template"
"strconv"
"strings"
)
@@ -301,6 +302,26 @@ type Box struct {
OOB bool
// DomainPick: see Box.
DomainPick bool
// InCards is a box of the cards layout, which orders its boxes on a
// phone by their numbers (Order).
InCards bool
}
// Order is a cards box's number as the layout orders it on a phone
// (data-order, panel.css: the boxes come in the order of their numbers
// whichever stack they stand in): "3" for "03", empty for a box with no
// number or outside the layout. Before, the stylesheet ordered by a box's place in its stack and
// knew four to a stack; a fifth landed out of place with nothing failing
// (owner, 2026-10-13).
func (b Box) Order() string {
if !b.InCards {
return ""
}
n, err := strconv.Atoi(b.No)
if err != nil || n < 1 {
return ""
}
return strconv.Itoa(n)
}
// HelpLink is a Box's link to its Help topic.