# Project behaviour catalog This catalog summarizes behaviour established during prior KST4Contest work. It is context for analysis, not permission to overwrite newer code. Always inspect the current implementation before modifying a listed area. ## Core purpose KST4Contest is an ON4KST-oriented desktop client optimized for VHF/UHF/microwave contest workflows. Core areas developed over time include: - simultaneous ON4KST chat handling; - priority candidates; - sked workflow and timeline; - worked-state synchronization; - logging integrations; - DXCluster; - AirScout / airplane-scatter assistance; - rotor/control integrations; - map/path visualization; - automated replies/beacons; - user filtering and reachability; - documentation and website/update-feed integration. ## Two chat categories The application is designed around two simultaneous relevant chat categories in normal operation. Important consequences: - same-looking calls in different categories are not automatically the same chat identity; - category is part of message/member identity; - category-specific QRG/band settings must not leak into the other category; - unsupported categories must not crash shared logic. ## Priority candidates Priority scoring has included factors such as: - QTF match; - recent activity; - message count; - positive signal indications; - sked rate. Do not change weighting/meaning as collateral work. Treat it as user-facing contest logic. ## Timeline / skeds The sked timeline has used 30-minute lanes and visualized airplane-scatter probability windows. Known historical AP strength levels: - 100%; - 75%; - 50%. Sked reminder presets have covered short contest-relevant lead times. Do not hardcode historical display constants into new code without verifying the current view/model. ## Worked state Worked state is loaded from persistence and updated live from supported logging inputs. The simplified UI meaning has been "worked any" where the locator/worked indicator is concerned. Worked state is base-call-wide across suffix variants where established. When changing persistence or logging synchronization, verify: - startup DB load; - live update; - suffix/base-call mapping; - band mapping; - 50/70 MHz support where applicable; - UI projection. ## Known active bands / B+ Known-active-band information is derived consistently across the application from available hints. Historical work unified: - band mentions in user names; - band mentions in text; - manual/global band information; - `B+`-style availability. Explicit `NOT-QRV` overrides positive hints. Avoid introducing a second parser with different semantics. ## Selection and send workflow Established fast-workflow behaviour includes: - selecting a new station prefills `/cq callsign`; - send text is geared toward minimal contest interaction; - if no target chat category is selected, Main is the established fallback. These are intentional workflow decisions, not incidental UI details. ## DXCluster DXCluster support has included: - integrated display; - copyable lines; - `/cq` workflow support; - beacon monitoring; - QTF/bearing-related presentation. Preserve locator semantics and avoid sender/receiver field confusion. ## Map / path view Map work has included: - Leaflet 1.9.4 in JavaFX WebView; - terrain/path information; - airplane-scatter integration; - target-station selection; - path-analysis visibility; - station-count/status information; - target reset that does not reset zoom. A persistent right-side station-information panel has been reduced/removed in favour of more compact presentation in later UI work. Before changing layout, inspect the current version because this area has been actively iterated. ## Reachability and filters Filter work has separated reachability concerns from generic filters. A Reset Filter control must reset the actual filter predicates, not just visual controls. UI sorting/filtering must remain stable when backing data changes. ## Autoanswer and beacons Automated messaging exists to reduce repetitive contest chat work without creating spam or feedback loops. Important principles: - conservative timing; - bounded text; - no loop on own automated markers; - only consume cooldown after a valid queued reply; - category/callsign-safe identity; - QRG requests handled with the intended precedence. ## Connection handling Network reliability is contest-critical. Work has explicitly targeted: - accurate connected/disconnected state; - server disconnect detection; - reconnect behaviour on unstable links; - no infinite loop on initial connection failure; - visible connection-state indication in the UI. Do not regress connection state into "socket object exists therefore connected". ## Historic messages Historic/non-current chat senders may not have a complete live `ChatMember`. Highlighting, display and parsing must tolerate users not currently logged in. ## Website and documentation The application repository also contains: - bilingual manual content; - documentation images; - automated documentation PDF build; - Eleventy website; - download/update metadata generation; - release-oriented website automation. A user-visible feature change may therefore affect more than Java source.