Review of "FocusFlow" version 1.0.0 (1)

Details Page Preview

Pomodoro-style timers and time tracking from the top panel. - One timer per topic (Study, Break, Gaming, ...) with play, pause and reset - Manage topics: add, edit, hide, delete and reorder - Daily, weekly and monthly stats per topic - Notification and sound when a timer finishes - Keeps running across lock screen, suspend and logout

Extension Homepage
https://github.com/Rahulrgd/focusflow-gnome

No comments.

FAQ

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental)

Shexli did not find any issues.

All Versions

Version Status
1.0.0 (1) Unreviewed

Previous Reviews on this Version

rahulrgd21 posted a review
FocusFlow 1.0.0 – Pomodoro-style timers and time tracking in the top panel. Target: GNOME Shell 46. License: GPL-2.0-or-later (LICENSE included). Source: https://github.com/Rahulrgd/focusflow-gnome unlock-dialog session mode: Used so that a timer that runs out while the screen is locked still plays its finish chime and shows its notification. While locked, the panel indicator is hidden (Main.sessionMode 'updated' -> container.visible = false, menu closed), and the keybinding's ActionMode is NORMAL | OVERVIEW, so nothing is reachable on the lock screen. This is also explained in a comment in disable(). What enable() creates and disable() removes: - PanelMenu.Button indicator (destroyed) - One GLib timeout (1 s tick, only while a timer runs; removed in destroy()) - Keybinding 'toggle-timer' via Main.wm.addKeybinding (removed) - MessageTray source for finish notifications (destroyed) - A Gio.FileMonitor on the history file (cancelled) - A system-bus signal subscription to logind PrepareForSleep, to finish an overdue timer right after resume (unsubscribed) - GSettings handlers (connectObject/disconnectObject) All references are set to null. Data and I/O: - Topics and settings in the extension's own GSettings schema. - Session history in ~/.local/share/focusflow/sessions.jsonl, written with async Gio calls (append_to_async / replace_contents_bytes_async). The only synchronous calls are one mkdir of that folder and one existence check of the bundled sound file at enable. - Nothing is sent over the network. Other notes: - All GObject classes have explicit, prefixed GTypeNames (FocusFlow*) to avoid clashes with other extensions. - No GTK/Adw imports in the shell process; prefs.js does not import Shell modules. - The finish sound (sounds/done.oga) is generated by a script in the repository, no third-party audio.