v0.29.0 — Ramble box, dark-mode toggle, pantry pull reasons

- #10 Ramble box: new /ramble sticky-note board (post/pin/archive/delete),
  ported from FMB. New Ramble model + migration, /api/rambles routes, nav entry.
- #6 Dark-mode toggle: sun/moon button in the top bar (dark palette already
  existed in CSS, just had no control).
- #9 Pantry pull reason: structured disposition (Immediate use / Preserved /
  Gave away / Waste) on ItemLog.reason, added to single + bulk pull dialogs
  and the audit payload. New migration.
- #2 Suggestions: drop the stale white-card wrapper; render SuggestionsPanel
  bare like FMB so it's readable and thumbnails show.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-12 14:40:54 -05:00
parent 2ad9ac53f8
commit 083e2992c9
18 changed files with 499 additions and 10 deletions

View File

@@ -0,0 +1,2 @@
-- AlterTable
ALTER TABLE "ItemLog" ADD COLUMN "reason" TEXT;

View File

@@ -0,0 +1,14 @@
-- CreateTable
CREATE TABLE "Ramble" (
"id" TEXT NOT NULL,
"body" TEXT NOT NULL,
"pinned" BOOLEAN NOT NULL DEFAULT false,
"archivedAt" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Ramble_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "Ramble_pinned_archivedAt_createdAt_idx" ON "Ramble"("pinned", "archivedAt", "createdAt");

View File

@@ -72,6 +72,20 @@ model AuditEvent {
@@index([createdAt])
}
// Ramble box — sticky-note brain dump for stray homestead thoughts ("move the
// rhubarb", "oil the chainsaw"). Not a Task and not a Location leaf; just a
// free-text jot you pin, archive (soft), or delete (hard). Ported from FMB.
model Ramble {
id String @id @default(cuid())
body String
pinned Boolean @default(false)
archivedAt DateTime? // soft-archive; null = active
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@index([pinned, archivedAt, createdAt])
}
// ---------------------------------------------------------------------------
// Location — shared hierarchical place tree (garden areas, buildings, rooms,
// storage bins). The spine for Garden, Inventory, and Pantry. Plants/items/
@@ -437,6 +451,7 @@ model ItemLog {
notes String?
cost Decimal? @db.Decimal(10, 2)
amount Decimal? @db.Decimal(10, 2) // quantity consumed, for USED logs (same unit as the item)
reason String? // disposition for USED logs: consumed | preserved | gifted | waste (see pantry/core.ts)
actorId String?
createdAt DateTime @default(now())