Skip to content

Prosign support: key <SK> run-together, author story sign-off correctly - #90

Merged
dydx404 merged 1 commit into
mainfrom
feat/prosign-support
Jul 5, 2026
Merged

dydx404 merged 1 commit into
mainfrom
feat/prosign-support

Conversation

@dydx404

@dydx404 dydx404 commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Why

A real CW operator hears the difference between the prosign <SK> (end of contact — didididahdidah, keyed as one symbol) and the two separate letters S K. The engine had no prosign concept, so any prosign would have keyed as separate letters. This adds proper prosign support and authors the story sign-off correctly.

Honest note: the story's SK was only in send lines, which aren't sounded today — so this wasn't an audible bug yet. But it makes the engine correct so future copy chapters can use <AR>, <KN>, <BT> etc. and they'll sound authentic automatically.

What

  • core/morse: PROSIGN_TABLE (SK, AR, AS, BT, KA, KN) + symbolsForProsign() / PROSIGN_NAMES. renderToElements recognizes <NAME> tokens and keys them run-together (intra-character gaps only; normal inter-character/word gaps around them). Unknown/malformed tokens are skipped like any unsupported char.
  • content validation: isSupportedStoryText accepts known prosign tokens, rejects unknown/malformed ones.
  • story: prosigns are authored as <SK> but typed as plain letters ("SK") and displayed bracket-free — normalizeStoryInput strips brackets, new displayStoryText for the UI, expectedLength uses the typed length. First Contact + Harbor Relay now sign off with 73 <SK>.

Tests

Prosign timing (run-together, no 3-unit gap; neighbour gaps intact; unknown/malformed skipped), validation (accept/reject), and send-line scoring by typed letters. All gates green: typecheck · 208 tests · lint · build.

Product law preserved: copy text stays hidden while decoding; nothing teaches dots/dashes.

Add run-together prosign rendering to core/morse (SK, AR, BT, KN, AS, KA)
via <NAME> tokens, so end-of-contact and friends key as one symbol instead
of separate letters. Story close lines now author '73 <SK>'; prosigns are
typed as their plain letters and displayed bracket-free.
@dydx404
dydx404 merged commit 414696d into main Jul 5, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant