Signal Stage development log
Signal Stage: receiving, replies and character progress
Signal Stage pairs an incoming Morse message with an outgoing reply. Its eleven lessons introduce all 26 letters and 10 digits, beginning with E, T and M. The first incoming message is MEET; the player answers with MEET ME. The current game also includes six fixed open-practice messages and individual character practice.
From rhythm-game framing to an untimed course
The original rhythm-game framing changed during development into a self-paced learning route. Guided and Recall require correct characters while helping with spacing. Continuous decodes the player's actual marks and silences, so the spaces between characters and words affect the reply it receives. There is no music chart, soundtrack or countdown in the main learning route.
The course introduces a few characters at a time, offers echo and hidden-pattern exercises, then asks for an incoming translation and an outgoing message. The drills can be skipped. Completing the outgoing lesson opens the next link; Explore all lessons permits a look ahead without granting completion.
Scheduling tones on the audio clock
The early audit found that a browser stall distorted demonstration tones scheduled through main-thread timers. Its probe introduced a bounded 450-millisecond stall and recorded the oscillator behavior. A timing example becomes a poor reference when a busy browser stretches or bunches its marks.
The current demo() implementation schedules oscillator and gain events on the Web Audio clock. demoTimeline() builds the mark lengths and gaps from the shared Morse table. Nominal timing uses one unit for a dot and three for a dash, with pauses of one unit within a character, three between characters and seven between words. The word gap is the whole pause, not an extra seven units added to a letter gap.
This repair addresses demonstration scheduling. Physical speaker and headphone behavior, Bluetooth delay and device latency remain uncalibrated.
Receiving before replying
The receiving addition puts a fixed incoming message before each lesson or open-practice reply. Written dots and dashes are grouped by character, with a slash marking each word boundary. The player types a translation; wrong answers remain on the receiving screen. Comparison accepts letter-case differences and repeated whitespace, while still requiring spaces between words.
A reference beside the exercise contains all 36 letters and numbers with individual listening buttons. Players can hide the written message and listen instead. Reloading a saved receiving exercise returns to that stage with an empty answer field. There is no separate receive-only campaign or custom-message editor.
Recording reading and sending separately
The later progress addition gives every character a reading streak and a sending streak. Five consecutive correct instances fill the corresponding bar. An attributable error resets that character's streak in that direction and adds to its separate error total. A wrong answer with missing or shifted characters is not arbitrarily assigned to the wrong letters.
These records include hints, repeated messages and targeted drills. The character drill identifies its target before asking the player to read and send it. Full bars therefore describe completed practice; they are not an independent test of Morse mastery.
Profiles keep separate records in browser-local storage. Older sending totals are retained, but an earlier consecutive streak cannot be reconstructed, so that streak begins at zero. Reading records begin with the new feature. Saves do not move between devices or browser origins, and clearing site data can remove them.
What the available checks establish
The 31 October source review ran five focused receiving and progress scripts in isolated Windows Microsoft Edge contexts with networking disabled. They exercised incorrect and correct receiving answers, required word spaces, the transition through echo and recall into receiving, an exact outgoing reply, character streaks and errors, reload persistence, profile isolation and legacy-data migration. The Continuous progress check sent one character. Desktop and narrow-layout checks produced screenshots and no uncaught page errors.
Those checks preceded the Truckfish branding work. They do not certify every lesson, a full Continuous message, physical listening quality, screen-reader behavior or human learning outcomes.
Signal Stage is a single-player browser game using local Morse tones. It transmits no real radio signal and provides no operator certification or emergency qualification. No punctuation or prosign course, multiplayer, music, narration or cloud-save service is included.
The complete browser game is free to play without an account or payment. The free illustrated booklet covers the controls, lessons and practice records. Hosted cold offline startup is not established; no downloadable archive or native edition is offered.
Game page: Signal Stage game page