Sno Station
Sno Station은 AI 에이전트를 하나의 팀으로 묶는 오픈소스 워크스테이션으로, 로컬 머신에서 에이전트 협업을 가능하게 함
An extension to supply the retired Collections feature for Microsoft Edge
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An open, local-first replacement for Microsoft Edge Collections, which
Microsoft has now retired. Collections Plus is the way to get that workflow
back — and, if you never exported before the feature disappeared, the way to
recover the collections Edge left behind on disk. It's a small Manifest V3
browser extension for Chromium-based browsers: no account, no server, no
build step. Your data stays in your browser.README 전문 보기 ↗An open, local-first replacement for Microsoft Edge Collections, which Microsoft has now retired. Collections Plus is the way to get that workflow back — and, if you never exported before the feature disappeared, the way to recover the collections Edge left behind on disk. It's a small Manifest V3 browser extension for Chromium-based browsers: no account, no server, no build step. Your data stays in your browser. A companion mobile web app at getcollectionsplus.com/app puts the same collections on your phone, synced through your own Dropbox.
📖 Guides: getcollectionsplus.com/help
Saving
Ctrl+Shift+S keyboard shortcut (rebindable).Ctrl+Shift+S) into a collection
automatically by domain, URL or title (⋯ → Tools → Auto-file rules…).
They also apply to links shared to the mobile app.Organizing
Exporting & backup
.xlsx workbook (one sheet per collection,
clickable links) or as CSV, great for part lists, shopping lists, or
anything you want to sort and total.collections_export.csv) so your existing
collections carry over on day one. A CSV has no pictures, so imported pages
come in blank — click Fetch missing images (in a collection's ⋯ menu, or
Fetch all missing images in settings) to pull each page's preview image in
bulk. Or hover a single page and click 🖼️ to fetch just that one. By
default it only fills in pages with no image yet.%LOCALAPPDATA%\Microsoft\Edge\User Data\<profile>\Collections\collectionsSQLite
— ⋯ → Import Edge database (SQLite)…, browse to that file, and your
collections come back, with thumbnails and favicons (which the CSV never
had). It's read directly with a small built-in SQLite reader — no extra tools.Ask your collections (optional AI)
chrome.storage.local), is never synced or
exported, and the whole feature is off until you set it up. See
Ask your collections and the
Privacy Policy.This is a standard Chromium Manifest V3 extension, so the core (context-menu
saving, storage, page capture, import/export) runs on any modern Chromium
browser. The catch is the Side Panel API (chrome.sidePanel), which hosts
the whole UI; its support varies:
| Browser | Side panel UI | Notes |
|---|---|---|
| Google Chrome (114+) | ✅ Full | Verified. |
| Microsoft Edge (114+) | ✅ Full | Verified. |
| Brave | ⚠️ Partial | Panel opens but a known bug can dismiss it after ~1s. |
| Vivaldi | ⚠️ Broken | Ships its own "Web Panels"; the standard API doesn't work. |
| Opera | ❌ No | Doesn't implement the extension Side Panel API. |
| Arc / other Chromium | ➖ Likely | Should work if built on Chromium 114+ with the Side Panel API. |
In short: Chrome and Edge are the recommended, fully-tested targets. Other Chromium browsers may work depending on their Side Panel API support.
Collections Plus is live on the Chrome Web Store. Install it in one click and it auto-updates, with no manual reloading.
edge://extensions (or chrome://extensions).To update after pulling changes, click the reload ↻ button on the
extension's card in edge://extensions.
Open getcollectionsplus.com/app and add it to your home screen (Android: Chrome's Install app; iPhone: Safari's Share → Add to Home Screen). See Mobile app below.
Ctrl+Shift+S saves the current page to the active collection. To change it,
open edge://extensions/shortcuts (or chrome://extensions/shortcuts)
and rebind "Save the current page to Collections Plus."
The Chrome Web Store version updates itself in the background. An unpacked extension does not: each browser keeps running the code it last loaded until you hit reload ↻ on its card. So if you run it unpacked, whenever you pull new code (or apply a fix), reload the extension on every device, not just one. This matters especially for sync: a device still running older code can not only miss changes but also push with the old logic, so reload all of your devices around the same time after an update. Reloading only reloads the code: your collections and the sync file are untouched. The mobile app updates itself the next time it's opened.
Edge Collections has been retired, so the export button is no longer there to click. Which path you take depends on whether you got your data out in time.
If you never exported — which is most people — your collections are very likely still on disk. Edge leaves its database behind when the feature goes:
%LOCALAPPDATA%\Microsoft\Edge\User Data\<profile>\Collections\collectionsSQLite
⋯ (top-right) → Import → Import Edge database (SQLite)… → choose
collectionsSQLite
That rebuilds your collections with each page's thumbnail and favicon, which the CSV never carried. The file has no extension, so browse straight to it (set the file picker to "All files" if it's hidden). This works as long as the file is still there — if you've since cleared Edge's data or deleted the profile, there may be nothing left to read.
If you did export while Collections still existed, you have
collections_export.csv in your Documents folder:
⋯ (top-right) → Import → Import Edge CSV… → choose
collections_export.csv
The CSV only contains saved pages (Edge's export drops images and notes), so that import is pages-only — prefer the SQLite route above if you still have the database. Going forward, use ⋯ → Export → Export backup (JSON) for a complete backup.
A collection exists to be opened, so opening one is a single click. Each collection card has a ▶ button (it appears when you hover the card) that opens every saved page in that collection at once. The same action lives inside a collection at ⋯ → Open all pages.
The opened pages are gathered into a browser tab group named after the collection — the old Edge Collections behavior — so a whole project opens together and stays collapsible and out of the way. If you open a large collection (more than 8 pages), it asks for confirmation first. Tab grouping needs a Chromium browser with the Tab Groups API (Chrome/Edge have it); where it's unavailable, the pages still open as ordinary tabs.
Prefer the panel to get out of the way once you've opened a collection? Turn on ⋯ → Tools → Close panel after Open all. It's off by default; when on, the side panel closes itself as soon as the tabs open, so opening a collection is a single click with nothing left to dismiss.
⋯ → Tools → Open in switches where the toolbar icon opens the UI:
Either way, Esc closes the panel: the first press backs out of whatever's open (a menu, a dialog, a search field you're typing in), and the next one closes the panel itself, so you never have to reach for the X.
Day to day, hovering a collection shows just the two things you do most: ▶ Open all and + Add current page. To rearrange, click ⇅ next to the search box to switch to organize mode: every card shows its ⠿ drag handle, and hovering a card shows the managing buttons (📁 move to a folder or collection, 📦 archive, 📍 pin, 🗑 move to Trash). Folder headers show their color, rename and delete buttons. Click Done (or ⇅ again) to go back. The panel always opens in the everyday mode.
Drag a card's handle to reorder your list, and an item's handle to reorder it within a collection. The new order is saved instantly. Pinned collections show a small 📌 badge.
Every collection has a cover thumbnail (the first saved item by default). To change it:
Two holding areas keep your main list tidy without losing anything. Both are in the ⋯ menu (📦 Archive and 🗑 Trash, each with a count when it has something in it).
The .xlsx workbook has one sheet per collection with clickable links. The CSV
opens straight in Excel / Google Sheets / Numbers: one row per item, with
columns Collection, Type, Title, URL, Note, Added. It's UTF-8 (with a BOM) so
accented characters and emoji survive. Handy for part lists, shopping lists,
research sources, or anything you want to sort, filter, or total in a
spreadsheet.
Collections Plus can chat with your saved data using a generative-AI provider you bring. It's optional, off until you set it up, and uses your own API key — there's no shared service and no developer-run backend.
Set it up:
⋯ (top-right) → AI → AI settings… → pick a provider, paste your API key, and (optionally) adjust the base URL or model → Save. Use Test connection to confirm it works.
Supported providers (pick whichever you already have):
| Provider | Notes |
|---|---|
| Claude (Anthropic) | Defaults to a current Claude model. |
| OpenAI | Standard chat/completions API. |
| Grok (xAI) | OpenAI-compatible. |
| Gemini (Google) | Google Generative Language API. |
| Azure AI Foundry | Set your resource base URL; uses an api-key header. |
| Ollama (local) | Runs against http://localhost:11434 — no key needed. |
| Other (OpenAI-compatible) | Any endpoint that speaks the OpenAI chat API. |
Chat:
⋯ → AI → Chat with collections… for all collections, or inside a collection ⋯ → AI → Chat about this collection… to scope the context to just that one.
When you send a message, the extension builds a snapshot of the in-scope collection(s) — titles, URLs, notes, tags and custom fields — and sends it, along with your message, straight from your browser to the provider you chose. Ask for summaries, reports, comparisons, or to find what you saved. Replies are rendered as formatted text.
What stays private: your API key is stored locally and is never synced and never written into exports or backups. The developer never sees your key, your messages, or your collections. The data you send goes to your selected AI provider and is handled under that provider's privacy policy and terms — review them before enabling this. Nothing is sent anywhere until you actively send a chat message. Full details in the Privacy Policy.
On your phone: the mobile app has AI search too (⋯ → AI settings to add a key, then Search by meaning in search), with Claude, OpenAI, Grok, Gemini or another OpenAI-compatible service. Keys are per device and never synced.
Sync is optional and provider-agnostic: there's no account. Instead of
integrating with one cloud, the extension reads and writes a single
collections-sync.json file that you place inside a folder your computer
already keeps synced: OneDrive, Google Drive, Dropbox, iCloud Drive, etc. Your
cloud client does the actual syncing; the extension just keeps that one file up
to date. The mobile app reads and writes the same file through
Dropbox.
📖 Step-by-step setup, including your phone: getcollectionsplus.com/help/sync
On your first device:
⋯ (top-right) → Sync → Create sync file… → save
collections-sync.jsoninside your synced folder.
On every other device:
⋯ (top-right) → Sync → Use existing sync file… → open the same
collections-sync.jsononce your cloud has finished downloading it.
The second step opens a normal Open dialog (not a save/overwrite prompt), the device adopts the synced data, and it asks for permission to write so its own future edits sync too.
With your phone: connect the mobile app to Dropbox first. It creates
Dropbox/Apps/Collections Plus/collections-sync.json, and that's the file every
computer should use (via Use existing sync file…). The app can only see that
folder, so a sync file anywhere else won't reach your phone.
"Did the file change?" is decided by the file's modification time as this device sees it locally, so it doesn't depend on your computers' clocks agreeing.
Since 2.10, sync merges item by item instead of keeping whichever copy was saved last:
Every device needs 2.10 or later. Files written by older versions carry no delete markers, so they still reconcile the old way (last write wins); if one arrives while you have unsaved edits, the extension keeps your changes and offers "Use file instead."
When you connect a device to a file that already has data, it asks before doing anything destructive: load the file (replace this device's data) or overwrite the file with this device's data. Keep Export backup (JSON) as a guaranteed-complete snapshot, and version history (⋯ → Tools → Version history…) lets you roll back recent states on one device.
Browsers don't keep the file's write permission across a restart or an extension reload (a security rule of the File System Access API). When that happens, Collections Plus pauses background saving instead of erroring: the sync menu shows Sync paused, and a toast offers Resume. Click Resume (or ⋯ → Sync → Resume sync / Sync now) once, approve the prompt, and your pending changes are written immediately and sync continues. Your data is never lost in the meantime; it's just held locally until you resume.
Requires a Chromium browser with the File System Access API (Chrome/Edge have it). If it's unavailable, the sync menu says so and the rest of the extension works unchanged.
getcollectionsplus.com/app is a web
app you install from your phone's browser, with no app store. It runs the same
data layer as the extension (lib/store.js on IndexedDB) and syncs with it
through your own Dropbox.
Guide: getcollectionsplus.com/help/mobile.
Everything is stored locally via chrome.storage.local on your machine (and,
in the mobile app, in your phone's browser storage). Nothing is sent to us or any
server; the optional sync file lives in a folder you chose (or your own
Dropbox, for the phone), and only your own cloud touches it. Saved page/image
thumbnails are stored as references to their original URLs (not copied), so they
display as long as the source stays online; uploaded covers, captured
screenshots, and cached images are downscaled and stored inline so they
always render. Offline image caching, cross-device sync, and the AI chat are all
off until you turn them on. Apart from sync to your own cloud, the AI features
are the only ones that can send your collection contents off-device, and only to
the provider whose key you entered — your key is stored locally and never
synced or exported. See the
Privacy Policy for the full breakdown.
manifest.json MV3 manifest (+ keyboard command)
background.js service worker: panel/pop-up opening, context menus, shortcut
sidepanel/ panel.html / panel.css / panel.js (the UI)
lib/store.js data layer, schema + migrations, settings, history
lib/backend.js storage seam: chrome.storage.local (extension) or injected
lib/merge.js item-level sync merge with tombstones (pure, testable)
lib/sync.js extension file sync (File System Access API) using merge.js
lib/csv.js tolerant CSV parser + Edge-export mapper (pure, testable)
lib/export.js collections → CSV + .xlsx sheet structures (pure, testable)
lib/render.js collections → Markdown / HTML / link list (pure, testable)
lib/ai.js generative-AI provider adapters + context builder
lib/semantic.js AI search catalog + result parsing (pure, testable)
lib/xlsx.js dependency-free .xlsx writer (pure, testable)
lib/image.js downscale a file/URL/screenshot into a small data URL
lib/idb-backend.js IndexedDB storage backend (mobile app)
lib/remote-adapter.js the sync transport contract
lib/sync-engine.js pull → merge → push over any adapter (mobile app)
lib/dropbox-adapter.js Dropbox transport: OAuth PKCE, rev-checked uploads
pwa/ the mobile web app (served at getcollectionsplus.com/app)
site/ getcollectionsplus.com (Next.js on Vercel), incl. /help
icons/ generated PNG icons
tools/make_icons.py regenerate the extension + app icons
tools/test_*.mjs pure-logic test harnesses (no browser needed)
fixtures/ sample Edge CSV / SQLite for testing the importers
The store package (npm run package) leaves out the mobile-only modules.
npm test # store/migrate, merge, sync, Dropbox, import/export, AI…
python tools/make_icons.py
/app/) locally:
cd site && npm install && npm run dev
npm run package # → dist/collections-plus-<version>.zip
MIT © Rod Trent. Use it, fork it, improve it.
Ctrl+K / ⌘K): jump to any collection or run any
command from one keyboard-driven, fuzzy-filtered list.col + space in the browser's address bar to
search your saved pages and jump straight to one.