Commit graph

91 commits

Author SHA1 Message Date
0b0de87be0 Merge pull request 'feat: Enhanced database status monitoring and configuration management' (#34) from feature/sqlite-database-integration into main
Reviewed-on: #34
2025-08-31 19:45:26 +02:00
d80bb3a10f docs: Update DATABASE.md with comprehensive schema and usage documentation
- Document complete database schema including aircraft history and callsign cache
- Add external data source tables and relationships
- Include optimization and maintenance procedures
- Document indexes, performance considerations, and storage requirements
- Provide examples of database queries and operations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:44:15 +02:00
8019049c63 feat: Enhance web interface with database integration and callsign management
- Add callsign management module for enhanced aircraft information
- Integrate database status display in web interface
- Update aircraft manager with database-backed callsign resolution
- Enhance user interface with database connectivity indicators
- Add embedded asset management for new database interface components

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:43:58 +02:00
5733209251 test: Add comprehensive test suite for database functionality
- Add unit tests for database operations and optimization
- Test external data source loading and caching
- Add callsign manager functionality tests
- Create test helpers for database testing utilities
- Ensure database reliability and performance validation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:43:41 +02:00
0f16748224 feat: Enhance core database functionality and optimization
- Add comprehensive database optimization management
- Enhance external data source loading with progress tracking
- Add optimization statistics and efficiency calculations
- Update Go module dependencies for database operations
- Implement database size and performance monitoring

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:43:24 +02:00
7b16327bd2 docs: Update README with database management and configuration sections
- Add database management commands and optimization examples
- Reference new CONFIGURATION.md documentation
- Update systemd service references to use skyview-adsb
- Enhance skyview-data status command with optimization statistics

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:40:44 +02:00
55776939ae docs: Add comprehensive configuration documentation
- Create detailed CONFIGURATION.md covering all SkyView settings
- Document external aviation data sources (OpenFlights, OurAirports)
- Explain origin vs sources distinction for map center vs receivers
- Include privacy controls, database optimization, and validation
- Provide environment-specific configuration examples
- Cover database management commands and troubleshooting

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:40:29 +02:00
ce7710d1b4 feat: Add comprehensive database status web interface
- Create /database page showing database statistics, size, and location
- Display storage efficiency, page statistics, and optimization info
- Show external data sources with license information and load status
- Include auto-refresh functionality and navigation links
- Implement CSS overrides to fix scrolling issues

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:40:12 +02:00
96f90b1543 feat: Enhance database status API with comprehensive information
- Add database file size, path, and modification timestamp to /api/database/status
- Include storage efficiency metrics and page statistics
- Add optimization statistics using database manager
- Import "os" package for file system operations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:39:56 +02:00
d0dfd3ed46 fix: Correct callsign database column name from cache_expires to expires_at
- Fix SQL queries in ClearExpiredCache() and GetCacheStats() functions
- Resolves "no such column: cache_expires" database error
- Column name now matches schema definition in migrations.go

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:39:41 +02:00
d7e0a8ee68 fix: Update systemd services to use skyview-adsb user consistently
- Change User and Group from 'skyview' to 'skyview-adsb' in service files
- Update ReadWritePaths in database update service accordingly
- Add external data source configuration to example config

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 19:39:23 +02:00
37c4fa2b57 feat: Add SQLite database integration for aircraft history and callsign enhancement
- Implement comprehensive database package with versioned migrations
- Add skyview-data CLI tool for managing aviation reference data
- Integrate database with merger for real-time aircraft history persistence
- Support OurAirports and OpenFlights data sources (runtime loading)
- Add systemd timer for automated database updates
- Fix transaction-based bulk loading for 2400% performance improvement
- Add callsign enhancement system with airline/airport lookups
- Update Debian packaging with database directory and permissions

Database features:
- Aircraft position history with configurable retention
- External aviation data loading (airlines, airports)
- Callsign parsing and enhancement
- API client for external lookups (OpenSky, etc.)
- Privacy mode for complete offline operation

CLI commands:
- skyview-data status: Show database statistics
- skyview-data update: Load aviation reference data
- skyview-data list: Show available data sources
- skyview-data clear: Remove specific data sources

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 16:48:28 +02:00
cd51d3ecc0 Merge pull request 'Implement transponder code (squawk) lookup and textual descriptions (Issue #30)' (#33) from feature/transponder-lookup-issue-30 into main
Reviewed-on: #33
2025-08-31 12:08:13 +02:00
62ace55fe1 Implement transponder code (squawk) lookup and textual descriptions
Resolves #30

- Add comprehensive squawk code lookup database with emergency, standard, military, and special codes
- Implement squawk.Database with 20+ common transponder codes including:
  * Emergency codes: 7700 (General Emergency), 7600 (Radio Failure), 7500 (Hijacking)
  * Standard codes: 1200/7000 (VFR), operational codes by region
  * Special codes: 1277 (SAR), 1255 (Fire Fighting), military codes
- Add SquawkDescription field to Aircraft struct and JSON marshaling
- Integrate squawk database into merger for automatic description population
- Update frontend with color-coded squawk display and tooltips:
  * Red for emergency codes with warning symbols
  * Orange for special operations
  * Gray for military codes
  * Green for standard operational codes
- Add comprehensive test coverage for squawk lookup functionality

Features:
- Visual emergency code identification for safety
- Educational descriptions for aviation enthusiasts
- Configurable lookup system for regional variations
- Hover tooltips with full code explanations
- Graceful fallback for unknown codes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 12:02:02 +02:00
a63d8d5cd7 Bump version to 0.0.8 v0.0.8
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 11:43:57 +02:00
ec676f678a Merge pull request 'Fix issue #21 and add aircraft position tracking indicators' (#29) from feature/position-tracking-fixes into main
Reviewed-on: #29
2025-08-31 11:41:48 +02:00
4715e8ef4e Fix Beast decoder to set PositionValid flag when position is decoded
The Beast decoder was not setting PositionValid=true after successfully
decoding aircraft positions, causing position tracking statistics to
show 0 positioned aircraft even when aircraft had valid coordinates.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 11:40:52 +02:00
66a995b4d0 Fix issue #21 and add aircraft position tracking indicators
- Fix Debian package upgrade issue by separating upgrade vs remove behavior in prerm script
- Add aircraft position tracking statistics in merger GetStatistics() method
- Update frontend to display position tracking indicators in both header and stats view
- Format Go code to maintain consistency

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 11:25:42 +02:00
0db12a1ddc Update Debian package description to include VRS JSON support 2025-08-31 11:14:35 +02:00
276c51517f Bump version to 0.0.7 for VRS JSON support release v0.0.7 2025-08-31 11:13:14 +02:00
1476d50f97 Merge pull request 'Add VRS JSON format support for readsb integration' (#28) from feature/vrs-json-support into main
Reviewed-on: #28
2025-08-31 11:11:18 +02:00
15778ba6ec Clean up temporary VRS test files 2025-08-31 11:02:43 +02:00
073acb7304 Add VRS JSON format support for readsb integration
Added comprehensive support for VRS (Virtual Radar Server) JSON format
as a simpler alternative to Beast binary protocol, enabling integration
with readsb --net-vrs-port output.

## Key Features:
- **VRS JSON Parser**: Stream parsing of newline-delimited JSON aircraft data
- **VRS Client**: TCP client with automatic reconnection and error recovery
- **Mixed Format Support**: Use Beast and VRS sources simultaneously
- **Enhanced Aircraft Data**: Added VRS-specific fields (registration, type, operator)
- **Position Source Tracking**: Identifies ADS-B, MLAT, TIS-B, and satellite positions

## Implementation:
- `internal/vrs/parser.go`: VRS JSON message parsing and validation
- `internal/client/vrs.go`: VRS TCP client implementation
- Enhanced `MultiSourceClient` to support both Beast and VRS formats
- Extended `Aircraft` struct with validity flags and additional metadata
- Updated configuration to include `format` field ("beast" or "vrs")

## Testing:
- Successfully tested against svovel:33005 VRS JSON stream
- Verified aircraft data parsing and position tracking
- Confirmed mixed-format operation with existing Beast clients

## Documentation:
- Updated README.md with VRS format configuration examples
- Enhanced ARCHITECTURE.md with VRS parser documentation
- Added data format comparison and configuration guide

This enables simpler integration with modern readsb installations while
maintaining full backward compatibility with existing Beast deployments.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 11:02:27 +02:00
3d92ce4481 Bump version to 0.0.6 v0.0.6
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-25 10:59:33 +02:00
b5210faa96 Merge pull request 'Fix aircraft track orientation propagation to web frontend' (#26) from fix/issue-23-track-propagation into main
Reviewed-on: #26
2025-08-25 10:49:55 +02:00
1fe15c06a3 Fix aircraft track propagation issues in web frontend
This commit addresses issue #23 where aircraft track changes were not
propagating properly to the web frontend. The fixes include:

**Server-side improvements:**
- Enhanced WebSocket broadcast reliability with timeout-based queueing
- Increased broadcast channel buffer size (1000 -> 2000)
- Improved error handling and connection management
- Added write timeouts to prevent slow clients from blocking updates
- Enhanced connection cleanup and ping/pong handling
- Added debug endpoint /api/debug/websocket for troubleshooting
- Relaxed position validation thresholds for better track acceptance

**Frontend improvements:**
- Enhanced WebSocket manager with exponential backoff reconnection
- Improved aircraft position update detection and logging
- Fixed position update logic to always propagate changes to map
- Better coordinate validation and error reporting
- Enhanced debugging with detailed console logging
- Fixed track rotation update thresholds and logic
- Improved marker lifecycle management and cleanup
- Better handling of edge cases in aircraft state transitions

**Key bug fixes:**
- Removed overly aggressive position change detection that blocked updates
- Fixed track rotation sensitivity (5° -> 10° threshold)
- Enhanced coordinate validation to handle null/undefined values
- Improved WebSocket message ordering and processing
- Fixed marker position updates to always propagate to Leaflet

These changes ensure reliable real-time aircraft tracking with proper
position, heading, and altitude updates across multiple data sources.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-25 10:14:03 +02:00
8ffb657711 Remove generated changelog.gz from version control
The debian/usr/share/doc/skyview-adsb/changelog.gz file is automatically
generated during the Debian package build process and should not be
tracked in version control. It's created fresh from git history each
time the package is built.

- Removed changelog.gz from git tracking
- Added to .gitignore to prevent re-addition
- Ensures clean builds without git conflicts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-25 08:53:21 +02:00
f13f1da2a3 Bump version to 0.0.5 v0.0.5
New release includes:
- Renamed Debian package from skyview to skyview-adsb to avoid conflicts
  with NASA's SkyView Virtual Observatory package
- Implemented incremental changelog generation for Debian packages
  showing complete version history

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-25 08:43:57 +02:00
a5faddf900 Merge pull request 'Implement incremental changelog generation for Debian packages' (#25) from feature/incremental-changelog into main
Reviewed-on: #25
2025-08-25 08:38:30 +02:00
7c9f7dc8c9 Implement incremental changelog generation for Debian packages
Fixes #22: Improve Debian package changelog to show incremental version history

The Debian package changelog now includes the complete version history
instead of just changes since the previous release. This provides users
with full visibility into the software's evolution when reviewing
package updates.

Changes:
- Rewrote changelog generation to iterate through all git tags
- Generate entries for each tagged version in reverse chronological order
- Include current development version if commits exist after latest tag
- Fixed shellcheck warnings for better script quality
- Added -f flag to gzip to force overwrite existing changelog.gz files

Benefits:
- Complete version history visible in every package
- Standard Debian changelog format compliance
- Better integration with apt changelog and dpkg tools
- Improved transparency for users reviewing updates
- Proper audit trail for administrators

The changelog now shows all versions with their respective changes,
making it easier for users to understand what has changed between
their installed version and the available update.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-25 08:32:43 +02:00
be5369c195 Rename Debian package from skyview to skyview-adsb
The official Debian repositories already contain a package named
"skyview" which is associated with NASA's SkyView Virtual Observatory
(https://skyview.gsfc.nasa.gov/), a tool for astronomical data
visualization.

To avoid package naming conflicts and potential confusion for users,
this commit renames our ADS-B aircraft tracking application package
to "skyview-adsb". This clearly indicates the package's purpose
(ADS-B tracking) while maintaining the SkyView brand identity.

Changes:
- Package name: skyview → skyview-adsb
- System user/group: skyview → skyview-adsb
- Config directory: /etc/skyview → /etc/skyview-adsb
- Data directory: /var/lib/skyview → /var/lib/skyview-adsb
- Log directory: /var/log/skyview → /var/log/skyview-adsb
- Systemd service: skyview.service → skyview-adsb.service
- Documentation path: /usr/share/doc/skyview → /usr/share/doc/skyview-adsb

The binaries (/usr/bin/skyview and /usr/bin/beast-dump) remain
unchanged as they don't conflict at the filesystem level.

This ensures clean installation alongside any existing skyview
packages and prevents apt/dpkg conflicts during installation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-25 08:23:11 +02:00
61b735b226 Correct algorithm development description to reflect iterative process
Update study to accurately reflect that complex algorithms like CPR decoding
required multiple iterations, but the speed of these iterations far exceeded
manual development cycles - completing refinements in hours vs days/weeks.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 23:46:23 +02:00
97a30b4274 Add AI development acceleration study documenting 40-56x speedup
Comprehensive analysis comparing traditional development estimates (6-8 weeks)
against actual AI-assisted timeline (1 day). Documents complete elimination
of manual coding requirement and transformation from implementation-focused
to requirements-focused development paradigm.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 23:43:11 +02:00
65d602a6f8 Update architecture documentation to reflect in-memory ICAO database
Remove outdated SQLite references and update documentation to accurately
describe the current in-memory ICAO allocation database implementation
with binary search lookups.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 23:28:08 +02:00
a5e542844f Bump version to 0.0.4 v0.0.4
Release includes critical CPR position decoding fix that resolves
systematic eastward bias in aircraft positioning.

Changes:
- Updated Debian control file version
- Updated web UI version display

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 23:14:23 +02:00
60ba5ae825 Merge pull request 'Fix CPR zone ambiguity causing systematic eastward position bias' (#20) from fix/cpr-zone-ambiguity into main
Reviewed-on: #20
2025-08-24 23:10:48 +02:00
cb79e0b3b7 Fix CPR zone ambiguity causing systematic eastward position bias
This addresses Issue #18 by correcting the CPR global decoding algorithm
implementation that was causing aircraft to appear tens of kilometers
east of their actual positions.

Root Cause:
- CPR longitude zone calculation always used NL-1 regardless of frame type
- Specification requires: even frames use NL zones, odd frames use NL-1 zones
- This caused systematic eastward displacement for all aircraft positions

Changes:
- Implement frame-consistent zone calculations per RTCA DO-260B specification
- Even frame (i=0): ni = max(1, NL - 0) = max(1, NL)
- Odd frame (i=1): ni = max(1, NL - 1)
- Add comprehensive documentation with authoritative source references
- Ensure latitude and longitude use same frame choice for consistency

Testing:
- Aircraft south of Oslo now appears correctly (was near Skarlandsvatnet)
- Aircraft north of Oslo should now appear correctly (was east of Lillestrøm)
- Systematic eastward bias eliminated

References:
- RTCA DO-260B / EUROCAE ED-102A: ADS-B Performance Standards
- ICAO Annex 10, Volume IV: Surveillance Systems
- "Decoding ADS-B position" by Edward Lester
- PyModeS reference implementation

Fixes #18

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 23:07:56 +02:00
b0a5ab412b Add DEBIAN/conffiles to protect configuration files during upgrades
Added conffiles entry for /etc/skyview/config.json to ensure that user
customizations are preserved during package upgrades. This follows
Debian packaging best practices for configuration file handling.

The conffiles mechanism will:
- Prevent overwrites of modified config files during upgrades
- Prompt users for action when package config differs from local config
- Maintain backup files (.dpkg-old, .dpkg-new) for reference

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 22:08:13 +02:00
2d7fda717c Bump version to 0.0.3 v0.0.3
Update all version references in preparation for v0.0.3 release:
- Debian package control file
- Manual pages for skyview and beast-dump
- Web interface header display
- README installation instructions
- Documentation examples

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 21:59:46 +02:00
6414ea72f1 Add active WebSocket client tracking and display
Track and display the number of active WebSocket connections viewing the
aircraft tracker. Features:

Backend:
- Add getActiveClientCount() method for thread-safe client counting
- Include active_clients count in all statistics responses
- Integrate with existing stats API endpoints

Frontend:
- Display "X viewer(s)" in header stats with proper plural/singular grammar
- Add "Active Viewers" card to Statistics view
- Real-time updates as clients connect/disconnect
- Fallback to 1 when stats not yet available

This adds a social element showing "Now being watched by X users" style
information prominently in the interface.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 21:56:16 +02:00
802e964cc0 Add automatic changelog generation to Debian package build
The build script now automatically generates a proper Debian changelog from
git history between version tags. Features:

- Proper Debian changelog format with version, urgency, and timestamp
- Automatic version detection using git describe --tags
- Change list from previous version tag to current commit
- Compressed storage as per Debian standards (changelog.gz)
- Fallback logic for initial releases when no previous tags exist

The changelog is installed to /usr/share/doc/skyview/changelog.gz following
Debian packaging best practices.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 21:45:18 +02:00
29aedb5b50 Remove arbitrary 600kt speed cap from Mode S decoder
The decoder was capping all speeds at 600kt before validation, which caused:
1. Corrupt helicopter data to show false 600kt readings
2. Legitimate high-speed aircraft to be incorrectly limited
3. Validation logic in merger to miss corrupt data detection

The merger already has proper speed validation at 2000kt (Mach 3) and
position-based validation that catches impossible speeds from corrupt data
regardless of aircraft type.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 21:43:15 +02:00
61e80f6735 Rewrite CLAUDE.md for improved clarity and completeness
- Restructured into logical sections with clear hierarchy
- Added comprehensive development principles and quality standards
- Detailed code organization for both backend (Go) and frontend (JS)
- Explicit performance requirements with specific metrics
- Clear documentation standards and maintenance responsibilities
- Aviation domain considerations for safety and regulatory compliance
- Repository tooling guidelines emphasizing Forgejo over GitHub tools
- Added release management and version control best practices

Now serves as a complete development handbook for the SkyView project.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 21:32:30 +02:00
215456e281 Default range rings to enabled v0.0.2
- Set showRange to true by default in map-manager.js
- Check range rings checkbox by default in HTML
- Provides better initial user experience with distance reference

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 21:09:33 +02:00
50c27b6259 Merge pull request 'Complete Beast format implementation with enhanced features and fixes' (#19) from beast-format-refactor into main
Reviewed-on: #19
2025-08-24 20:50:37 +02:00
960f47682d Improve position validation logging and reduce spam
- Remove duplicate validation logging between mergeAircraftData and updateHistories
- Add rate limiting: errors logged max once per 10 seconds per aircraft
- Add rate limiting: warnings logged max once per 30 seconds per aircraft
- Only log first error/warning message to reduce log verbosity
- Clean up validation log entries when aircraft become stale
- Maintain memory efficiency with automatic cleanup

This significantly reduces log spam from aircraft with persistent
position validation issues (e.g., CPR decoding problems).

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 20:39:57 +02:00
94092298a1 Add separate color and legend entry for High Vortex Large aircraft
- Added High Vortex Large as distinct category in legend
- Assigned red-orange color (#ff4500) to differentiate from regular Large
- Updated JavaScript to check for high vortex before regular large
- Maintains proper ADS-B category distinctions for wake turbulence

High Vortex Large aircraft (like B757) create stronger wake turbulence
than typical large aircraft, warranting visual distinction for safety.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 20:28:27 +02:00
a231c5f2fc Fix aircraft weight category classification
- Fixed incorrect category label: 34000-136000kg is Large, not Medium
- Updated JavaScript color matching to properly distinguish categories
- Simplified color logic to use category keywords (light/medium/large/heavy)

This ensures:
- Light aircraft (< 7000kg): Sky blue
- Medium aircraft (7000-34000kg): Green
- Large aircraft (34000-136000kg): Orange
- Heavy aircraft (> 136000kg): Red

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 20:24:48 +02:00
127fe3cfe4 Remove debug logging for DF11 messages
- Cleaned up temporary debug output that was added for testing
- DF11 message processing is working correctly, no longer needs logging

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 20:21:52 +02:00
d8b53167a2 Add health check endpoint for monitoring and load balancers
- Added /health endpoint for Caddy and other monitoring systems
- Returns JSON with service status, source connectivity, and metrics
- HTTP 200 when healthy, 503 when degraded (no active sources)
- Includes aircraft count, message count, and source status

Useful for:
- Load balancer health checks
- Service monitoring dashboards
- Automated alerting systems

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-24 20:20:46 +02:00