diff --git a/docs/release-notes/v1.1.0.md b/docs/release-notes/v1.1.0.md new file mode 100644 index 0000000..65e9d46 --- /dev/null +++ b/docs/release-notes/v1.1.0.md @@ -0,0 +1,36 @@ +# Quill v1.1.0 + +**Share a clean copy, and a hardened 1.0.** + +The headline is **Export to PDF** — hand someone the finished document without handing over Quill. Underneath it, this release puts real weight behind the security posture promised at 1.0: file access is confined, deep links and URLs are validated, and saved review data is checked before it's trusted. Plus local diagnostics for when something does go wrong. + +## Highlights + +- **Export to PDF (Cmd+P)** — **File → Export to PDF…** produces a **clean copy** of the document: pending suggestions render as accepted, and comment highlights and track-changes marks are left out — the reader sees the finished text, not the review. Pick **Save as PDF** in the print dialog that opens. Built for sharing with someone who doesn't have Quill; a review-copy export (with the marks intact) is a deliberate non-goal for now. +- **Local diagnostics** — Quill now keeps a rolling log file, and the **Help** menu offers **Copy Diagnostics** (app version, OS, and the log path, ready to paste into an issue) and **Show Logs** (opens the log folder). Rust panics are captured to the log too, so a crash leaves a trail. +- **Security hardening** — a focused pass before wider release: + - File-read/-write commands are confined to expected locations, and `quill://open` deep-link targets are validated before they're acted on. + - Link and update-banner URLs are restricted to safe schemes (no `javascript:` / `file:` surprises from document content). + - Comments and suggestions loaded from a `.comments.json` sidecar are validated before they're trusted — a malformed or hostile sidecar can't smuggle bad data into the editor. + - The `@claude` CLI is resolved through a hardened lookup path. + - A new [SECURITY.md](https://github.com/sam-powers/quill/blob/main/SECURITY.md) documents the threat model, the hardening, and the judgment calls — with a disclosure contact for reporting issues. + +Documents and sidecars remain fully compatible with every previous release in both directions. + +## Install + +| Platform | Asset | +| --------------------- | --------------- | +| macOS (Apple Silicon) | `…_aarch64.dmg` | +| macOS (Intel) | `…_x64.dmg` | + +Builds are **unsigned**: right-click **Quill.app** → **Open** → **Open** on first launch. + +The `@claude` features require the [Claude Code](https://claude.com/claude-code) CLI on the same machine. See the [User Guide](https://github.com/sam-powers/quill/blob/main/docs/USER_GUIDE.md) for a walkthrough. + +## Known limitations + +- macOS only for now. The `@claude` integration finds the Claude CLI via Unix paths; rather than ship a partial experience, Windows and Linux installers are deferred (both platforms can [build from source](https://github.com/sam-powers/quill#building-from-source)). +- No code signing yet (Gatekeeper warning above). +- Single document per window; no multi-user collaboration or cloud sync. +- **Export to PDF** goes through the system print dialog (Save as PDF) and produces a clean copy only — there's no marks-intact "review copy" export. diff --git a/package.json b/package.json index 2bc9822..30d2c13 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "quill", "private": true, - "version": "1.0.0", + "version": "1.1.0", "description": "The document editor that can hold a conversation — tracked changes, inline comments, and Claude replies for plain Markdown files.", "author": "Sam Powers ", "license": "Apache-2.0", diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 56c2b36..0e7df36 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2881,7 +2881,7 @@ dependencies = [ [[package]] name = "quill" -version = "1.0.0" +version = "1.1.0" dependencies = [ "dirs 5.0.1", "log", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index f6a87a3..318dc1e 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "quill" -version = "1.0.0" +version = "1.1.0" description = "The document editor that can hold a conversation — tracked changes, inline comments, and Claude replies for plain Markdown files." authors = ["Sam Powers "] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index a14e62d..97d56eb 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Quill", - "version": "1.0.0", + "version": "1.1.0", "identifier": "io.github.sam-powers.quill", "build": { "beforeDevCommand": "npm run dev",