GoSuki v1.4.0: Windows Support and a New Browser Workflow
I’ve just released GoSuki v1.4.0. This update brings native Windows support and some improvements to how browser definitions are handled, making the tool more accessible across different platforms.
Expanding the Horizon: Windows, macOS, and BSD
The biggest news in this release is the arrival of native Windows support. Bringing GoSuki to Windows was an interesting challenge; while the parsing logic and watcher events worked surprisingly well out of the box, I spent most of my time wrestling with browser path handling. I’ve implemented a Windows systray icon to keep the daemon tucked away, and the build now handles the specific requirements of the Windows filesystem.
Please note that the Windows build is currently considered beta. I’m inviting all Windows users to test it out and report any friction they encounter.
For macOS users, I’ve simplified the installation process by introducing a Homebrew tap. You can now install both the CLI and the GUI app via brew, which removes the manual setup hurdles from previous versions. I’ve also added support for the BSD family (FreeBSD, NetBSD, and OpenBSD), ensuring that GoSuki remains truly platform-agnostic.
A More Flexible Browser System: browsers.yaml
Adding support for new browsers used to require hard-coding definitions into the Go source code, which was a tedious process. I’ve completely revamped this by moving all browser definitions into a centralized browsers.yaml manifest.
Now, adding a new browser—like the recently added Zen Browser, IceCat, Pale Moon, or Basilisk—is as simple as adding a few lines to a YAML file and running make gen. This not only makes the codebase cleaner but also makes it much easier for the community to contribute new browser definitions without needing to dive deep into the implementation logic.
Refined Search and Control
I’ve added some pragmatic improvements to the suki CLI and the Web UI to help you navigate larger collections:
- Sorting: You can now use the
--sort(or-s) flag insukito organize your results bymodifieddate,title, orurl. For example,suki -s modified:descwill give you your most recent bookmarks first. - UI Tweaks: The Web UI search bar now allows you to toggle currently selected tag filters on the fly, making it faster to refine your searches.
- Network Control: I’ve added a
--listenflag, allowing you to specify exactly which host and port the daemon binds to. For better security, I’ve also changed the default listening address to127.0.0.1.
Under the Hood
I’ve spent some time cleaning up the database layer. I discovered that LIKE query wildcards (%) were being consumed as format verbs in some queries, leading to silent failures. I’ve replaced the formatting logic with a more robust string replacement system to fix this.
Additionally, I’ve introduced a composite index on the bookmarks table. This is a technical optimization that significantly speeds up the change detection process during P2P synchronization, especially for users with very large databases.
Gosuki+ Updates
For Gosuki+ users, I’ve focused on enhancing the external API integrations and synchronization reliability:
Advanced GitHub Integration: The GitHub module has evolved beyond a simple flat list of starred repositories. For years, the community has been calling for an official API to access GitHub Star Lists (as seen in this long-standing discussion), with most workarounds relying on fragile, cookie-based webpage scraping. I’ve managed to find a way to bypass these hurdles and provide native access to your custom-organized lists directly in GoSuki. This includes full support for private list access, ensuring your confidential research and curated collections are imported and accessible locally without the need for unstable scraping scripts.
Imported repositories are intelligently tagged: starred repos keep their GitHub topics, while star list items are tagged with the format
list:nameand the primary programming language of the repository.Deep Reddit Archival (early preview): For Reddit, the system now features full post archival, including nested comment trees, transforming your saved Reddit threads into a permanent, searchable local archive. This is a work in progress and not yet fully stable.
P2P Sync Resilience: I’ve improved how nodes handle reconnections. If a master node is unreachable at startup, the system now gracefully falls back to local-only mode and automatically reconnects once the master node becomes available, ensuring no interruption in your workflow.
Get Started
Quickstart
The fastest way to get GoSuki running is to start the daemon and open the built-in Web UI:
- Start the daemon:
gosuki start - Access the Web UI: Open your browser and go to
http://127.0.0.1:2025
You can also run it with the Terminal UI for a real-time overview of the parsing process:
gosuki --tui startInstallation
Depending on your platform, you can install GoSuki via packages or from source:
- macOS: Use the new Homebrew tap:
brew tap blob42/gosuki brew install blob42/gosuki/gosuki # CLI brew install --cask blob42/gosuki/gosuki-app # GUI - Arch Linux:
paru install gosuki-git - Debian/Ubuntu: Follow the Debian installation guide
- Windows: Download the latest
.tar.gzrelease from GitHub Releases - From Source:
go install -tags systray github.com/blob42/gosuki/cmd/gosuki@latest go install github.com/blob42/gosuki/cmd/suki@latest
Community & Support
GoSuki is a community-driven, open-source project. If you want to get involved or need help:
- Documentation: Check out the Quickstart Guide and Feature Matrix.
- Contribute: Help us add more browsers by contributing to the
browsers.yamlmanifest. - Support: If you find value in this tool, consider supporting its development via GitHub Sponsors or Patreon.