Add laconic product guides for Grimoire 1.x - #207
Conversation
* fix: patch release-blocking inconsistencies - install.sh: default LITTLEIMP_VERSION to the current release (was 0.1.0-beta) - extractors: accept www.github.com URLs, restore .git suffix stripping, and send Grimoire/1.0.0 User-Agent from all fetchers - e2e: align mock daemon and specs with the real daemon version and repo URLs - embedding-repository: rebuild the sqlite-vec index in a single atomic transaction instead of thousands of per-row transactions on every boot - docs: refresh release-checklist.md and update-system.md version strings (0.1.0-beta -> 1.0.0) and align test fixtures * chore(release): publish 1.0.1 patch - Bump version identity to 1.0.1 across package manifests, install.sh, API/MCP contract, docs, e2e mocks, and test fixtures - Derive the outgoing User-Agent from the packaged version instead of hardcoding it, so fetchers stop drifting from the release version - Build release archives and fill the Homebrew formula and checksum baselines with the real 1.0.1 artifact SHAs - Add a 1.0.1 changelog entry; regenerate API docs
* fix: patch release-blocking inconsistencies - install.sh: default LITTLEIMP_VERSION to the current release (was 0.1.0-beta) - extractors: accept www.github.com URLs, restore .git suffix stripping, and send Grimoire/1.0.0 User-Agent from all fetchers - e2e: align mock daemon and specs with the real daemon version and repo URLs - embedding-repository: rebuild the sqlite-vec index in a single atomic transaction instead of thousands of per-row transactions on every boot - docs: refresh release-checklist.md and update-system.md version strings (0.1.0-beta -> 1.0.0) and align test fixtures * chore(release): publish 1.0.1 patch - Bump version identity to 1.0.1 across package manifests, install.sh, API/MCP contract, docs, e2e mocks, and test fixtures - Derive the outgoing User-Agent from the packaged version instead of hardcoding it, so fetchers stop drifting from the release version - Build release archives and fill the Homebrew formula and checksum baselines with the real 1.0.1 artifact SHAs - Add a 1.0.1 changelog entry; regenerate API docs
- Bump version identity to 1.1.0 across package manifests, install.sh, API/MCP contract, docs, e2e mocks, and test fixtures - Carry the 1.0.1 release-identity fixes onto the release branch: installer version default, Grimoire/<version> user-agents, www.github.com / .git handling, atomic sqlite-vec index rebuild - Build 1.1.0 release archives and fill the Homebrew formula and checksum baselines with the real artifact SHAs - Add a 1.1.0 changelog entry; regenerate API docs Co-authored-by: Robert Goniszewski <robertgoniszewski@outlook.com> Signed-off-by: Robert Goniszewski <robertgoniszewski@outlook.com>
Resolve all conflicts in favor of the 1.1.0 release branch (superset of the 1.0.1 content cherry-picked earlier plus the 1.1.0 version bumps). Co-authored-by: Robert Goniszewski <robertgoniszewski@outlook.com> Signed-off-by: Robert Goniszewski <robertgoniszewski@outlook.com>
Signs release/*.tar.gz with a detached gpg signature (key auto-detected from the repo git user.email), verifies, runs release:validate --require-signatures, and exports the public key + fingerprint. Co-authored-by: Robert Goniszewski <robertgoniszewski@outlook.com> Signed-off-by: Robert Goniszewski <robertgoniszewski@outlook.com>
Keep in-repo Markdown under docs/grimoire for GitHub readers while the published site lives at goniszewski.com/grimoire.
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
There was a problem hiding this comment.
馃挕 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ad64c269f8
鈩癸笍 About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 馃憤.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| new Promise<void>((resolve, reject) => { | ||
| if (readLater) store.markReadLater(id, { onSuccess: () => resolve(), onError: () => reject(new Error("failed")) }); | ||
| else store.clearReadLater(id, { onSuccess: () => resolve(), onError: () => reject(new Error("failed")) }); |
There was a problem hiding this comment.
Use mutateAsync for each bulk read-later update
When two or more bookmarks are selected, these promises wrap consecutive calls to the same updateBookmarkMutation.mutate and depend on its per-call callbacks. TanStack Query only retains the callbacks for the latest consecutive mutate call, so the earlier promises never settle and Promise.all never reaches either branch; the daemon updates may finish, but selection mode never exits and no result toast appears. Expose a mutateAsync-based operation or aggregate completion outside the shared mutation observer.
Useful? React with 馃憤聽/ 馃憥.
| }); | ||
| toast({ title: `Moved ${selectedIds.size} bookmark${selectedIds.size !== 1 ? "s" : ""} to "${category}"` }); | ||
| exitSelectionMode(); | ||
| void Promise.all(ids.map((id) => store.deleteBookmark(id))) |
There was a problem hiding this comment.
Preserve undo for partial bulk-delete successes
If one delete request fails after other requests have succeeded, Promise.all rejects and skips the only branch that offers Undo. The successfully deleted bookmarks therefore remain in trash while the UI reports only that the bulk operation failed and keeps the stale selection active. Track individual results with Promise.allSettled or otherwise expose the successful subset so users can undo or accurately understand the partial deletion.
Useful? React with 馃憤聽/ 馃憥.
| const bytes = new Uint8Array(await res.arrayBuffer()); | ||
| if (bytes.byteLength > MAX_UPGRADE_ARTIFACT_BYTES) { |
There was a problem hiding this comment.
Enforce the upgrade size cap while streaming
When an update server omits or understates Content-Length, arrayBuffer() buffers the complete archive before the byte-limit check runs. Because this occurs before checksum or signature verification, an attacker-controlled custom release endpoint鈥攐r a compromised upstream鈥攃an send an unbounded response and exhaust the CLI process's memory despite the advertised 512 MiB cap. Read and cancel the response stream once the running total exceeds the limit, as the page and model-catalog fetchers already do.
Useful? React with 馃憤聽/ 馃憥.
Use mutateAsync for bulk read-later, preserve undo on partial bulk deletes, and enforce upgrade artifact size limits while streaming.
|



Summary
docs/grimoire/(intro, quick start, usage, development, native install, remote access, FAQ)package.jsonhomepage to the published docs URLNote
This branch is based on
release-1.1.0, so the PR also includes the release commits not yet onmain. The docs commit itself is docs-only.Test plan
docs/grimoire/*.mdfor accuracy against implemented features