Cyclework 3.2: Sali di livello (letteralmente)

Sono state settimane intense dopo il rilascio di Cyclework 3.0, ma oggi sono felice di annunciare che la versione 3.2 è finalmente disponibile.
Non si tratta di una semplice patch di manutenzione: questo aggiornamento porta con sé una revisione completa del sistema di gamification, una modalità "stealth" molto richiesta e importanti miglioramenti architetturali "sotto il cofano".
Ecco un approfondimento su tutte le novità.
Gamification 2.0
La produttività non dovrebbe essere noiosa.
Con la versione 3.2, volevo rendere i progressi fatti durante le sessioni di focus qualcosa di più tangibile e gratificante.
Ho migrato l'intero sistema di achievement da UserDefaults a uno schema SwiftData più robusto.
Cosa significa per te?
- Sistema XP: Ora guadagni 10 XP per ogni minuto di focus completato.
- Level Up: Ogni 500 XP raggiungi un nuovo livello.
- Nuova Grafica: Ho ridisegnato la vista delle statistiche con una griglia e aggiunto un overlay "Level Up" in stile glassmorphism. È bello da vedere e rende il raggiungimento dei traguardi molto più soddisfacente.
Modalità "Stealth" (focus senza distrazioni)
Questa è stata un'idea fantastica arrivata direttamente dalla community.
A volte, persino l'icona dell'app nel Dock può essere una distrazione visiva.
In Cyclework 3.2, ho aggiunto un'opzione nelle impostazioni per nascondere l'icona del Dock mentre il timer è attivo.
L'app passa a una modalità accessoria (visibile solo nella barra dei menu), lasciando lo schermo pulito per permetterti di concentrarti solo sul tuo lavoro.
Un ringraziamento speciale all'utente taj_g per aver suggerito questa funzionalità!
Sotto il cofano: SwiftData & RunLoops
Per i più tecnici che leggono questo post, ho dedicato molto tempo al refactoring della logica centrale per rendere l'app più reattiva e affidabile.
- Migrazione a SwiftData: Ho spostato la persistenza della cronologia delle sessioni su SwiftData. Questo migliora notevolmente le performance e la scalabilità man mano che lo storico dei dati cresce.
- Logica del Timer: Ho riscritto il
TimerService. In precedenza utilizzavaDispatchSourceTimer, che a volte causava una "pausa" visiva del timer quando l'utente teneva aperto un menu dell'applicazione. Sono passato a un timer basato su RunLoop (sul main thread in common mode), risolvendo definitivamente il problema. - Ottimizzazione: L'App Blocker ora è molto più gentile con il disco. Ho implementato un meccanismo di debounce per il salvataggio delle statistiche, riducendo drasticamente le operazioni di I/O.
Miglioramenti guidati dalla community
Cyclework migliora grazie ai vostri feedback.
Oltre alla modalità Stealth, questo aggiornamento risolve diversi bug segnalati dagli utenti:
- Layout: I nomi di attività molto lunghi non "rompono" più l'impaginazione e non nascondono i pulsanti.
- Chiarezza: Rinominata l'azione "Skip to Focus" in "Skip Session" per evitare confusioni.
- Task Esterni: Todoist e Promemoria ora si aggiornano automaticamente in background sfruttando la moderna Swift Concurrency (async/await).
Un grandissimo ringraziamento a Bjorkwheat per avermi aiutato a individuare il bug del timer che sembrava fermarsi e per aver segnalato i problemi di layout con i testi lunghi.
E adesso?
Cyclework 3.2 è disponibile da ora su Mac App Store.
Spero che questi cambiamenti vi aiutino a mantenere il focus e, perché no, a rendere il processo un po' più divertente.
Come sempre, fatemi sapere cosa ne pensate!



