Tags: richlander/shelf
Tags
Add --url option to put command (#6) * Add --url option to put command Items can now store a URL — the most natural metadata for articles, posts, and web content. Shown in query output and stored in the markdown table. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add find command for partial text search Searches across name, ID, keywords, and URL with case-insensitive substring matching. Supports --domain filter. Deduplicates across books. From usability testing: `shelf query "Agent"` and `shelf query "github identity"` both failed because query requires exact ID. `shelf find "Agent"` now works. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Bump version to 0.3.0 New features: --url on put, find command. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use GeneratedRegex, SearchValues, and span-based parsing (#4) * Use GeneratedRegex, SearchValues, and span-based parsing - ItemStore.Canonicalize: GeneratedRegex replaces Regex.Replace for AOT-friendly, zero-startup-cost pattern matching - SimHash: SearchValues<char> for whitespace tokenization - MarkdownTableStore.ParseRow: span-based pipe splitting avoids ToString().Split() intermediate allocation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Bump version to 0.2.1 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Shard storage by source: books on the shelf (#3) * Shard storage by source: books on the shelf Each source is a "book" — items/journal.md for personal preferences, items/musicbrainz.md for enrichment data, etc. The same entity can exist in multiple books without clobbering. - ShelfItems/ShelfRelationships: composite stores that lazy-load per-source shards following the SeenStore pattern - Default source renamed from "user" to "journal" - Query merges keywords from all books, shows source provenance - Reset deletes a book's files atomically; refuses to reset journal - ShelfMigration: one-time migration from legacy single-file layout - New verbs: member-of (for band membership traversal) - Status shows per-shard counts Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Bump version to 0.2.0 Breaking: storage layout changed from single files to per-source shards. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix markdownlint errors in design doc Wrap long lines, add language to fenced code blocks. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add shelf implementation: phases 1-6 (#1) * Add seen-set (bloom filter), SimHash, and rename remove → pull Phase 3: per-domain bloom filter seen-set with binary persistence and metadata JSON. `shelf seen` command checks/marks items. Phase 5: SimHash for future fuzzy matching. Rename `remove` to `pull` as the natural opposite of `put`. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Enable Native AOT publishing 3.7 MB self-contained binary, <1ms startup. ~13x faster than managed global tool, ~370x faster than dotnet run. Zero AOT trim/compile warnings. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix ID generation, name resolution, and rename remove → pull - Canonicalize produces clean short IDs: truncate at 30 chars with 4-char hash suffix for long names (e.g. "show-hn-i-built-a-personal-6e13") - Get/Remove accept either display names or IDs without double-canonicalizing - Query view resolves target IDs to display names - Link command output shows display names instead of IDs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Add CI/release workflows, install.sh, and NuGet packaging CI workflow: change detection, markdownlint, multi-platform build with NAOT publish (5 RIDs), smoke tests, pack (pointer + any + RID-specific AOT + Shelf.Core library package). Release workflow: download CI artifacts, publish to NuGet.org and GitHub Packages via OIDC, create GitHub Release with binaries. install.sh: prefers dotnet-install if available, otherwise downloads pre-built NAOT binary from GitHub Releases. Shelf.App: added ToolPackageRuntimeIdentifiers and AOT size opts. Shelf.Core: added NuGet packaging properties. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Fix markdownlint errors in SKILL.md Line length, fenced code language, blank line before list. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>