Compare commits
base: glenn:835f91d17ce6c678d9cc8f970f446f22b3c7a3e6
glenn:main
glenn:docs/update-documentation-2026-01
glenn:glenneth/fix-rate-limiter-negative-amounts
glenn:glenneth/increase-rate-limits-more
glenn:glenneth/fix-notification-icon
glenn:glenneth/fix-rate-limits
glenn:glenneth/system-notifications
glenn:glenneth/fix-geo-stats-ordering
glenn:glenneth/updated-playlists
glenn:glenneth/fix-login-audio-disconnect
glenn:glenneth/fix-stream-reconnect
glenn:glenneth/fix-playlist-scheduler-reset
glenn:glenneth/YP-fix
glenn:glenneth/fix-password-reset-timestamp
glenn:glenneth/sql-refactor
glenn:glenneth/favorites-fixes
glenn:glenneth/user-profile-enhancements
glenn:glenneth/fix-completed-column-type
glenn:glenneth/playlist-display-fix
glenn:glenneth/playlist-scheduler
glenn:glenneth/channel-selector
glenn:glenneth/admin-shuffle-stats
glenn:glenneth/shuffle-stream
glenn:glenneth/geo-stats-fix-and-parenscript
glenn:glenneth/liquidsoap-native-decoders
glenn:glenneth/liquidsoap-latency-fix
glenn:glenneth/stalled-state-fix
glenn:glenneth/geo-from-request
glenn:glenneth/fix-polling
glenn:glenneth/fix-geoip-lookup
glenn:glenneth/listener-statistics
glenn:glenneth/fix-wedged-player
glenn:glenneth/frameset-login-redirect-fix
glenn:glenneth/parenscript-conversion
glenn:glenneth/reduce-icecast-burst
glenn:glenneth/escape-velocity
glenn:glenneth/spectrum-analyzer
glenn:glenneth/fix-sequential-playlist-playback
glenn:glenneth/phase-metadata
glenn:glenneth/recently-played-tracks
glenn:glenneth/fix-scan-library-path
glenn:glenneth/fix-uri-path-undefined
glenn:fix/database-schema-bugs
glenn:feature/password-change
glenn:production/security-and-config
glenn:refactor/lispy-improvements
glenn:feature/liquidsoap-dj-controls
glenn:fix/dynamic-stream-url
glenn:api-refactoring-only
glenn:design
glenn:feature/clip-templating
glenn:feature/docker
glenn:feature/hybrid-player
glenn:feature-playlist-control
glenn:fix/persistent-player-font
glenn:feature/persistent-audio-player
glenn:feature/popout-player
glenn:refactor/admin-now-playing
glenn:glenneth/docs-update
glenn:fix-volume-normalization
glenn:feature/user-page-flow
glenn:wip/api-refactoring
glenn:js-fixes-for-api
glenn:glenneth/user-profile-page
compare: glenn:61d3e490daad79a7e8e9ba77fb5eddb6b432bd5a
glenn:docs/update-documentation-2026-01
glenn:main
glenn:glenneth/fix-rate-limiter-negative-amounts
glenn:glenneth/increase-rate-limits-more
glenn:glenneth/fix-notification-icon
glenn:glenneth/fix-rate-limits
glenn:glenneth/system-notifications
glenn:glenneth/fix-geo-stats-ordering
glenn:glenneth/updated-playlists
glenn:glenneth/fix-login-audio-disconnect
glenn:glenneth/fix-stream-reconnect
glenn:glenneth/fix-playlist-scheduler-reset
glenn:glenneth/YP-fix
glenn:glenneth/fix-password-reset-timestamp
glenn:glenneth/sql-refactor
glenn:glenneth/favorites-fixes
glenn:glenneth/user-profile-enhancements
glenn:glenneth/fix-completed-column-type
glenn:glenneth/playlist-display-fix
glenn:glenneth/playlist-scheduler
glenn:glenneth/channel-selector
glenn:glenneth/admin-shuffle-stats
glenn:glenneth/shuffle-stream
glenn:glenneth/geo-stats-fix-and-parenscript
glenn:glenneth/liquidsoap-native-decoders
glenn:glenneth/liquidsoap-latency-fix
glenn:glenneth/stalled-state-fix
glenn:glenneth/geo-from-request
glenn:glenneth/fix-polling
glenn:glenneth/fix-geoip-lookup
glenn:glenneth/listener-statistics
glenn:glenneth/fix-wedged-player
glenn:glenneth/frameset-login-redirect-fix
glenn:glenneth/parenscript-conversion
glenn:glenneth/reduce-icecast-burst
glenn:glenneth/escape-velocity
glenn:glenneth/spectrum-analyzer
glenn:glenneth/fix-sequential-playlist-playback
glenn:glenneth/phase-metadata
glenn:glenneth/recently-played-tracks
glenn:glenneth/fix-scan-library-path
glenn:glenneth/fix-uri-path-undefined
glenn:fix/database-schema-bugs
glenn:feature/password-change
glenn:production/security-and-config
glenn:refactor/lispy-improvements
glenn:feature/liquidsoap-dj-controls
glenn:fix/dynamic-stream-url
glenn:api-refactoring-only
glenn:design
glenn:feature/clip-templating
glenn:feature/docker
glenn:feature/hybrid-player
glenn:feature-playlist-control
glenn:fix/persistent-player-font
glenn:feature/persistent-audio-player
glenn:feature/popout-player
glenn:refactor/admin-now-playing
glenn:glenneth/docs-update
glenn:fix-volume-normalization
glenn:feature/user-page-flow
glenn:wip/api-refactoring
glenn:js-fixes-for-api
glenn:glenneth/user-profile-page
3 Commits
835f91d17c
...
61d3e490da
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
61d3e490da |
Add Credits section with icon attribution
Attribution for sync.png icon from Flaticon (meaicon) |
|
|
|
86536a2f22 |
Replace reconnect button emoji with sync icon
- Add static/icons/sync.png (24x24px) - Use CSS filter to make icon green to match player theme |
|
|
|
34a6d94324 |
Refactor geo stats to use real IPs from web requests
Instead of relying on Icecast's listener IPs (which show proxy IPs behind HAProxy), capture real client IPs from X-Forwarded-For header when users visit the front page or audio player frame. Radiance automatically extracts X-Forwarded-For into (remote *request*). Changes: - Add *web-listeners* hash table to track visitors with real IPs - Add register-web-listener to capture IPs during page requests - Add collect-geo-stats-from-web-listeners for polling - Call register-web-listener from front-page and audio-player-frame - Filter out private/internal IPs (172.x, 192.168.x, 10.x, 127.x) - Remove session requirement - use IP hash as key for anonymous visitors |