Accepted by the owner on 2026-10-12 from screenshots, one change at a time. - health: a card "Sender check" (today / 30 days / 12 months: panel not answering, messages deferred) and a row for its socket. - health: the boxes are numbered by importance and laid out as `cards` - two stacks, odd numbers on the left and even on the right, each closed up. His words on the row layout: too many holes; and on stacked columns numbered down each side: the third box was below the fold while the fourth was not. On a phone the boxes come in the order of their numbers. - theme.css, components: the `cards` layout; the first pair of stacks of the components page is laid out so. - out-log: a row refused for its From: line, tagged "wrong From". - help: topic "Sender check"; "rejected" in the Outbound log topic names the three reasons. outlines.json rewritten (check.py --write): the structure of health changed, and help has one more topic under Outbound. check.py: 0 violations. The pages of internal/web follow in their own commit; until then the outline guard fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
455 lines
6.0 KiB
JSON
455 lines
6.0 KiB
JSON
{
|
||
"account": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Profile]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Password]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"backup": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Full backup]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Import a domain]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"dmarc-domain": [
|
||
"head+postmark+actions",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-5": [
|
||
"box[Sources · 7 days]:table"
|
||
]
|
||
},
|
||
{
|
||
"is-7": [
|
||
"box[Reports]:table"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"dmarc-report": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Report]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Published policy]:body"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"box[Records]:table"
|
||
],
|
||
"dmarc": [
|
||
"head",
|
||
"box[Ingest]:body",
|
||
"box[Recent reports]:table"
|
||
],
|
||
"health": [
|
||
"head+actions",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Processes]:table",
|
||
"box[Sender check]:table+body",
|
||
"box[Hostname and reverse DNS]:body",
|
||
"box[Machine]:table"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Milter sockets]:table",
|
||
"box[TLS certificate]:body",
|
||
"box[Notification mail]:table+body",
|
||
"box[Configuration]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"help": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-3": [
|
||
"side_menu"
|
||
]
|
||
},
|
||
{
|
||
"is-9": [
|
||
"box[Overview]:help×3",
|
||
"box[Outbound]:help×7",
|
||
"box[Inbound]:help×6",
|
||
"box[Server]:help×4",
|
||
"box[Account]:help"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"in-domain-delete": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-7": [
|
||
"box.sp-danger-zone[This cannot be undone]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"in-domain": [
|
||
"head+postmark+actions",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-3": [
|
||
"side_menu"
|
||
]
|
||
},
|
||
{
|
||
"is-9": [
|
||
"box[MX record]:record",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Upstream]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Valid recipients]:body"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"box[Spam filter]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"in-domains": [
|
||
"head",
|
||
"box[Add a domain]:body",
|
||
"box[Domains]:table"
|
||
],
|
||
"in-filter-lists": [
|
||
"head",
|
||
"box[Add an entry]:body",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Deny]:table"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Allow]:table"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"box[Where the lists go]:body"
|
||
],
|
||
"in-log": [
|
||
"head",
|
||
"box[Messages]:table"
|
||
],
|
||
"in-quarantine-message": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-7": [
|
||
"box[Message]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-5": [
|
||
"box[Why it was held]:table"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"box[Headers]:log",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Release]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box.sp-danger-zone[Discard]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"in-quarantine": [
|
||
"head",
|
||
"box[Held messages]:table"
|
||
],
|
||
"in-queue": [
|
||
"head",
|
||
"box[Waiting]:empty",
|
||
"box[How retries work]:body"
|
||
],
|
||
"out-app-created": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-7": [
|
||
"box.sp-credential[Shown once]:record"
|
||
]
|
||
},
|
||
{
|
||
"is-5": [
|
||
"box[Connect with]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"out-app": [
|
||
"head+actions",
|
||
{
|
||
"form": [
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-4": [
|
||
"box[Sender]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-4": [
|
||
"box[Client IP allow-list]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-4": [
|
||
"box[Rate limit]:body"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"submit_row"
|
||
]
|
||
}
|
||
],
|
||
"out-domain-delete": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-7": [
|
||
"box.sp-danger-zone[This cannot be undone]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-5": [
|
||
"box[Moving it instead?]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"out-domain-settings": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[DMARC report address]:body",
|
||
"box[Export domain]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Rate limit]:body",
|
||
"box.sp-danger-zone[Delete domain]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"out-domain": [
|
||
"head+postmark+actions",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-3": [
|
||
"side_menu"
|
||
]
|
||
},
|
||
{
|
||
"is-9": [
|
||
"box[DNS records]:record×3",
|
||
"box[Applications]:table",
|
||
"box[Connection]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"out-domains": [
|
||
"head",
|
||
"box[Add a domain]:body",
|
||
"box[Domains]:table"
|
||
],
|
||
"out-log": [
|
||
"head",
|
||
"box[Messages]:table"
|
||
],
|
||
"out-message": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-7": [
|
||
"box[Message]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-5": [
|
||
"box[History]:body"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"box[Delivery log]:log"
|
||
],
|
||
"out-queue": [
|
||
"head",
|
||
"box[Waiting]:table",
|
||
"box[How retries work]:body"
|
||
],
|
||
"overview": [
|
||
"head+postmark",
|
||
"box[Server health]:health",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-7": [
|
||
"box[Outbound domains]:table"
|
||
]
|
||
},
|
||
{
|
||
"is-5": [
|
||
"box[Inbound domains]:table"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"preflight": [
|
||
"head+postmark+actions",
|
||
"box[Checks]:table",
|
||
"box[Send a test e-mail]:body"
|
||
],
|
||
"settings": [
|
||
"head",
|
||
{
|
||
"form": [
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Log retention]:body",
|
||
"box[Sending rate limits]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Notifications]:body",
|
||
"box[Notification mail]:record×2"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"submit_row"
|
||
]
|
||
}
|
||
],
|
||
"system-log": [
|
||
"head",
|
||
"box[Recent lines]:log"
|
||
],
|
||
"user-delete": [
|
||
"head",
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-7": [
|
||
"box.sp-danger-zone[This cannot be undone]:body"
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"user": [
|
||
"head+actions",
|
||
{
|
||
"form": [
|
||
{
|
||
"columns": [
|
||
{
|
||
"is-6": [
|
||
"box[Account]:body"
|
||
]
|
||
},
|
||
{
|
||
"is-6": [
|
||
"box[Outbound domains]:body",
|
||
"box[Inbound domains]:body"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"submit_row"
|
||
]
|
||
}
|
||
],
|
||
"users": [
|
||
"head+actions",
|
||
"box[Panel users]:table"
|
||
]
|
||
}
|