ginnoir
7bf4a801b3
chore: release v0.6.5
CI / checks (push) Has been skipped
Release Image / build-and-push (push) Successful in 7m19s
2026-07-09 00:38:50 -05:00
ginnoir
3e8fe2d06d
fix(agent): call api v1 via loopback instead of public url
...
CI / checks (push) Has been cancelled
Tool self-fetches were hairpinning to fam.ginnoir.com and failing,
so list_calendars/create_event returned 500 and the model gave up.
2026-07-09 00:38:33 -05:00
ginnoir
60eb101015
chore: release v0.6.4
CI / checks (push) Has been skipped
Release Image / build-and-push (push) Successful in 7m30s
2026-07-08 22:51:47 -05:00
ginnoir
72d123b9a0
fix(agent): stop tool thrash after writes and log rounds
...
CI / checks (push) Has been cancelled
Cap get_api_docs, break duplicate tool rounds, force a reply after
successful writes, and log each tool call so limit hits are diagnosable.
2026-07-08 22:51:31 -05:00
ginnoir
9bf8e508c7
chore: release v0.6.3
CI / checks (push) Has been skipped
Release Image / build-and-push (push) Successful in 8m55s
2026-07-08 21:41:06 -05:00
ginnoir
d3e79edb9e
fix(agent): raise tool rounds and ease calendar creates
...
CI / checks (push) Has been cancelled
Local models were burning the 8-round budget on simple event adds.
Raise the limit, resolve calendars by name/default, and inject the
household clock so relative dates work.
2026-07-08 21:40:44 -05:00
ginnoir
ea371b8085
chore: release v0.6.2
CI / checks (push) Has been skipped
Release Image / build-and-push (push) Successful in 9m6s
2026-07-08 20:46:44 -05:00
ginnoir
c8a7160ef2
chore: ignore local worktrees in checks
2026-07-08 20:46:02 -05:00
ginnoir
49732b02f3
fix(agent): move route selector to settings
2026-07-08 19:58:48 -05:00
ginnoir
ec3f96dab1
feat(agent): let users choose model route
2026-07-08 19:50:46 -05:00
ginnoir
b279f16ba0
feat(agent): refresh assistant model catalog
2026-07-08 19:37:17 -05:00
ginnoir
4dc04b21d6
fix(agent): hide unrelated models for alias fallback
2026-07-08 19:07:57 -05:00
ginnoir
bb679d02be
fix(agent): improve model selector legibility
2026-07-08 18:59:41 -05:00
ginnoir
716bca0fcb
fix(agent): use native model selector
2026-07-08 18:52:19 -05:00
ginnoir
1092941c45
test: stabilize assistant e2e
2026-07-08 17:48:06 -05:00
ginnoir
4c82d551ea
feat(agent): add assistant model selector
2026-07-08 16:46:53 -05:00
ginnoir
27db599444
feat(agent): expose available assistant models
2026-07-08 16:43:22 -05:00
ginnoir
3983c30fe1
fix(agent): reject padded assistant model ids
2026-07-08 16:39:01 -05:00
ginnoir
9b7a04431c
feat(agent): route chat through selected model
2026-07-08 16:34:22 -05:00
ginnoir
bf7e07ead9
feat(agent): persist assistant model preference
2026-07-08 16:24:01 -05:00
ginnoir
876e72671a
fix(agent): validate assistant model requests
2026-07-08 16:15:19 -05:00
ginnoir
0bf63cf8a8
feat(agent): add llm model discovery helper
2026-07-08 16:11:22 -05:00
ginnoir
eb8e562565
docs: plan assistant model selector
2026-07-08 16:05:28 -05:00
ginnoir
1a58ef993e
docs: specify assistant model selector
2026-07-08 15:58:48 -05:00
ginnoir
7c6b8d7c37
ci: install docker buildx plugin for gitea release build
...
CI / checks (push) Failing after 3s
Debian docker.io ships no buildx plugin, so the registry-cache
build failed when the runner CLI fell back to it. Install
Docker's official CLI plus buildx plugin instead.
2026-07-05 02:09:41 -05:00
ginnoir
3a5c6d056c
chore: release v0.6.1
CI / checks (push) Has been skipped
Release Image / build-and-push (push) Failing after 45s
2026-07-05 02:02:07 -05:00
ginnoir
c8db5475d3
feat(agent): add voice input and photo attachments to assistant
...
Wire mic through Whisper-compatible transcriptions on LLM_BASE_URL.
Photos upload to MinIO and reach the vision model as base64 image_url parts.
2026-07-05 02:01:48 -05:00
ginnoir
876a283d47
ci: faster pipelines with checks-only ci and registry build cache
...
CI / checks (push) Failing after 2m8s
Drop duplicate Next.js builds from CI, skip release commits, and cancel stale runs.
Cache pnpm on runners and use buildx registry cache for releases.
2026-07-04 23:54:53 -05:00
ginnoir
c80070f5c3
ci: skip workflow on docs-only changes
...
CI / checks (push) Failing after 2m15s
CI / build (push) Failing after 12m59s
Ignore pushes and PRs that only touch markdown or docs/ so the runner queue stays clear.
2026-07-04 23:40:10 -05:00
ginnoir
a58a91d8b8
chore: release v0.6.0
CI / checks (push) Failing after 3m1s
CI / build (push) Successful in 5m17s
Release Image / build-and-push (push) Successful in 6m32s
2026-07-04 23:26:40 -05:00
ginnoir
e5e509081c
feat: per-user assistant name and system prompt customization
...
CI / checks (push) Failing after 2m12s
CI / build (push) Successful in 4m50s
Each user can rename the AI assistant and edit their own system prompt in Settings.
2026-07-04 23:26:17 -05:00
ginnoir
a2e5eb111d
docs: registry is primary image source, ghcr is backup mirror
CI / checks (push) Failing after 2m34s
CI / build (push) Successful in 4m38s
2026-07-04 23:03:56 -05:00
ginnoir
cf50f20714
docs: record v0.5.6 prod deploy and migration repair
CI / checks (push) Failing after 2m13s
CI / build (push) Successful in 4m36s
2026-07-04 22:49:34 -05:00
ginnoir
fd338384b7
chore: release v0.5.6
CI / checks (push) Failing after 2m11s
CI / build (push) Successful in 4m41s
Release Image / build-and-push (push) Successful in 6m22s
2026-07-04 22:43:01 -05:00
ginnoir
de738274fa
fix: add build-time env vars to docker image build
CI / checks (push) Failing after 2m12s
CI / build (push) Successful in 4m40s
2026-07-04 22:42:53 -05:00
ginnoir
9d13d6a430
chore: release v0.5.5
CI / checks (push) Failing after 2m11s
CI / build (push) Successful in 4m40s
Release Image / build-and-push (push) Failing after 4m8s
2026-07-04 22:40:11 -05:00
ginnoir
060a2f19a9
chore: release v0.5.4
CI / checks (push) Failing after 2m12s
CI / build (push) Successful in 4m39s
2026-07-04 22:39:45 -05:00
ginnoir
6183fb62c8
fix: dashboard edit previews, migration journal, and notes comments
...
CI / checks (push) Failing after 2m8s
CI / build (push) Successful in 4m42s
Register drizzle journal entries for 0022/0023 so prod migrations apply.
Key edit-mode widget previews by index so bangs.stats shows live data.
Add comments to notes detail pages.
2026-07-04 22:39:21 -05:00
ginnoir
9e66c12eb7
docs: add commit hash for p2 batch 28-31 in status
2026-07-04 22:17:49 -05:00
ginnoir
e1c2a090fb
feat: p2 batch 28-31 reminders lists comments bang stats
...
Calendar events support multiple reminder offsets with presets and per-user defaults.
Lists index adds inline task entry and list property editing.
Generic entity comments on list detail. New bangs.stats dashboard widget.
Closes Gitea #28 , #29 , #30 , #31 . Migrations 0022 and 0023.
2026-07-04 22:17:35 -05:00
ginnoir
7714b1187c
docs: record journal polish commit in status
CI / checks (push) Failing after 2m7s
CI / build (push) Successful in 4m35s
2026-07-04 22:04:10 -05:00
ginnoir
a09747c314
feat: journal dashboard widgets, agent polish, and edit-mode live previews
...
CI / checks (push) Failing after 2m7s
CI / build (push) Successful in 4m36s
Journal dashboard widgets and quick-add; rich-text quick-add dialogs.
Dashboard draft sync for live edit previews; assistant bubble + API tools.
Journal UX: stress slider, mood grid, query cap fix.
2026-07-04 22:03:45 -05:00
ginnoir
4a924a4107
feat(agent): add llm assistant chat with api tools (task 88)
...
OpenAI-compatible client with mock fallback, tool-calling loop, and /assistant UI.
Tools map to /api/v1/ endpoints per ADR 0006 direct-tools decision.
2026-07-04 19:46:09 -05:00
ginnoir
04ae809e07
feat(journal): add per-user mood journal module (task 86)
...
Ship journal entries with mood tracking, insights, and Recharts charts.
Adds v1 API endpoints per ADR 0005 and migration 0020_journal_entries.
2026-07-04 19:41:15 -05:00
ginnoir
8e2ddd6b72
docs: accept adr 0005 journal module decisions
2026-07-04 19:37:19 -05:00
ginnoir
a4be5d5061
feat(notes): rich-text editor with tiptap (task 85)
...
Replace plain textarea with shared tiptap editor and sanitized html rendering.
Adds interactive checklists on read surfaces and mobile overflow fixes.
2026-07-04 19:25:15 -05:00
ginnoir
67f67525ff
docs: accept adr 0004 rich-text editor decisions
2026-07-04 19:20:29 -05:00
ginnoir
fb67692a08
docs: mark task 87 done in status
2026-07-04 19:14:00 -05:00
ginnoir
e8d13bede8
feat: api v1 garden bangs routes and openapi
2026-07-04 19:13:49 -05:00
ginnoir
d4304b005c
feat: api v1 routes for calendar lists and notes
2026-07-04 19:03:08 -05:00
ginnoir
ea5d1d050c
feat: household api token auth foundation
2026-07-04 18:57:31 -05:00
ginnoir
2c0c31540e
docs: accept adr 0006 api and agent architecture
2026-07-04 18:54:27 -05:00
ginnoir
5e711cfe0d
docs: mark task 84 done, bugs batch complete
2026-07-04 18:23:48 -05:00
ginnoir
d090200ec8
feat: shared back navigation on detail pages
2026-07-04 18:23:15 -05:00
ginnoir
1a1c080d18
docs: mark task 83 done in status
2026-07-04 18:21:04 -05:00
ginnoir
753f653b89
feat: bang edit and delete
2026-07-04 18:20:38 -05:00
ginnoir
1a03763e1b
docs: mark task 82 done in status
2026-07-04 18:16:27 -05:00
ginnoir
700ee29f83
fix: garden container plant count
2026-07-04 18:15:54 -05:00
ginnoir
7eeb2f15bc
fix: dashboard edit mode renders live widgets
2026-07-04 18:10:55 -05:00
ginnoir
02b6ec6adb
test: cover all quick-add create dialogs in e2e
...
CI / checks (push) Failing after 1m56s
CI / build (push) Successful in 3m42s
Add data-driven FAB tests for all ten quick-add actions plus cmd-k new event.
2026-07-04 11:53:07 -05:00
ginnoir
68a573c4d6
fix: quick add opens create ui
...
Add createKey to quick-add manifests and client create dialog host.
FAB and command palette open in-place create UIs instead of navigating away.
2026-07-04 11:47:35 -05:00
ginnoir
76f68548b2
docs: complete Phase 9 backlog triage (issues map, briefs, ADRs)
...
Map design IDs to Gitea #1-#37, add tasks 80-88, stub ADRs 0004-0006,
and point STATUS at the P1 batch order.
2026-07-04 01:23:30 -05:00
ginnoir
5dfc8b8034
chore: ignore .worktrees for agent isolation
2026-07-03 23:50:43 -05:00
ginnoir
310ba48e33
docs: add backlog triage implementation plan
...
Executable steps for Gitea issues, P1 task briefs 80-88,
ADR stubs, and STATUS Phase 9 updates.
2026-07-03 22:31:10 -05:00
ginnoir
72e868dda1
docs: add post-v0.1 backlog triage design
...
Capture approved issue map, P1 batch order, E2E plans,
and implementation-pass scope for the next work batch.
2026-07-03 22:26:35 -05:00
ginnoir
3d825fba20
chore: vendor react-best-practices agent skill for cursor agents
...
CI / checks (push) Successful in 1m51s
CI / build (push) Successful in 3m34s
Adds the Vercel skill under .agents with famapp path patterns.
Includes skills-lock.json pin.
2026-07-03 03:33:57 -05:00
ginnoir and Claude Sonnet 4.6
9c60b58947
ci(release): fix env var names for act_runner compatibility
...
CI / checks (push) Successful in 1m44s
CI / build (push) Successful in 3m28s
Release Image / build-and-push (push) Successful in 5m21s
gitea act_runner exposes GITHUB_* not GITEA_* variable aliases;
switch to GITHUB_REF_NAME and GITHUB_OUTPUT so tag extraction works.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 00:22:44 -05:00
ginnoir and Claude Sonnet 4.6
4084c3af91
ci: publish famapp images to valhalla registry
...
CI / checks (push) Successful in 1m46s
CI / build (push) Successful in 2m45s
Release Image / build-and-push (push) Failing after 49s
Add Gitea Actions workflows (ci.yml, release.yml) that build and push
to registry.ginnoir.com. Disable GitHub release creation. Update all
doc/compose references from ghcr.io to registry.ginnoir.com.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 00:16:27 -05:00
ginnoir and Claude Sonnet 4.6
4f92a98921
docs: add drizzle-best-practices to regular agent skills
...
CI / checks (push) Successful in 11m6s
CI / build (push) Successful in 13m28s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-13 05:33:07 -05:00
ginnoir
a312d4ce39
fix: tighten sharing and shadcn composition
CI / checks (push) Successful in 12m55s
CI / build (push) Successful in 15m16s
2026-06-13 05:20:01 -05:00
ginnoir
e1774c802d
refactor(garden): replace hand-rolled badge classes with shadcn Badge
2026-06-13 03:31:37 -05:00
ginnoir
55b0e68b35
feat(shadcn): install 10 missing components
2026-06-13 03:08:56 -05:00
ginnoir
615d9c9377
fix: declare unlisted dependencies surfaced by knip
...
CI / checks (push) Has been cancelled
CI / build (push) Has been cancelled
sharp (icon script), @auth/core (adapter types in _core/schema),
react-resizable (css imported by dashboard-editor), and server-only
were imported but undeclared, resolving only via pnpm hoisting.
2026-06-09 15:55:36 -05:00
ginnoir
944dcdf48f
refactor: remove dead code identified by knip
...
Delete unused Fab component (superseded by QuickAddFab), unused server
actions and queries (listDashboards, reorderDashboards, deleteCareLog,
canAccessContainer, getOverduePlants, getCareDueSoon, addItemToDefaultList,
reorderItems, getOrCreateDefaultList), unused helpers (getCurrentUser,
BrandWordmark, TopbarSpacer, DEV_LOGIN_COOKIE, no-arg ensureDefault*
wrappers, addListItem re-export), and drop export keyword from five
internal-only functions.
Verified with typecheck, eslint, and production build after each removal.
2026-06-09 15:55:21 -05:00
ginnoir
d4ac20f511
docs: link homelabstack infra repo in claude.md
CI / checks (push) Has been cancelled
CI / build (push) Has been cancelled
2026-06-03 22:14:05 -05:00
ginnoir
fd97eb306d
fix: list item checkbox/delete broken by pointer capture, badge wrapping
...
setPointerCapture on the swipe row div was swallowing click events from
child buttons; guard now bails early when the pointer originates from a
button or input. Also added whitespace-nowrap + shrink-0 to the list
type/count badge to prevent it wrapping across two lines.
2026-06-03 22:01:33 -05:00
ginnoir
a12208d2fe
chore: release v0.5.3
Release / build-and-push (push) Has been cancelled
2026-06-03 20:18:21 -05:00
ginnoir
14175d3faa
fix: use next_public_app_url for share link base url instead of localhost fallback
2026-06-03 20:16:59 -05:00
ginnoir
c3e78932fe
chore: release v0.5.2
Release / build-and-push (push) Has been cancelled
2026-06-03 20:06:55 -05:00
ginnoir
a332935ba7
fix: render dashboard greeting and date client-side to respect local timezone
2026-06-03 20:06:25 -05:00
ginnoir
51c8d3c92d
chore: release v0.5.1
Release / build-and-push (push) Has been cancelled
2026-06-03 19:55:57 -05:00
ginnoir
62c3d33350
fix: dashboard switcher, platform-aware search shortcut, mobile search, static topbar
...
- Always show dashboard tab strip + add button (was gated behind length > 1)
- Search shortcut now shows Ctrl+K on Windows/Linux, ⌘K on Mac
- Add icon-only search button in topbar for mobile viewports
- Lock html/body overflow and use 100dvh to prevent topbar scrolling off-screen on mobile
2026-06-03 19:55:00 -05:00
ginnoir
2408d37f8e
chore: release v0.5.0
Release / build-and-push (push) Has been cancelled
2026-06-03 19:20:37 -05:00
ginnoir
f47c1c3a23
fix: replace settings mobile tabs with 2-col grid and remove fab
2026-06-03 19:17:17 -05:00
ginnoir
6e92648a41
feat: mobile experience overhaul — touch targets, calendar mobile layout, swipe gestures
2026-06-03 18:50:15 -05:00
ginnoir
6802ae08db
fix: db:seed script points to seed.mjs not nonexistent seed.ts
2026-06-03 16:19:29 -05:00
ginnoir
b935ff209c
chore: release v0.4.10
Release / build-and-push (push) Has been cancelled
2026-06-03 16:16:01 -05:00
ginnoir
3fb5ddc5dd
chore: upgrade node 22 to 24 lts
2026-06-03 16:15:00 -05:00
ginnoir
ca536b5c33
chore: release v0.4.9
Release / build-and-push (push) Has been cancelled
2026-06-03 16:00:38 -05:00
ginnoir
ec2f3930ad
feat: proper logo, favicon, and pwa icons
...
- replace placeholder house svg with clean geometric house mark
on indigo-700 (#4338CA) — roof triangle, body, door cutout
- add favicon.svg with prefers-color-scheme dark variant
- add icon-16/32 sizes; regenerate all pngs from svg via sharp
- update BrandMark component to use inline svg house instead of 'f'
- wire favicon + sized pngs into layout metadata
- fix middleware to allow icon/manifest/favicon paths without auth
(android launcher fetches icons in a cookieless system context)
- fix getCurrentSession() to redirect to /login instead of throwing
when session cookie is stale/invalid
2026-06-03 15:59:34 -05:00
ginnoir
10cad3df17
chore: release v0.4.8
Release / build-and-push (push) Has been cancelled
2026-06-02 20:26:57 -05:00
ginnoir
77db935329
chore: register 0018_container_images in drizzle migration journal
2026-06-02 20:19:57 -05:00
ginnoir
c6a34f7471
feat: share links visible on plants/containers; container image gallery
...
- Fix ShareButton silently swallowing errors from createShareLink; now
shows inline error text so failures are visible to the user
- Add getShareLinksForEntity server action and EntityShareLink type to
_core/share.ts
- Add ShareLinkList component — renders active share links per entity
with per-row Revoke; renders nothing when empty
- Wire ShareLinkList into plant and container detail pages (loaded
server-side in parallel with the entity fetch)
- Add images jsonb column to garden_containers schema + migration 0018
- Add addContainerImage / removeContainerImage / setContainerPrimaryImage
server actions mirroring the plant image pattern (10-image cap, first
upload auto-sets cover)
- Update ContainerDetailDto, listContainers, getContainer to include images
- Rewrite ContainerDetail with Info/Gallery tabs; Gallery tab mirrors
plant gallery (3-col grid, star/X overlays, upload button, counter)
- Update ContainerShareData and container renderSharedView to show cover
image hero and secondary image grid on public share pages
2026-06-02 20:15:29 -05:00
ginnoir
076e35aced
docs: add contributing guide, env reference, and operations runbook
2026-06-02 19:53:18 -05:00
ginnoir
8bf00c326d
docs: update decisions index and task index for garden module and adr backfill
...
Populates the decisions index with the two existing ADRs (list SSE/notify,
release workflow). Adds task 09 to the phase 1 list and adds the phase 8
garden module task entries to the task index.
2026-06-02 19:52:55 -05:00
ginnoir
6a1ec8bb7b
docs: add professional readme with full feature coverage and release pipeline hook
...
Replaces the 8-line placeholder with a complete README covering all four
modules, platform capabilities, quick start, dev setup, configuration
reference, and deployment links. Badges use dynamic shields.io URLs so
version/CI status update automatically on each release.
Wires README review into the release pipeline via a release-it
before:git:release hook and a new item in the pre-deploy checklist.
2026-06-02 19:52:24 -05:00
ginnoir
fe4673f1cd
chore: replace personal domains and ips with generic placeholders
2026-06-02 19:33:49 -05:00
ginnoir
4ec1f34150
chore: gitignore maintainer deploy scripts, scrub personal domain from dev.mjs
2026-06-02 19:30:27 -05:00
ginnoir
7938425850
chore: gitignore maintainer-specific production deploy files
...
deploy/compose.yaml, deploy/Caddyfile, and deploy/Caddyfile.dev.snippet
contain homelab-specific config and are not useful as public templates.
Public-facing equivalents: compose.example.yaml and Caddyfile.snippet.
2026-06-02 19:22:31 -05:00
ginnoir
13d94b3751
chore(deploy): separate maintainer config from public deployment templates
...
- rename Caddyfile.snippet → Caddyfile (maintainer's full production file)
- restore Caddyfile.snippet as a minimal public reference (famapp blocks only)
- add compose.example.yaml: standalone famapp + authentik template for new
deployers; compose.yaml remains the maintainer's homelab monolith
- update deploy/README.md: file table, setup steps referencing example files
- apply-compose.ps1: point Caddy push at deploy/Caddyfile (not snippet)
2026-06-02 19:19:27 -05:00