Follow-up to #6 / #19 (which added the standard finger status labels).
render/fields.go highlights label prefixes via a deliberate allowlist. Some of those entries aren't Label: value fields, though — they're standalone status sentences a finger daemon prints on their own line:
No mail.
No Plan.
Never logged in.
The matcher uses strings.HasPrefix, so a free-form .plan/.project line that merely starts with one of these has the words colored as if they were a field label — e.g.
No mail. Back from leave on Monday.
highlights "No mail.". That's the allowlist asserting structure that isn't there, which cuts against the repo's "UI copy is honest" rule.
Task
Treat these colon-less, sentence-style markers as whole-line matches: highlight them only when the trimmed line equals the marker exactly, not when it's a prefix. Genuine status lines (which are the whole line) still highlight; prose that happens to start with the same words no longer does. The Label:-style and trailing-value markers (Login:, Last login, Mail last read, …) keep their prefix behavior — only the standalone sentences change.
Acceptance criteria
Supersedes this issue's original boundary-test framing: the negative test lands here as part of the fix, rather than documenting the current prefix behavior.
Follow-up to #6 / #19 (which added the standard finger status labels).
render/fields.gohighlights label prefixes via a deliberate allowlist. Some of those entries aren'tLabel: valuefields, though — they're standalone status sentences a finger daemon prints on their own line:No mail.No Plan.Never logged in.The matcher uses
strings.HasPrefix, so a free-form.plan/.projectline that merely starts with one of these has the words colored as if they were a field label — e.g.highlights "No mail.". That's the allowlist asserting structure that isn't there, which cuts against the repo's "UI copy is honest" rule.
Task
Treat these colon-less, sentence-style markers as whole-line matches: highlight them only when the trimmed line equals the marker exactly, not when it's a prefix. Genuine status lines (which are the whole line) still highlight; prose that happens to start with the same words no longer does. The
Label:-style and trailing-value markers (Login:,Last login,Mail last read, …) keep their prefix behavior — only the standalone sentences change.Acceptance criteria
No mail.line highlights, and a prose line that starts with the marker (No mail. (on leave)) does not.make checkgreen.Supersedes this issue's original boundary-test framing: the negative test lands here as part of the fix, rather than documenting the current prefix behavior.