All notable changes to Shelf are documented in this file.
The format follows Keep a Changelog conventions. Versioning follows Semantic Versioning.
Changes staged for the next release.
- Import / Export collections as JSON
- Drag-and-drop reordering of items
- Cover art auto-fetching via OMDB / Open Library APIs
- Cloud sync (optional, opt-in)
- Keyboard navigation support
- Bulk item actions (delete, move, tag)
- Custom field ordering within a collection
0.1.0 — 2026-02-14
This is the initial public release of Shelf.
feat: Initialize Shelf application with Vite
Full application scaffold created from scratch:
Collections
- Create custom collections with a name, icon, and color theme
- Choose from 10 icons (Library, Film, Music, Utensils, Plane, Lightbulb, BookOpen, Camera, Coffee, Heart)
- Choose from 5 color themes (Stone, Amber, Rose, Indigo, Emerald)
- Add an optional description to each collection
- Build a custom field schema per collection using the Collection creation modal
Items
- Add, edit, and delete items within any collection
- 11 supported field types:
text— single-line text inputlong_text— multi-line textarearating— interactive 1–5 star selectorstatus— button-group selector from predefined optionstags— comma-separated tag listurl— URL / link fielddate— native HTML date pickerimage— image URL with card previewtoggle— boolean on/off switchselect— generic option picker
- Mark/unmark any item as a favourite
- All items track a
dateAddedtimestamp automatically
Search, Filter & Sort
- Real-time full-text search across all field values
- Filter by collection, view All Items, or browse Favourites
- Sort options: Newest first, Oldest first, Title (A–Z), Highest Rated
UI & Responsive Design
- Dark and Light mode toggle
- Responsive layout — fixed sidebar on desktop, slide-out drawer on mobile
- Masonry card grid (1 → 2 → 3 → 4 columns at breakpoints)
ItemCardwith cover image, star rating, status badge, tags, and favourite indicatorItemModal— slide-in right panel for creating and editing itemsCollectionModal— dialog with schema builder for new collections- Reusable component library:
Button,Input,Textarea,Modal,Badge,Sheet,Icon - Hover effects (image zoom, gradient overlay) and smooth CSS transitions
Data Persistence
- All data stored in
localStorageunder the keyshelf-app-data-v1 - Custom
useStickyStateReact hook syncs state to localStorage on every change - Seed data pre-loaded on first launch:
- Films to Watch collection (2 sample films: Interstellar, Past Lives)
- Library collection (2 sample books: Dune, The Design of Everyday Things)
Files introduced:
App.tsx
index.tsx
index.html
types.ts
constants.ts
package.json
tsconfig.json
vite.config.ts
.gitignore
metadata.json
components/UI.tsx
components/Sidebar.tsx
components/ItemCard.tsx
components/ItemModal.tsx
components/CollectionModal.tsx
feat: Update dependencies and build configuration
- Upgraded React to 18.2, Vite to 5.1, TypeScript to 5.2
- Added
uuidpackage for deterministic unique ID generation (replacesMath.random()approach) - Added
clsxandtailwind-mergefor robust conditional class name handling - Updated build script to run
tsc(type-check) beforevite build - Refactored
vite.config.tsfor improved clarity - Bumped
tsconfig.jsoncompiler options to target ES2020
Files changed:
constants.ts
index.html
package.json
tsconfig.json
vite.config.ts
0.0.0 — 2026-02-14
Initial commit
- Created the GitHub repository
- Added base
README.md(placeholder from AI Studio template)