Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
44bea94
feat: settings dashboard, image controls, and in-app feedback
jamubc Jul 12, 2026
dff86b6
fix: guard bump-version against pathToFileURL on Windows
jamubc Sep 3, 2026
ffb7f90
feat: support Linux and fix WebKit rendering there
jamubc Sep 3, 2026
c8f3e1d
docs: add the work sequence and the portable vault design
jamubc Sep 3, 2026
2e5c2d7
docs: lift the whiteboard off 0.9.0 and split the rest into four units
jamubc Sep 3, 2026
8a576d8
refactor(settings): freeze the shared row primitives
jamubc Sep 6, 2026
a2e4072
docs(api): document the dashboard stats command
jamubc Sep 6, 2026
ce9a63f
docs(openspec): record the settings dashboard decisions
jamubc Sep 6, 2026
116d0c2
docs(openspec): confirm settings-dashboard test gate passes
jamubc Sep 19, 2026
1e9c725
refactor(editor): route toolbar image insert through attachmentMarkdown
jamubc Sep 19, 2026
f382b24
test(images): cover SettingsImages, imagePrefs, and linked-image cont…
jamubc Sep 19, 2026
835126c
docs(api): document image storage commands
jamubc Sep 19, 2026
588435c
docs(openspec): decide link mode vs vault portability, archive feat-i…
jamubc Sep 19, 2026
1659b7b
fix(openspec): correct the image-handling Rust test count
jamubc Sep 19, 2026
67882b8
feat(feedback): reveal the saved feedback log
jamubc Sep 19, 2026
0d2b808
fix(feedback): cap the message length in the GitHub issue URL
jamubc Sep 19, 2026
7f8afe0
test(feedback): cover SettingsFeedback and the GitHub URL truncation
jamubc Sep 19, 2026
77f8cbf
docs(api): document submit_feedback and open_feedback_log
jamubc Sep 19, 2026
5798630
docs(openspec): decide the feedback log's lifecycle, archive feat-in-…
jamubc Sep 19, 2026
f641e38
test(editor): add the missing per-note state isolation regression test
jamubc Sep 19, 2026
9e9d721
fix(editor): stop init() clobbering a setter called while it's in flight
jamubc Sep 19, 2026
6b54d0b
test(settings): cover SettingsEditor's toggle persistence and rendering
jamubc Sep 19, 2026
58926b2
test(links): cover modKeyCursor's cm-mod-held toggling
jamubc Sep 19, 2026
c5e5650
docs(openspec): archive feat-editor-settings-and-fixes
jamubc Sep 19, 2026
122e8b1
fix(openspec): include the recorded task detail in the archived file
jamubc Sep 19, 2026
8a6daad
fix(core): stop a newer-schema library from aborting the app on launch
jamubc Sep 19, 2026
eda7741
chore: add rust-analyzer to the pinned toolchain
jamubc Sep 19, 2026
dd735c0
docs(openspec): confirm the dashboard live-check, archive feat-settin…
jamubc Sep 19, 2026
f6f23c9
docs(openspec): archive feat-settings-dashboard
jamubc Sep 19, 2026
61cc414
chore: bump version to 0.9.0
jamubc Sep 19, 2026
c752c35
feat(core): add the vault file format and one-way export
jamubc Sep 22, 2026
6b3ee47
fix(store): break list_notes sort ties by note id
jamubc Sep 22, 2026
f811c76
feat(settings): export the library as a vault from Settings
jamubc Sep 22, 2026
e33c118
test(settings): cover the Vault page and the export flow
jamubc Sep 22, 2026
dad9af2
docs(api): document export_vault
jamubc Sep 22, 2026
e4ef7fc
docs(openspec): record vault stage 1 as landed in 0.9.0
jamubc Sep 22, 2026
f08915d
fix(store): open libraries from whiteboard pre-release builds
jamubc Sep 22, 2026
2fe6240
feat(core): mirror the library into a live vault folder
jamubc Sep 22, 2026
fbd6fa8
feat(vault): keep a live vault from Settings
jamubc Sep 22, 2026
58f11ec
test(settings): cover the live vault page and its report
jamubc Sep 22, 2026
58e0455
docs(api): document the vault mirror commands and event
jamubc Sep 22, 2026
47263ff
docs(data-model): document schema v4, v5, and the vault mirror
jamubc Sep 22, 2026
4e0bbef
docs(openspec): record vault stage 2 as built in 0.9.0
jamubc Sep 22, 2026
73f430d
chore: clear the clippy and rustfmt findings CI denies
jamubc Sep 22, 2026
6336500
docs(readme): list the vault and run every Rust test
jamubc Sep 22, 2026
4ecd0d4
feat(core): store whiteboard notes
jamubc Sep 22, 2026
44667c8
feat(vault): mirror whiteboards as .excalidraw files
jamubc Sep 22, 2026
f4cac79
feat(whiteboard): draw on whiteboard notes with Excalidraw
jamubc Sep 22, 2026
064b8e2
test(whiteboard): cover board saves, conversion, and the canvas
jamubc Sep 22, 2026
9b455e3
docs(api): document whiteboard fields and the New Whiteboard event
jamubc Sep 22, 2026
407ccc0
docs(data-model): document whiteboards and schema v6
jamubc Sep 22, 2026
e1576a7
docs(openspec): record whiteboards as shipped in 0.9.0
jamubc Sep 22, 2026
506a44e
feat(core): find and remove images no note uses
jamubc Sep 22, 2026
7f1b0e3
feat(images): delete a note's images with it, and clear leftovers
jamubc Sep 22, 2026
5dd7807
test(settings): cover removing unused images
jamubc Sep 22, 2026
9416abf
docs(api): document image cleanup
jamubc Sep 22, 2026
5c19acd
docs(openspec): record image cleanup as shipped in 0.9.0
jamubc Sep 22, 2026
58512d4
feat(core): derive the library graph
jamubc Sep 22, 2026
15c7367
feat(graph): draw the library as notes, tags, and Spaces
jamubc Sep 22, 2026
fbda4d2
test(graph): cover the layout, the view, and graph mode
jamubc Sep 22, 2026
a4dc847
docs(api): document library_graph
jamubc Sep 22, 2026
63d6e60
docs(openspec): record the graph view as shipped in 0.9.0
jamubc Sep 22, 2026
44ceb23
chore(dev): move vite dev port off the shared 1420 default
jamubc Sep 26, 2026
6197b97
chore(deps): bump plugin-updater, window-vibrancy, and rusqlite
jamubc Sep 26, 2026
b929158
feat: offer updates as a Space instead of a dialog
jamubc Sep 26, 2026
178bacf
chore: give error codes and event names one registry per language
jamubc Sep 26, 2026
7dcf291
docs(openspec): record the update notification as a 0.9.0 unit
jamubc Sep 26, 2026
7c30a60
docs(openspec): record how the open branches and dependabot PRs were …
jamubc Sep 26, 2026
be49765
feat: start a whiteboard from the note list toolbar
jamubc Sep 26, 2026
66bda1e
docs(changelog): date 0.9.0 and record the new whiteboard button
jamubc Sep 26, 2026
bdbac05
fix(changelog): parse the bundled file on a Windows checkout
jamubc Sep 26, 2026
5ce668c
test(changelog): build the CRLF fixture from either line ending
jamubc Sep 26, 2026
917dbd3
test(export): build the export-path fixtures per platform
jamubc Sep 26, 2026
eba8c66
feat(icons): rebrand the app icon as a bolt striking a note
jamubc Sep 30, 2026
779d12a
feat(stickies): pop a note out into its own sticky window
jamubc Oct 1, 2026
bfc7757
feat(agents): let any MCP agent read and write notes
jamubc Oct 1, 2026
c01172e
docs: start a technical debt register
jamubc Oct 1, 2026
71df242
fix(stickies): take an agent's edit in a sticky window
jamubc Oct 1, 2026
3e4aec4
fix(notes): keep markup and image paths out of derived titles
jamubc Oct 1, 2026
3fca352
feat(import): bring Apple Stickies into a Space
jamubc Oct 1, 2026
0a50a0a
chore: bring the source license and EULA from main into 0.9.0
jamubc Oct 1, 2026
94d6220
feat(license): ask for the license and EULA in a License Space
jamubc Oct 1, 2026
cfa7599
docs(changelog): tighten the 0.9.0 notes
jamubc Oct 1, 2026
a253503
chore: take the final installer art from installers
jamubc Oct 1, 2026
a77a928
chore: cut the 0.9.0 release
jamubc Oct 1, 2026
d2be670
chore: leave the core crate at its own version
jamubc Oct 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@ src-tauri/gen/

# local-only reference files
.hermes_guide.md

# Excalidraw fonts, copied in by scripts/copy-excalidraw-fonts.mjs
/static/excalidraw/
67 changes: 66 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,78 @@

All notable changes to InstantNotes are recorded here. The section for each
release becomes the GitHub release notes and the "What's new" text shown by the
in-app updater, so write it for users. Newest first.
in-app updater, written for users. Newest first.

Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); the app
uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.9.0] - 2026-09-30

### Added
- License and EULA: on first launch they open as two notes in a License Space;
agree to each to start. A new version of either asks again.
- Sticky notes (beta): pop any note or whiteboard out of the library into its own
small window and put it anywhere. Or Pop Out as Sticky (⌘⇧O).
- Import Apple Stickies (Mac): Settings > Import. Colors, formatting, images,
and dates come along; importing again brings in only new ones.
- Connect agents (Claude Code, Codex, Cursor) over MCP: Settings > Agents. Off
until you turn it on; read only or read and write.
- See an agent at work: what it reads or edits lights up as it happens. If you
are typing when it edits, your typing wins and you can restore theirs.
- Change Settings front page to settings dashboard + release notes reference
- Configure image settings: Modify how images behave.
- Added importing images.
- Configure UI settings: Show exact save time
- Contexting can rewrite images to their absolute path (new default)
- Send feedback from app (Github Issue) (beta)
- Vault: InstantNotes mirrors your notes as plain files in a folder you choose,
organized by Space. Open them in any editor, on any device, even with the app
closed. Edits sync within seconds; attachments are included and trashed notes
go to the vault's trash folder. Use a synced folder (iCloud, Dropbox) to reach
them elsewhere. "Check vault" verifies every file matches its note.
Note: syncing is one-way for now, so keep editing in the app.
"Export a copy" is still available for one-off backups.
- Whiteboards (beta): freeform canvases for boxes, arrows, frames, and sketches.
Create one from the chevron next to + in the note list, with Cmd+Shift+N, or
from the File menu. The command palette can convert an existing note; its text
moves onto the board. Board text is searchable and #tags still apply. Boards
save as standard .excalidraw files, in the vault and on export.
- Graph: a new sidebar view of how your notes, tags, and Spaces connect. It opens
centered on the current note. Hover to highlight connections; click to open a
note, filter by tag, or enter a Space.
- Changed update dialog into custom notification: a special "Update" Space.

### Fixed
- Images no longer pile up forever: deleting a note for good also deletes the
images only it used. Settings > Images shows how many images no note uses any
more and can remove them. Images used by notes in the Trash or the Archive
are always kept.
- A stray caret no longer lingers in notes you switch between: each note now
loads with its own clean editing state, and undo no longer reaches back into
the previously open note.
- Links set to open with Cmd/Ctrl+Click now show the pointer cursor while the
modifier is held, so it reads as clickable.
- Opening a notes library written by a newer version of InstantNotes no longer
crashes the app on launch. It now shows a message telling you to update
instead.
- A library touched by a pre-release build with the whiteboard now opens
instead of being refused as written by a newer version, and its boards open
as whiteboards again.
- Linux: fixed a blank or corrupted window on many systems, caused by the
WebKit compositor. The README now lists Linux prerequisites and Arch/CachyOS
build notes.
- The release script guards its Windows path check so cutting a release
no longer crashes there.
- The update dialog's "Remind me later" options are gone: an update is now a
place you can simply ignore rather than a reminder you have to silence.
- Note titles skip bold/italic markers and leading images.

### Changed
- A new app icon, New menu bar icon.
- Under the hood: error codes and event names each live in one place per side.

## [0.8.0] - 2026-07-11

### Added
Expand Down
31 changes: 26 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ Instantly externalize your writing. Capture and locate your thoughts.

- **Quick Capture:** Global hotkey (`Opt` / `Ctrl+Shift+Space`) with drafts.
- **Command Palette:** `Cmd/Ctrl+P` for actions, search, and themes.
- **Flexible Organization:** Group notes with Workspaces and `#inline` tags instead of strict folders.
- **Flexible Organization:** Group notes with Spaces and `#inline` tags instead of strict folders.
- **Plain Markdown Vault:** Keep a live copy of every note as a Markdown file in a folder you choose, readable in any editor.
- **100% Local & Private:** Everything lives in a local SQLite database. Zero telemetry.

## Installation
Expand Down Expand Up @@ -36,11 +37,31 @@ To build from source instead

### Prerequisites

- macOS, Windows
- macOS, Windows, Linux
- [Rust](https://rustup.rs/) via rustup (the version is pinned by `rust-toolchain.toml`)
- Node.js 22+
- Windows: the Visual Studio Build Tools with the C++ workload

<details>
<summary>Arch / CachyOS Linux</summary>

Install system dependencies:
```sh
paru -S --needed webkit2gtk-4.1 base-devel openssl libayatana-appindicator librsvg squashfs-tools
```

If using system `rust` instead of `rustup`, configure `~/.cargo/config.toml`:
```toml
[target.x86_64-unknown-linux-gnu]
linker = "gcc"
```

To build local bundles (`npm run tauri build`):
```sh
NO_STRIP=1 npm run tauri build -- --config '{"bundle":{"createUpdaterArtifacts":false}}'
```
</details>

### Run the app

```sh
Expand All @@ -51,9 +72,9 @@ npm run tauri:dev
### Test

```sh
cargo test --manifest-path src-tauri/Cargo.toml # Rust core tests
npm run check # type-check frontend (runs svelte-kit sync)
npm test # frontend unit tests (Vitest)
cargo test --workspace --manifest-path src-tauri/Cargo.toml # Rust tests (app and core)
npm run check # type-check frontend (runs svelte-kit sync)
npm test # frontend unit tests (Vitest)
```

### Build
Expand Down
Loading
Loading