TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
翻译准备中
Local-first bookmark library for Windows and Linux. Save the page you're on from Chrome, Edge or Firefox in one click; your links stay in a SQLite file on your computer.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A desktop bookmark library. Save the page you are on from Chrome, Edge or Firefox with one button; the link lands in the app and stays on your computer.查看完整 README ↗A desktop bookmark library for Windows, macOS and Linux. Save the page you are on from Chrome, Edge, Firefox or Safari with one button; the link lands in the app and stays on your computer. Read it later in reading mode, without menus or banners, and follow the sites you like through their feeds.
Website and downloads: koona.app/pin
.kpin list of links and feeds someone published, see what it holds and choose what to import; make one in the bundle: drag bookmarks, collections, tags or feeds to it (or open it with «Share as list…» in the ⋯ menu and add the view on screen), then save it as a .kpin or copy it as Markdown. The bundle lives only while the app is open. The format is open and public domain: docs/kpin.Koona Pin is free, and everything above stays free. Supporter, an optional subscription ($1.49 or €1.49 a month, $9.99 or €9.99 a year, or $29.99 or €29.99 as a one-time purchase), funds the project and adds:
See pricing.
Get the current version from koona.app/pin/downloads, which also lists SHA-256 checksums and install commands.
| Platform | Package | Notes |
|---|---|---|
| Windows 11, 64-bit | Installer (-setup.exe) | Signed; no administrator rights needed |
| macOS 15 or later, Apple Silicon | .dmg | Signed and notarized, updates itself; the Safari extension comes inside the app |
| Ubuntu 26.04, Debian 13 | .deb | sudo apt install ./<file>.deb |
| Fedora 44 | .rpm | sudo dnf install ./<file>.rpm |
| Other Linux distributions | AppImage | Runs without installing |
Linux builds are 64-bit (x86_64) and target GNOME or KDE Plasma on Wayland. An Arch Linux (AUR) package is not available yet.
The extension works in Chrome or Edge 120+, Firefox 140+ (including ESR 140) and Safari 18.4+. Install the app first; the extension talks only to Koona Pin on the same computer.
The button saves the page you are on, «Save to Reading» (right-click, or Alt+Shift+R) sends it straight to Reading, and the popup searches your library. Every browser is built from one source in extension/src.
Your library is a SQLite file on your computer:
| OS | Library file |
|---|---|
| Windows | %APPDATA%\Koona\Pin\koonapin.db |
| macOS | ~/Library/Application Support/Koona/Pin/koonapin.db |
| Linux | ~/.local/share/Koona/Pin/koonapin.db (or $XDG_DATA_HOME/Koona/Pin/) |
Automatic backups go to a backups folder next to it. Feed posts are kept in feeds.db and offline copies in an offline folder in the same place; neither is synced or exported. Uninstalling the Linux package keeps the library.
The app sends no analytics, telemetry or crash reports. It connects to the network only to read the title and preview of a link you save from that link's website, to ask Google's favicon service for missing site icons, and to ask koona.app once a day whether a new version is out. Reading mode requests the page you open from its website, and the next article in the queue ahead of time while reading mode is open. It also requests the feeds you follow from their websites, about once an hour while it runs (nothing goes through a Koona server), the links the link check tests, the pictures of an article you save for offline, and, when you paste a link into «New link» (or, on a phone, type one and press Go), that page, to show its preview and whether it has a feed, and, when that page names no feed, the same site's home page. With Supporter, the optional subscription, it also asks the Koona server about your plan: while a purchase waits for its payment, once a day in the last days of a paid period, when you sign in or out, and, while sync is on, for a sign-in token for the sync relay. Sync carries your library between your computers through that relay, end-to-end encrypted with a key only your computers have, so the relay can't read it. The relay keeps nothing of your library and only passes changes between computers that are online at the same time. The extension reads only the address and title of the tab you save. Feedback reaches the developer only if you choose to send it; a Supporter purchase sends them the email you paid with. Details: privacy policy.
Koona Pin is a Tauri 2 app: a Rust core with SQLite and a React 19 + TypeScript interface built with Vite.
.bun-version. Node.js is not needed; run every script with bun run ….rust-toolchain.toml pins the version and rustup installs it on first build.bash scripts/linux/deps.sh (Ubuntu, Debian, Fedora, Arch).bun install
bun run tauri dev # the desktop app with hot reload
bun run dev # the interface alone in a browser, with demo data; it never touches your library
bun run dev starts the interface without the Rust core, which is handy for UI work.
bun run check # Rust tests, type check and build, Vitest; run before every commit
bun run check:bindings # TypeScript bindings generated from Rust are committed
bun run test:ui # Playwright tests of the interface
bun run test:native # Playwright tests of the real app window (Windows, WebView2)
bun run test:extension # the extension end to end against the app
bun run extension:lint # web-ext lint of the Firefox build
Before the Playwright tests run bunx --bun playwright install chromium once. Native and extension tests use their own temporary libraries and browser profiles, not yours; close a running Koona Pin first. The full list of checks and their requirements is in docs/testing.md.
Build output that leaves the repository (installers, packages, extension builds, release data) goes to release/, which Git ignores. bun run clean removes what tests leave behind.
| Folder | What is in it |
|---|---|
src/ | The app interface: React 19, TypeScript, Tailwind CSS, interface strings in src/locales |
src-tauri/ | The Rust core: SQLite library, capture from the browser, feeds, reading mode, import and export, backups, updates; sync and the backup folder in commercial directories |
extension/ | The browser extension for Chrome, Edge, Firefox and Safari (extension/src) and store assets |
changelog/ | What changed in each version: the release notes, the update dialog and the site's changelog page. The website koona.app/pin itself lives in its own repository |
supabase/ | The backend that receives feedback sent from the app and the website |
scripts/ | Build, packaging, release and test scripts run by bun run |
tests/ | Playwright tests of the interface and the native app, WebKitGTK tests for Linux, and fixtures |
docs/ | Documentation: architecture, building, testing, the extension, translating, design and decisions; the .kpin list format in |
Interface strings live in src/locales/<code>.json. en.json is the source and the fallback; every other file has the same keys, and a new file is picked up as a new language without code changes.
Languages: English, Chinese (Simplified), French, German, Italian, Japanese, Korean, Polish, Portuguese (Brazil), Russian, Serbian (Cyrillic and Latin), Spanish, Turkish and Ukrainian. sr-Latn.json is generated from sr.json with bun run locales:sr-latn.
Bug reports, ideas and questions go to GitHub issues. Please open an issue before working on anything bigger than a fix. Pull requests need a signed Contributor License Agreement: on your first one, the CLA check asks you to sign it with a single comment; authors keep their copyright. See CONTRIBUTING.md.
Please don't report vulnerabilities in public issues. Use private vulnerability reporting; see SECURITY.md.
Koona Pin is open core. Unless an applicable notice says otherwise, the community code — the app, the extension, the website, scripts, tests and documentation — is licensed under the GNU General Public License v3.0 only (GPL-3.0-only). Designated commercial code may be published in commercial directories under the separate Koona Pin Commercial License: public source is available for review and contributions, while production use requires an active subscription or another express permission. The price, currency and monthly or annual billing period are shown in Paddle checkout. This repository does not grant access to hosted services.
The names "Koona" and "Koona Pin", the mascot, the logo and the wordmark are used as trademarks; project-owned brand artwork, including the screenshots above, is excluded from the GPL. TRADEMARKS.md permits local development, contribution forks, truthful references and redistribution of unmodified official community releases. A modified product distributed to end users must use its own branding. Third-party material, such as the Unsplash photos used in the screenshots, stays under its own terms.
Details: LICENSING.md and TRADEMARKS.md.
How the app is built, tested and translated, and the decisions behind it, are in docs/.