Release Note

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.

  1. 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.
  2. Logica del Timer: Ho riscritto il TimerService. In precedenza utilizzava DispatchSourceTimer, 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.
  3. 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!