v0.0.4
Breaking Changes
Move execution logs to schema v2 and simplify step state
Procnote no longer models starting and completing each individual step. Steps are now either present or skipped, and captured data can be recorded directly in any present step. Selecting the current step remains a UI concern rather than an event-sourced state transition.
Generic event reverts have also been replaced by explicit domain actions such as clearing an input, removing an attachment or note, unskipping a step, and reopening an execution. Each action appends its own typed event, making the audit trail and state-machine rules clearer.
These changes advance the event log format from schema v1 to schema v2. v0.0.4 cannot open schema-v1 execution logs created by v0.0.3, and no in-place migration is provided. Keep v0.0.3 available if you need to view those executions.
by @shunichironomura in #282, #287
New Features
Attach multiple files to one attachment input
Attachment inputs now support selecting and recording multiple files at once, adding more files later, removing individual files, or clearing the entire input. Batch additions and per-file removals are represented explicitly in the event log.
by @shunichironomura in #294
Upload attachments from another device with DropPoint
A configured DropPoint instance can now provide short-lived, encrypted QR-code uploads for attachment inputs. The sender uploads from another device, such as a phone; the relay stores ciphertext, and Procnote decrypts and imports the files locally as normal attachments.
The integration supports multi-file bundles, duplicate filenames, human-readable drop names for sender verification, persisted sessions, expiry handling, and retrying local imports after a transfer succeeds.
by @shunichironomura in #295, #299, #302, #305, #308
Maintain a human-readable Markdown snapshot for each execution
Each execution directory now contains a generated README.md projection of its current state. The snapshot includes execution metadata, steps, checkboxes, inputs, notes, attachment links, and previews for supported image attachments. It is refreshed after recorded actions while events.jsonl remains the source of truth.
by @shunichironomura in #314
Install a terminal-friendly CLI on Windows
The Windows NSIS installer now bundles a console-enabled procnote executable and adds its directory to the user PATH. Commands such as procnote --help and procnote --version therefore work in Windows terminals without suppressing their output.
by @shunichironomura in #154
Preserve nested checkbox structure
Nested Markdown task-list items now retain their nesting level and render with matching indentation in the execution UI and generated execution snapshots.
by @shunichironomura in #315
Security and Reliability
Strengthen append-only event log durability
Event-log writes now flush and sync file contents before returning, sync new directory entries, and serialize each read/replay/validate/append transaction with an advisory lock. New executions are assembled in a durable staging directory and atomically renamed into place. Attachments are copied, verified, and synced before their events are committed.
by @shunichironomura in #283
Harden parsing, state validation, filesystem access, and DropPoint transfers
Core template, event-log, and execution state-machine validation has been tightened. The Tauri shell now applies stricter CSP and IPC path validation, limits attachment access through explicit grants, resolves executions more safely, and improves filesystem durability. DropPoint cryptography, session handling, transfer limits, and imported bundle validation have also been hardened.
by @shunichironomura in #303, #304, #305, #307
Fixes and Improvements
- Show thumbnails for recorded image attachments and rename the remote-upload action to Upload via QR Code (by @shunichironomura in #300)
- Prevent Enter presses during IME composition from triggering actions prematurely (by @shunichironomura in #289)
- Prevent stale async actions from overwriting newer frontend state and make navigation safer (by @shunichironomura in #306)
- Fix the DropPoint button regression caused by attachment preview caching and harden attachment interactions (by @shunichironomura in #311, #312)
- Report the actual packaged application version from the CLI (by @shunichironomura in #351)
Documentation
- Update installation instructions and fix README examples (by @shunichironomura in #150, #249, #250)
- Build documentation on pull requests and deploy it from
main(by @shunichironomura in #155) - Document execution state machines and typed reversal events (by @shunichironomura in #277, #285, #286)
- Document DropPoint setup, security properties, configuration, and upload workflow (by @shunichironomura in #313)
- Add a table-rendering example procedure and fix documentation card rendering (by @shunichironomura in #274, #323)
Internal Changes
- Replace Biome with Vite+ formatting and linting through
oxfmtandoxlint(by @shunichironomura in #152) - Apply correctness fixes, consolidate CLI entry points, deduplicate frontend logic, and introduce shared modal and styling components (by @shunichironomura in #160, #161, #162, #163, #164, #309)
- Add CODEOWNERS and record code-review resolution evidence (by @shunichironomura in #252, #310)
- Freeze pre-commit hook revisions, pin the Rust toolchain, deny Rust warnings, and standardize
just lintandjust test(by @shunichironomura in #319, #326, #338, #339) - Harden GitHub Actions and update Homebrew tap integration (by @shunichironomura in #349, #350)
- Update the frontend toolchain and dependencies, including Vite 8, Node.js 24, TypeScript 6, pnpm 11, Svelte 5.56, SvelteKit 2.70, Tauri 2.11.5, and Rust 1.97 (by @renovate[bot] in multiple pull requests)
- Update GitHub Actions, Rust and JavaScript dependencies, and lock files (by @renovate[bot] in multiple pull requests)
- Bump version to v0.0.4 (by @shunichironomura in #352)
Full Changelog: v0.0.3...v0.0.4