# F104Mapper Changelog ## v1.2.2 (2026-05-04) - **Improved:** Application icon now displays in the window title bar and taskbar while the program is running (SVG loaded via iconphoto; ICO used as fallback) ## v1.2.1 (2026-05-03) - **New:** Installation_Guide.txt — separate document covering system requirements, step-by-step setup, desktop launcher details, and setup troubleshooting - **Updated:** User Manual Section 2 condensed to a quick-start summary with reference to Installation_Guide.txt; Section 3 and Section 11 cross-reference Installation_Guide.txt for setup issues - **Improved:** run.sh now displays a GUI error dialog (zenity / xmessage fallback) when setup has not been run, with instructions and a reference to Installation_Guide.txt - **Improved:** setup.py detects and removes stale virtual environments when the Python version has changed, preventing silent failures after a Python upgrade - **Improved:** setup.py generates 104_icon.png during the desktop launcher step for reliable icon display on LXDE / Raspberry Pi OS (SVG used as fallback) - **New:** Packaging_Instructions.txt — release ZIP checklist and procedure ## v1.2.0 (2026-04-28) - **Feature:** Desktop launcher created by setup.py — double-click the F104Mapper icon (Linux / macOS / Raspberry Pi) or shortcut (Windows) to start the program without opening a terminal ## v1.1.1 (2026-03-24) - **Fix:** Date filter now has a "Date Source" option: filter by Record Date/Time Stamp (when received) or Date/Time Code (from the form) — accommodates operators who resend forms without updating the datecode - **Fix:** Loaded Reports list now sorts by received date so recently received records appear at the top regardless of form datecode - **Fix:** Datecodes decoded without a year context (file-loaded records) no longer produce future dates — a December datecode loaded in March now correctly resolves to the prior December - **Fix:** Database query now orders by received time descending so that when duplicate records share the same UID, the most recently received record is kept - **Fix:** Grid-square duplicate resolution now keeps the record with the latest received date rather than the latest form datecode ## v1.1.0 (2026-03-23) - Alert (CSA char 3) and Sitrep (CSA char 2) indicators displayed in Report Detail with JS8Spotter Expect request instructions (E? F!304 / E? F!305) - Auto-update check on startup with configurable URL (silently skipped offline) ## v1.0.0 (2026-03-22) - Initial release - Parses F!104 Situation Report forms from JS8Spotter SQLite database, JS8Spotter CSV/text export, or plain text file - Color-coded map pins: Green (1 – Normal), Yellow (2 – Degraded), Red (3 – Significant Problems) - Formatted detail view when clicking a map pin, showing all parsed fields plus the original raw line - Correctly handles FM[] field misuse (narrative text placed in FM[]) — stores verbatim and displays as "Form Ref" - Comment field (free text outside brackets) extracted and displayed - Sitrep and Alert indicators (E flag) shown with JS8Spotter "Expect" request instructions: E? F!304 and E? F!305 - Date filter: No Filter, Previous N-Days (rolling), or Specified Dates - Previous N-Days mode tracks system date automatically - Duplicate handling: same callsign on same date → latest kept; same grid square → latest kept - Off-map grid squares flagged in the list - Mark/restore invalid records (Delete key) - Database auto-reload on startup; 60-second live poll for new records - Map zoom/pan preserved across all refreshes - Pop-out map in a separate resizable window - Export map as PNG, JPG, or SVG - DB Diagnostic tool (Help menu) - Auto-update check on startup (configurable URL, silently skipped offline) - Window size and position remembered across sessions - Fully offline at runtime — requires only one-time setup.py run for map data