Skip to content

Releases: KIM-ocean-HZ/spool

v0.6.2

Choose a tag to compare

@KIM-ocean-HZ KIM-ocean-HZ released this 24 Aug 08:06

Spool is a context hub for long-running projects: capture fragments the moment they appear, keep them threaded under one project, and pack any thread into a paste-ready briefing when you need to re-enter the project — or re-brief an AI.

v0.6.2 is the release where a project can get shorter without losing what it said. A long project's pack eventually outgrows the window you want to paste it into, and until now the only cure was deleting your own writing. This build can hand a project to an AI, get a shorter version back, and show you exactly what changed before a single word is written to your library.

It also changes something you were told about this app, so read the network section below even if you never turn the new feature on.

Download

macOSSpool_0.6.2_aarch64.dmg · 9.9 MB · Apple Silicon (M1 or later), macOS 11 or newer

The macOS build is signed and notarized with a Developer ID, so it opens without the "unidentified developer" warning. Spool-macOS-arm64.dmg is the same file under a fixed name, for direct-download links — either name works.

sha256  fc74abee8f3c1084d70a885ccdd79520cb200a266b349536c3ad3fb12d992899  Spool_0.6.2_aarch64.dmg

Upgrading runs one small migration. The schema goes from v23 to v24, which adds two empty columns to the blocks table so a compressed block can carry its own original text. Nothing existing is rewritten, and Spool snapshots your database before it touches anything.

New: compressing a project's context

Open a project and there is now a Compress tab. It sends that project's pack to an AI, gets a shorter version back, and puts the two side by side for you to check.

It is off until you turn it on, and it spends your money, not ours. Settings → Let Spool call an AI to compress context asks for a base URL, a model and your own API key. It defaults to DeepSeek but talks to any OpenAI-compatible endpoint. If you already have Claude Code, Codex CLI or Gemini CLI on this machine, the existing AI engine section still does its own jobs for free and needs no key — this is a second route for people who do not want to install a command-line tool.

Nothing is written to your library until you press "Use this one".

  • The check is character by character. Numbers and dates the draft dropped are pointed at the sentence they came from, and one click puts them back.
  • A draft that lost a number or a date cannot be written to your library. That gate does not open, and turning anything on elsewhere does not relax it.
  • The original text stays on the block. Every compressed block keeps the words it had before, in the same database — the block's toolbar opens them, and one click puts them back. It costs disk, and you can turn it off in Settings, in which case the interface says so at the moment you press the button, not only in Settings.
  • Compressed blocks are marked in packs (🗜), and an MCP client can ask for a specific block's original wording with the new get_block_original tool. The original is never inlined into a pack — the AI has to ask.
  • A block is only compressed once. The next run packs the new blocks only, so you do not pay twice for the same paragraph.
  • Your annotations are never sent. Not "the prompt asks the model to leave them alone" — they are not in what goes out.
  • You can stop a run, and a run that comes back structurally broken is retried once automatically, with both attempts' usage added up and reported.
  • Before you spend anything, a local pass counts how much of the project is repeated text, so you can see whether there is anything to win.

⚠️ What this changes about "Spool never goes online"

Earlier versions said Spool has no network code, no API key field, and no way to reach the internet on its own. The first is still true. The other two are not, once you turn the API engine on.

Spool's main process still makes no network requests — that is structural, not a promise, and you can check it yourself:

cd src-tauri && cargo tree -e normal | grep -iE "ureq|rustls|reqwest|hyper|openssl"   # empty

When you switch the API engine on, the requests come from a separate local subprocess (spool-ai) that Spool starts, using your key and your quota, and the content reaches the model vendor you chose. The endpoint must be https — a plain http URL is refused rather than sending your key in the clear.

Your key is now in the system keychain, alongside your other passwords, instead of a file in Spool's data folder. Existing keys are moved on first read and the old file is deleted. It does not go into the settings file and it does not travel with an exported library.

The README, the privacy policy and the website have all been rewritten for this. The privacy page's table of "when does data leave your computer" now lists four routes instead of three, and the architecture diagram draws the third network path.

New: an out-of-date check

A second tab, Out-of-date check, asks an AI which blocks in a project have been overtaken by later ones — a date that moved, a decision that was reversed.

It never offers to "void" anything. For each finding you get three choices: mark the new block as correcting the old one (the old block stays, word for word), retire the old one, or do nothing. That wording is deliberate: in testing, most findings were "same subject, and the old block still holds most of its content" — agreeing to a blanket "void this" would have dropped blocks that were still true out of every future pack.

Every quotation the AI attributes to a block is checked against that block word for word before you are shown anything.

New: compress overnight, automatically

Tick a project into tonight's run — on the Compress tab, or on several projects at once from the row menu in Projects — and give it a start time. When that time comes round, the queued projects are compressed one at a time, and each draft waits on its own project's Compress tab for you to check in the morning. If Spool was closed at that hour, it runs the next time you open it.

Nights cost less. DeepSeek charges half price between 00:30 and 08:30 Beijing time; on another provider, check that provider's price list. And you are not sitting there watching a progress bar.

The start time is picked from two dropdowns on a 24-hour clock. That is deliberate: a <input type="time"> shows 12- or 24-hour depending on your system region, so picking what looked like 01:55 could store 13:55 — a run at 1:55 in the afternoon, at full price, when you meant 1:55 at night.

The queue lists what is in it and how many characters each project holds. It does not show a price estimate, because most of the bill is the output, and how long the output will be is not knowable before it is sent.

Fixed: the main window did not fit on a default-scaled Mac

On a 13" or 14" MacBook at its default resolution, Spool's window opened larger than the usable screen and the right rail sat about halfway off it. The window now opens to the screen's actual work area.

Also in this release

  • The break reminder now floats above whatever you are working in, and the "are you actually working" test no longer requires Spool to be the front window — which it never is, since the whole point is that you are somewhere else.
  • The capture gesture can be paused in one click, from Settings or from the menu bar, for when another app wants the same double-tap.
  • A sample project is there the first time you open Spool, so the first ⌘⇧P has somewhere to go, and it is reseeded in the language you switch to.
  • Spool says it does not go online before the keyboard permission prompt appears, not after.
  • Packs changed: the header now asks the reader whether the context still applies, packs carry explicit start and end boundaries, and a 💭 marker is printed on the line it belongs to.
  • Fixed: the out-of-date check borrowed the compression run's state and four places on screen reported the wrong thing at once; a finished check that found nothing showed a blank panel.
  • Fixed: pressing Stop during a compression run reported a broken installation and told you to reinstall Spool.

Spool's main process still makes no network connections. Content leaves this machine on exactly three routes, all of them yours to switch on: an MCP client you connected, a CLI engine subprocess (Claude Code, Codex CLI, Gemini CLI), and — new in this release — the spool-ai subprocess, if you gave it a key.

v0.6.1

Choose a tag to compare

@KIM-ocean-HZ KIM-ocean-HZ released this 19 Aug 07:40

Spool is a context hub for long-running projects: capture fragments the moment they appear, keep them threaded under one project, and pack any thread into a paste-ready briefing when you need to re-enter the project — or re-brief an AI.

v0.6.1 makes one checkbox tell the truth, and changes how corrections look. The headline is a fix to a promise the interface had been breaking: a file you had marked as off-limits to AI was still being read. Read the first section before you upgrade — it is the one change here that can alter what an AI can see in your library.

Download

macOSSpool_0.6.1_aarch64.dmg · 9.0 MB · Apple Silicon (M1 or later), macOS 11 or newer

WindowsSpool_0.6.1_x64-setup.exe · 6.7 MB · x64, Windows 10 or 11

The macOS build is signed and notarized with a Developer ID, so it opens without the "unidentified developer" warning. The Windows build is still not code-signed — SmartScreen will show "Windows protected your PC"; open More info → Run anyway if you want to install it.

Spool-macOS-arm64.dmg and Spool-windows-x64-setup.exe are the same two files under fixed names, for direct-download links — either name works.

sha256  0e41d6c3ae5278efcb6c5924fbf578c0d5e0ab481f1eb3260ecdf1459ab52708  Spool_0.6.1_aarch64.dmg
sha256  8814690c8894ef8a7f9cded5b5e3ca86923ed5b9646b798c56b71c6077db350a  Spool_0.6.1_x64-setup.exe

Upgrading is safe and does nothing to your library. The database schema is unchanged from 0.5.0 (v23), so this build runs no migration at all: it opens the library you already have, exactly as it is.

⚠️ Behaviour change: "AI can't read this file" now means it

If you attach a file to a project, Spool gives you two separate checkboxes: one puts the file's text into the pack you copy to your clipboard, the other decides whether an AI connected over MCP may read it.

Until this release, either checkbox was enough to unlock the file. So if you left the pack checkbox on and switched the AI one off, the interface said "AI can't read this file" while the AI could still search its text, and get_pack still inlined the whole thing. The interface was making a promise the code did not keep.

Now the AI checkbox is the only lock. Turn it off and the file is closed to AI: it is not searched, not summarised, and not inlined into the pack an AI receives. The other checkbox goes back to meaning exactly what it says — include this text in the pack I copy.

What to expect after upgrading: a file you had opened up only through the pack checkbox is now locked. The AI can still see that the file exists and that it has extracted text — it just cannot read it, and it now knows how to ask. Expect access requests for files that used to answer silently. If you want one of them readable, tick the AI checkbox for it.

Corrections are now annotations, not separate cards

A correction used to get its own card in the timeline, plus a pair of lines pointing you at a block number somewhere else. Following one meant jumping around and reading the same fact three times.

Now a correction is pinned underneath the thing it corrects. The sentence that was corrected is highlighted — a warm underline, deliberately a different colour from a ==highlight== you made yourself — and clicking that sentence opens the correction below it, joined by a dashed line, the way a margin note attaches to a line of text. If two sentences in one block were corrected by two different blocks, clicking the first opens only the first.

  • You can write corrections yourself now. Select the wrong text and the toolbar offers Correct this? next to Highlight? — same gesture, same selection. Corrections written here are labelled as yours; corrections written by an AI carry the name of the client that sent them. Nothing marks a hand-written correction as AI-authored.
  • Nothing about your data changed. A correction is still an ordinary block with the same reference it always had. Packs, block numbers and the append-only history are byte-for-byte what they were — only the drawing changed.
  • A correction is only folded under its target when the reader can actually get to it: the quoted sentence still has to be findable in the target block, and the target cannot be a merged block. Otherwise the correction keeps its own card and the old pointer lines, because a correction folded into something unclickable would be a block that exists in your library, goes into packs, and cannot be seen anywhere on screen.

Removed: "which block does this correct?" The picker that let you attach a correction to another block by hand is gone — it was the confusing route this release replaces. Corrections you already have are untouched and still display; the supersedes relationship is still read everywhere it was read before. Only the way to create one by hand is gone.

Fixed: highlighting only ever worked on a single line

Selecting across a line break and marking it as a highlight appeared to work and then came back wrong — either the highlight was not drawn, or bare == showed up in the text. Selecting across bold text or a heading failed the same way.

There were two independent causes and fixing one alone still left it broken: the pattern that finds a highlight did not match across newlines, and the code located your selection by searching for the selected words in the source text — words the renderer had already stripped ** and ## out of, so any selection crossing a mark could not be found. Both are fixed, and two older limitations went with them: you can now highlight the second occurrence of a word rather than always the first, and a selection containing == is no longer refused.

Also in this release

  • The work/capture panel in the left rail now has a 10-minute backstop. The two faces still swap when Spool is not the front window; if that has not happened for ten minutes, the panel swaps anyway. It can therefore change while you are looking at it — a deliberate trade for a panel that no longer sits on one face all session.
  • Fixed: cancelling a correction relationship used to clear the reference but leave the quoted sentence behind, producing a row that Spool's own validation would reject. Cancelling now clears both.
  • The break-reminder study quoted in Settings is now cited on the website with its DOI.

Spool itself still makes no network connections, and your data never leaves your machine. The optional maintenance jobs run in your own CLI subprocess (Claude Code, Codex CLI or Gemini CLI) — that process is the one that goes online, not Spool.

Spool 0.6.0 — a break reminder, a second appearance, and the translucency fix

Choose a tag to compare

@KIM-ocean-HZ KIM-ocean-HZ released this 19 Aug 04:56

Spool is a context hub for long-running projects: capture fragments the moment they appear, keep them threaded under one project, and pack any thread into a paste-ready briefing when you need to re-enter the project — or re-brief an AI.

v0.6.0 adds two things you can see and one you can feel. A second appearance you can switch on and off, a break reminder that actually stops you working, and a fix for a rendering defect that had been quietly flattening translucent surfaces all over the app.

Download

macOSSpool_0.6.0_aarch64.dmg · 9.0 MB · Apple Silicon (M1 or later), macOS 11 or newer

WindowsSpool_0.6.0_x64-setup.exe · 6.7 MB · x64, Windows 10 or 11

The macOS build is signed and notarized with a Developer ID, so it opens without the "unidentified developer" warning. The Windows build is still not code-signed — SmartScreen will show "Windows protected your PC"; open More info → Run anyway if you want to install it.

Spool-macOS-arm64.dmg and Spool-windows-x64-setup.exe are the same two files under fixed names, for direct-download links — either name works.

sha256  490fe92012bdea9e0db6c8d9f812c339afc98ce42f56c2b39d9648dd5a3302b6  Spool_0.6.0_aarch64.dmg
sha256  0029978b8cc8a6ad2383a8a3963e2ceadd5e40cb767198b07acb13392fdcb130  Spool_0.6.0_x64-setup.exe

Upgrading is safe and does nothing to your library. The database schema is unchanged from 0.5.0 (v23), so this build runs no migration at all: it opens the library you already have, exactly as it is.

New in 0.6.0

A break reminder that actually interrupts

Work long enough without a break and Spool locks its own window for five minutes: a countdown in the middle, the app dimmed behind it. You can end the break early with one click, or leave it alone and it lifts itself.

  • Settings → General → Break reminder turns it off, and sets how long a stretch of work is: 30, 60 or 120 minutes. Those are not round numbers picked by eye — they are the three schedules tested in the study quoted on that same settings page, which is also where the 60-minute default comes from.
  • The break is always five minutes, and is not adjustable. In the study, five minutes was the constant across all three schedules; it is the dose, not the timetable.
  • What counts as working is deliberately narrow: Spool has to be the front window and you have to have touched it in the last five minutes. Reading a long block without moving the mouse still counts. Stepping into another app for a couple of minutes pauses the streak instead of resetting it — copying something elsewhere and coming back is the whole point of this app — but the time you were away is not counted toward the hour.
  • Closing the laptop cannot hand you a fake streak. Time is credited a tick at a time, so a machine that slept for six hours contributes thirty seconds and then gets caught by the idle rule.
  • The five minutes you spend on a break do not count as work. When the lock lifts, the clock starts again from zero.

The capture panel now has a clock

The panel in the left rail that counts what you have captured takes turns with a small clock face showing the current stretch of work and how long is left before a break. The two faces only ever swap while Spool is not the front window, so you never watch one turn into the other. With the break reminder switched off, the panel just shows the counts, as before.

A second appearance

Settings → General → Appearance switches between Classic and Valentine's. Classic is not a theme — it is the same code path the shipped app has always used, and it is the default, so installing this build changes nothing until you go and switch. Valentine's is a full palette, a display serif, a watercolour background, and a heart in place of the spool meter; the capture card gets it too.

Fixed: translucent surfaces were not translucent

Around 119 class names across the app asked for a colour at partial opacity and were compiling to no rule at all, so those surfaces silently fell back to whatever was underneath. Dialog scrims, hover states and soft fills are now the weights they were designed to be. This is a visual fix only — nothing about behaviour or data changed.

Fixed: the capture card ignored your appearance

The capture overlay is a separate process and was never told which appearance you had chosen, so it stayed Classic inside a Valentine's build. It now follows the setting without a restart.


Spool itself still makes no network connections, and your data never leaves your machine. The optional maintenance jobs run in your own CLI subprocess (Claude Code, Codex CLI or Gemini CLI) — that process is the one that goes online, not Spool.

Spool 0.5.0 — Windows first release + one capture gesture on both platforms

Choose a tag to compare

@KIM-ocean-HZ KIM-ocean-HZ released this 18 Aug 15:15

Spool is a context hub for long-running projects: capture fragments the moment they appear, keep them threaded under one project, and pack any thread into a paste-ready briefing when you need to re-enter the project — or re-brief an AI.

v0.5.0 is the first release that runs on Windows. Alongside it, the capture gesture became the same on both platforms, follow-up grew a real closing move, workspaces can nest and be packed whole, and a library can now move to a new machine.

Download

WindowsSpool_0.5.0_x64-setup.exe · 5.3 MB · x64, Windows 10 or 11

macOSSpool_0.5.0_aarch64.dmg · 7.7 MB · Apple Silicon (M1 or later), macOS 11 or newer

The macOS build is signed and notarized with a Developer ID, so it opens without the "unidentified developer" warning. The Windows build is not code-signed in this first release — SmartScreen will show "Windows protected your PC"; open More info → Run anyway if you want to install it.

Spool-macOS-arm64.dmg and Spool-windows-x64-setup.exe are the same two files under fixed names, for direct-download links — either name works.

sha256  f2cfb2a565aafad7c7e3fa9a2481dd342562dd9550e51e6071080a101ed88239  Spool_0.5.0_aarch64.dmg
sha256  832408a44c3d3b8f38f52f1a07bce46a6f2e56ef71977496f06b8b6348fec571  Spool_0.5.0_x64-setup.exe

New in 0.5.0

Windows

Spool now builds, installs and runs on Windows: NSIS installer, tray icon that stays visible on a dark taskbar, closing the window goes to the tray (and says so the first time, instead of leaving you to guess where the app went), and the same MCP setup as on macOS.

Capture is triggered the same way on both platforms: double-tap a modifier key — ⌥ on macOS, Ctrl on Windows. The Windows implementation reads the key through Raw Input rather than a keyboard hook, which is what lets it work while antivirus software is watching for hook-based keyloggers. Neither platform ships with a key combination bound out of the box; if you want one, set it in Settings.

Capture and undo

  • Capture types straight into the note box again — three separate defects were stacking up, and browsers and Spool's own windows were each hitting a different one.
  • The capture card is positioned by the screen's usable area, so the menu bar no longer eats its top edge.
  • A block you wrote yourself can now be undone. In an empty input box, ⌘Z / Ctrl+Z means "undo my last action" rather than nothing at all.

Follow-up

Follow-up is a list of lines now, not a paragraph. Each line is either standing (keep watching this, forever) or one-off (close it once it has an answer), and an AI connected over MCP can both propose a new line and close one it answered — proposals wait on Spool's review screen for you to rule on, and a standing line refuses to be closed. Without that distinction, one answer would silently switch off a long-running watch.

Workspaces

  • Workspaces nest. Projects sort alphabetically, and the left rail supports multi-select and pointer-driven drag and drop.
  • Pack an entire workspace — exported as a real folder (INDEX.md plus one .md per project, sub-workspaces as sub-directories) that an AI can open a piece at a time, like a codebase. Nothing is summarized away to fit a budget.

Moving to a new machine

Settings → Advanced → Transfer exports the whole library and imports it on the other machine. Import merges; it does not replace what is already there.

Project files and provenance

  • A project holds files now, with a per-file switch for whether an AI may read the text; a locked file can be requested over MCP rather than mailed around.
  • Blocks carry where they came from: source URL, retrieved-on date, review-by date — and the workbench reminds you at two months, one month and a week before a review date.
  • Corrections got a proper interface, and a corrected block keeps its original wording.
  • MCP intent routing so a connected model actually finds the right tool, one-click setup that also writes the instructions file and two everyday prompts, and the tool surface grew from 14 to 19.

First-day value

The panel now shows what you have accumulated rather than an empty state, and it says plainly that Spool is fully functional without configuring MCP at all.


Spool itself still makes no network connections, and your data never leaves your machine. The optional maintenance jobs run in your own CLI subprocess (Claude Code, Codex CLI or Gemini CLI) — that process is the one that goes online, not Spool.

Spool 0.4.0 — maintenance, follow-up, and context hygiene

Choose a tag to compare

@KIM-ocean-HZ KIM-ocean-HZ released this 07 Aug 17:22

Spool is a context hub for long-running projects: capture fragments the moment they appear, keep them threaded under one project, and pack any thread into a paste-ready briefing when you need to re-enter the project — or re-brief an AI.

v0.4.0 is about what happens after a project gets long. A thread that has been running for months accumulates two problems a pack cannot solve on its own: it goes stale (something in there is no longer true, and nothing says so), and it gets confusing about authority (a source you trust and a note you jotted read the same in the pack). This release addresses both, and adds a way to put your own CLI to work on the library.

Download

Spool_0.4.0_aarch64.dmg · 7.5 MB · Apple Silicon (M1 or later), macOS 11 or newer

Signed and notarized with a Developer ID, so it opens without the "unidentified developer" warning. Spool-macOS-arm64.dmg is the same file under a fixed name for direct-download links — either one works.

sha256  933b9a7fb10a25f72cbd922c7c0a1d89fe02ef83b6a3885fba0dc0ec08b7df54

New in 0.4.0

Maintenance by your own CLI

If you already have Claude Code or Codex CLI installed and logged in, Spool can hand it four jobs over MCP: compress a bloated thread, find duplicates, follow up on the open web, and write a weekly review across every project. Spool detects the CLI itself — nothing to configure, no API key stored anywhere in Spool.

The right rail shows the run as it happens (streaming progress, not a spinner), keeps a record of what the AI actually wrote, and lets you cancel a run for real. There's a switch for automatic maintenance, off by default: it spends your subscription's tokens, so it asks first by staying off.

Follow-up

Write a few lines about what a project needs watched, and the engine goes and looks. New findings land in the review queue rather than straight into the thread. If nothing new turned up, it says nothing — a follow-up that reports "no change" every day trains you to ignore it.

Context hygiene

  • Retire a block — "this no longer applies." It disappears from packs, stays in the library, stays searchable. Append-only is not broken by it.
  • Partially correct a block — keep the block, attach what changed.
  • Annotations now record who wrote them. An AI-written note reads ai note: in the pack instead of impersonating your own.
  • Packs carry a short ## Notation header so the model reading it knows what the markers mean.

Writing back from an AI client

An MCP client can now propose a batch of blocks instead of writing them directly; you approve or reject them in Spool. Blocks written by an AI carry a source label that the client cannot forge.

Packing

The clipboard pack now includes the explanatory header by default, and the three pack types collapsed into one — plain context. Fewer choices that only the person who built it could have answered.

Your data stays on your machine

One SQLite file at ~/Library/Application Support/com.oceanjin.spool/spool.db. No cloud, no account, no telemetry.

Spool itself never goes online. Two things can send content off this machine, both off by default and both requiring you to turn them on — and in both, the program that goes online is one you installed and logged into yourself, not Spool:

  1. An MCP client you connect (Claude Desktop, Codex, Cursor…).
  2. The engine slot — the claude / codex subprocess running one of the four jobs above. Of those four, only follow-up searches the web; the other three run without web tools.

Spool stores no API keys, ships no AI of its own, and the app itself makes no HTTP requests.

Upgrading from 0.3.0

Replace the app and launch it. The database migrates itself and writes a snapshot next to it first. Fully quit and reopen every connected MCP client (⌘Q, not just closing the window) — a client still bound to the old binary will refuse to run and say the database is newer than it is. That's the guard working, not a fault.

Notes and limits

  • Apple Silicon only. No Intel build; Windows and Linux aren't shipped yet.
  • No auto-update channel. To upgrade, download the next .dmg and replace the app.
  • The engine slot needs a CLI you already pay for. If neither claude nor codex is installed, those four actions simply don't appear — everything else works exactly as before.

Spool 0.3.0 — first public release

Choose a tag to compare

@KIM-ocean-HZ KIM-ocean-HZ released this 30 Jul 05:48

Spool is a context hub for long-running projects: capture fragments the moment they appear, keep them threaded under one project, and pack any thread into a paste-ready briefing when you need to re-enter the project — or re-brief an AI.

This is the first public build. Free, offline, no account.

Download

Spool_0.3.0_aarch64.dmg · 7.2 MB · Apple Silicon (M1 or later), macOS 11 or newer

Signed and notarized with a Developer ID, so it opens without the "unidentified developer" warning.

sha256  5e68ecfebd93af7a31b92c472e7c3e1ddbcbf42b352e81cba2d18ad69cca854c

Install

  1. Open the .dmg and drag Spool into Applications. Launch it.
  2. macOS will ask for Input Monitoring. That permission is what lets the double-tap ⌥ capture work while you're in other apps. After granting it, fully quit Spool from the tray icon and reopen it — the grant only takes effect on the next launch.
  3. Optional but recommended: grant Accessibility as well. It keeps the double-tap gesture exclusive to Spool, so other apps listening for the same gesture don't fire at the same time.

The loop

  • Capture — select text in any app, press ⌘C, then double-tap ⌥. The fragment lands in your capture-target thread and a small overlay confirms it without pulling the main window forward. Long-press ⌥ for collect mode to queue several excerpts in a row.
  • Thread — an append-only timeline of fragments under one project. Two tiers only: Workspace → Thread. Opening a thread lands you at the newest blocks, which is where you left off.
  • Pack — ⌘⇧P assembles the thread into structured Markdown you can paste into any AI. Pure string assembly, no AI in the path, same input always gives the same output.

Your data stays on your machine

One SQLite file at ~/Library/Application Support/com.oceanjin.spool/spool.db. No cloud, no account, no telemetry. Spool ships no AI of its own and makes no network calls of its own.

Using it with an AI (optional)

Settings → General → MCP writes the config for Claude Desktop or Cursor in one click. Restart the client and it can read your library, search it, and — only if you switch writes on — file conclusions back. Blocks written by an AI carry a source label, so they stay distinguishable from your own notes.

Notes and limits

  • Apple Silicon only for this build. No Intel version yet; Windows and Linux aren't shipped yet either.
  • No auto-update channel. To upgrade, download the next .dmg and replace the app.
  • The interface is in 中文 by default; English is in Settings → General. The built-in tutorial thread is written in Chinese.
  • If capture stops working after you replace the app, check System Settings → Privacy & Security → Input Monitoring, re-grant Spool, then fully quit and reopen it.

Verified before release

Fresh-install smoke test on a clean data directory: first launch builds the database and seeds the tutorial threads, double-tap ⌥ capture writes to the capture target, pack and full-text search work with no configuration, and the tutorial threads stay deleted once you delete them. Gatekeeper checks (spctl, staple validation, syspolicy_check) pass on both the app and the .dmg.