Tα Release Notes του Tray-FM.
ℹ️ Το αποθετήριο έφυγε από το Github της Mcrosoft και πλέον βρίσκεται στο Codeberg.
☞ Ανέβηκε νέα έκδοση: v. 2.3.1 [20 /9/2026]
[2.3.1]
Άλλαξαν
- Καθαρότερη δομή AppImage: αφαιρέθηκε η περιττή διπλή αντιγραφή του
stations-default.txt και των εικονιδίων σε δύο σημεία (usr/bin/ και usr/share/trayfm/) — τα δεδομένα πλέον ζουν αποκλειστικά στο usr/share/trayfm/, όπως προβλέπει το FHS.
- Το
AppRun ορίζει πλέον ρητά τη μεταβλητή περιβάλλοντος TRAYFM_SHARE_DIR, και ο κώδικας την ελέγχει πρώτη κατά την αναζήτηση bundled αρχείων (πριν τα σχετικά paths) — πιο ρητός/στιβαρός εντοπισμός αντί για εικασία σχετικής διαδρομής. Backward-compatible: όταν τρέχει σκέτο .py χωρίς AppImage, συνεχίζει να δουλεύει όπως πριν.
Προστέθηκαν
SECURITY.md — πολιτική αναφοράς ευπαθειών, δέσμευση zero-telemetry, οδηγίες επαλήθευσης SHA-256.
CONTRIBUTING.md — οδηγός συνεισφοράς (σταθμοί, bug reports, pull requests).
- Νέο section "Ιδιωτικότητα & Ασφάλεια" στο README, με ρητή περιγραφή της μοναδικής εξωτερικής σύνδεσης που κάνει το app (χειροκίνητο "Έλεγχος Ενημερωμένης Λίστας") και οδηγίες SHA-256 verification.
checksums.txt σε κάθε release, με SHA-256 hashes των κύριων αρχείων.
Πλέον, κάθε release συνοδεύεται από checksums.txt με SHA-256 hashes των αρχείων.
Ψηφιακή υπογραφή (GPG) για το AppImage.
[2.3.0]
Προστέθηκαν
- Δυνατότητα δημιουργίας custom κατηγοριών από τον χρήστη, πέρα από τις τρεις προεπιλεγμένες (Music/News/Sports) — στα dialogs "➕ Προσθήκη Σταθμού"/"✏ Επεξεργασία Σταθμού" το πεδίο κατηγορίας δέχεται πλέον ελεύθερο κείμενο (προτείνει τις ήδη υπάρχουσες, αλλά δέχεται και νέο όνομα). Custom κατηγορίες παίρνουν γενικό εικονίδιο 📻 στο μενού, ενώ Music/News/Sports κρατούν τα δικά τους emoji.
- Το μενού χτίζει submenus δυναμικά βάσει των πραγματικών κατηγοριών που υπάρχουν στη λίστα σου (καμία κενή κατηγορία δεν εμφανίζεται) — γνωστές κατηγορίες πρώτα, custom αλφαβητικά μετά.
Άλλαξαν
- Όλες οι κατηγορίες (Music/News/Sports + custom) μαζεύτηκαν κάτω από ένα ενιαίο "📻 Σταθμοί" submenu στο κύριο μενού, αντί να είναι η καθεμιά ξεχωριστή γραμμή στην κορυφή — το κύριο μενού πλέον δεν μεγαλώνει όσες custom κατηγορίες κι αν φτιάξεις. Δοκιμάστηκε ρητά σε GNOME (Debian, Zorin, Ubuntu) για να επιβεβαιωθεί ότι δεν επαναφέρει το deep-nesting πρόβλημα του v2.2.0 — επιβεβαιωμένα λειτουργικό.
[2.2.1]
Διορθώθηκαν
- Στα κατηγοριοποιημένα μενού (🎵 Music / 📰 News / ⚽ Sports), το κλικ σε σταθμό άνοιγε ακόμα ένα (3ο) επίπεδο submenu με Play/Stop/Favorite. Σε GNOME (με AppIndicator, είτε built-in όπως στο Ubuntu είτε μέσω community extension) αυτό το βάθος nesting απέτυχε να αποδοθεί σωστά — μόνο η κατηγορία με τους λιγότερους σταθμούς (Sports) δούλευε, ενώ Music/News έμεναν εντελώς άδεια όταν ανοίγονταν. Επιβεβαιωμένο σε τρία ανεξάρτητα GNOME συστήματα (Debian 13, Zorin OS 18.1, Ubuntu 24.04), ενώ σε XFCE (MX Linux) δεν παρουσιαζόταν καθόλου.
- Το κλικ σε σταθμό μέσα σε κατηγορία παίζει πλέον κατευθείαν (2 επίπεδα βάθος αντί για 3), ίδιο pattern με τα ήδη λειτουργικά "⭐ Αγαπημένα" και "🔍 Αναζήτηση". Οι ήδη-αγαπημένοι σταθμοί δείχνουν ⭐ πρόθεμα στο όνομά τους για γρήγορη αναγνώριση.
Άλλαξαν
- Η προσθήκη/αφαίρεση από Αγαπημένα μετακινήθηκε από per-station submenu (που αφαιρέθηκε) σε νέο dialog "⭐ Διαχείριση Αγαπημένων" μέσα στο "⚙ Διαχείριση".
[2.2.0]
Προστέθηκαν
- Custom tray icons (
trayfm-playing.png / trayfm-stopped.png) αντί για τα γενικά system icons που έμοιαζαν με το system volume applet — με αυτόματο fallback στα γενικά system icons αν τα PNG λείπουν.
- Αυτόματο focus στο πεδίο αναζήτησης όταν ανοίγει το "🔍 Αναζήτηση" dialog.
Άλλαξαν
- Ο έλεγχος έντασης ("🔊 Ένταση") μετακινήθηκε από submenu (+5/-5/mute, που έκλεινε ολόκληρο το μενού σε κάθε κλικ) σε ξεχωριστό dialog με slider — παραμένει ανοιχτό όσο κάνεις προσαρμογές, χωρίς να χρειάζεται να ξανανοίγεις το μενού σε κάθε μικρή αλλαγή. Βασίστηκε σε πραγματικό feedback χρήστη για τη δυσχρηστία του παλιού submenu.
[2.1.0]
Προστέθηκαν
- Fallback στη βιβλιοθήκη indicator: δοκιμάζει πρώτα
AyatanaAppIndicator3, μετά το παλιότερο AppIndicator3· αν λείπουν και τα δύο, εμφανίζει σαφές μήνυμα σφάλματος αντί να κρασάρει σιωπηλά.
- Ενσωματωμένη (embedded) λίστα 18 δοκιμασμένων σταθμών μέσα στον ίδιο τον κώδικα, ως τελευταία γραμμή άμυνας όταν λείπει το εξωτερικό
stations-default.txt.
- Νέο section "Συμβατότητα ανά διανομή" στο README, με πίνακα υποστήριξης ανά desktop environment και packages για
apt / dnf / pacman.
- Επιμονή έντασης (volume) μεταξύ σταθμών και επανεκκινήσεων του app — αποθηκεύεται σε
volume.json, εφαρμόζεται αυτόματα στην εκκίνηση κάθε νέου stream.
- Ένδειξη τρέχοντος επιπέδου έντασης (%) μέσα στο submenu "🔊 Ένταση".
- Προστασία μονού instance (
flock σε lock file) — αν το app τρέχει ήδη, μια δεύτερη εκκίνηση δείχνει απλό μήνυμα αντί να ανοίξει δεύτερο tray icon.
- Top-level "⏹ Διακοπή" στην κορυφή του μενού όσο παίζει κάτι — δεν χρειάζεται πια να μπεις σε submenu σταθμού για να σταματήσεις την αναπαραγωγή.
- Confirmation dialog πριν τη διαγραφή σταθμού ("Διαγραφή του «X»; Αυτή η ενέργεια δεν αναιρείται."), ώστε ένα τυχαίο κλικ να μη σβήνει σταθμό χωρίς δεύτερη σκέψη.
- Buffering flags στο mpv (
--cache=yes --demuxer-max-bytes=5M) για καλύτερη απορρόφηση μικροδιακυμάνσεων δικτύου σε ασταθή streams.
Άλλαξαν
- Τα 6 items διαχείρισης (Προσθήκη/Επεξεργασία/Διαγραφή/Επαναφορά/Εισαγωγή M3U/Έλεγχος GitHub) μαζεύτηκαν κάτω από ένα ενιαίο submenu "⚙ Διαχείριση" αντί να είναι flat μέσα στο κύριο μενού.
Διορθώθηκαν
- Το scroll στο tray icon για αλλαγή έντασης υπέθετε πάντα binary UP/DOWN κατεύθυνση· σε touchpad ή ορισμένα Wayland compositors η κατεύθυνση έρχεται ως
SMOOTH, με αποτέλεσμα η ένταση να μειωνόταν πάντα ανεξαρτήτως φοράς. Τώρα χρησιμοποιείται το πρόσημο του scroll delta σε αυτή την περίπτωση.
[2.0.0]
Προστέθηκαν
- Πλήρες αρχιτεκτονικό refactor σε OOP (
StorageManager, DialogBuilder, TrayFM) αντί για global mutable state.
- In-memory caching στο
StorageManager — αποφυγή επαναλαμβανόμενου re-read/re-parse του stations.txt σε κάθε rebuild του μενού.
- Κατηγοριοποίηση σταθμών (Music / News / Sports) με νέο format αρχείου
Όνομα|Κατηγορία|URL· διατηρείται συμβατότητα με το παλιό Όνομα,URL (γίνεται αυτόματα Music).
- 🔍 Αναζήτηση σταθμών με live φιλτράρισμα.
- ➕ / ✏️ / 🗑️ Προσθήκη, Επεξεργασία, Διαγραφή σταθμών από το ίδιο το μενού, με επιλογέα κατηγορίας.
- 📥 Εισαγωγή σταθμών από M3U / M3U8 playlists.
- ⬇️ Έλεγχος ενημερωμένης λίστας από το GitHub repo — προσθέτει μόνο νέους σταθμούς, ποτέ δεν αγγίζει/διαγράφει υπάρχοντες.
- ↺ Επαναφορά στην προεπιλεγμένη λίστα σταθμών.
- 🔊 Έλεγχος έντασης και mute μέσω του IPC socket του mpv (Unix domain socket στο
XDG_RUNTIME_DIR, ασφαλέστερο από στατικό path στο /tmp).
- ⏰ Sleep timer (15/30/45/60/90 λεπτά).
- Αυτόματη εκκίνηση με το σύστημα (δημιουργία
.desktop στο autostart).
- Ειδοποιήσεις (
notify-send) για αναπαραγωγή, αποτυχία stream, sleep timer.
- Καθαρισμός της λίστας σταθμών: αφαίρεση 25 πραγματικών διπλότυπων (ίδιο stream μέσω διαφορετικού mirror/port/naming) — 153 → 128 μοναδικοί σταθμοί.
- AppImage packaging.
[0.15] και πριν
- Αρχική έκδοση, βασισμένη στο Sheldio project.
- Βασικό μενού: Play / Stop / Add to Favorites ανά σταθμό, χωρίς κατηγορίες, χωρίς αναζήτηση, χωρίς persistent ρυθμίσεις.