Commit Graph

288 Commits

Author SHA1 Message Date
root
a042cbaaa5 fix(devices): exclude homelab guests (network_hosts + bc:24:11 OUI) from discovery
The scan was surfacing every Proxmox container/host as a 'new' device. Filter
the scan against the network_hosts inventory and the Proxmox guest OUI so the
devices band stays IoT/personal-only, per the spec.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v2.1.0
2026-06-08 21:31:10 +10:00
root
ca186d41ba docs(deploy): arp-scan + setcap for LAN device discovery
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 21:28:51 +10:00
root
5f1b789250 chore(release): 2.1.0 — LAN device discovery; retire static devices.json 2026-06-08 21:11:08 +10:00
root
056e6a099b feat(devices): DB-backed devices band + discovered review/add/edit UI 2026-06-08 21:06:05 +10:00
root
0fe25d96ec feat(devices): /api/devices band + discovered review/edit endpoints 2026-06-08 21:04:41 +10:00
root
e9c1fb17ac feat(devices): hourly scan-cycle orchestration + cron 2026-06-08 20:58:52 +10:00
root
2ca2adc485 feat(devices): lan_devices repo (upsert/absent/prune/promote) 2026-06-08 20:58:08 +10:00
root
0083e80dc7 feat(devices): lan_devices table + seed from curated devices.json 2026-06-08 20:57:11 +10:00
root
e3b482624d feat(devices): arp-scan parser + randomized-MAC detection 2026-06-08 20:56:40 +10:00
root
26eeb2c100 docs(devices): implementation plan for LAN device discovery
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 20:54:43 +10:00
root
b9b94c9777 docs(devices): add randomized-MAC retention/prune to discovery spec
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 20:48:21 +10:00
root
d513ca8fa4 docs(devices): spec for LAN device discovery (MAC inventory + review/name)
Persistent MAC-keyed lan_devices store fed by an hourly arp-scan on CT 311;
diffs new vs known, mirrors the services discovered→promote flow for naming/
editing. Upsert-by-MAC keeps the table bounded. Borrows decoupled-scanner +
MAC-identity lessons from scanopy.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 20:44:19 +10:00
root
0866459b23 feat(devices): map MACs to LAN devices; identify Orbi satellite + Galaxy Tab
ARP/nmap rescan (2026-06-08) attaches real MACs to the devices band and shows
them in the UI. Reclassifies two flagged "unknowns": .13 = Orbi mesh satellite
(BC:A5:11:.. Netgear; the uhttpd UI made it look like a rogue OpenWrt box) →
Network; .171 = Galaxy Tab S4 (randomized MAC) → Personal. Remaining flags are
.15 (ASUSTek, needs ID) and .34/.35/.51 (offline).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 20:31:37 +10:00
root
d69d605108 chore(infra): drop retired ct301 from network_hosts seed
Void 1 (CT 301, .11) is retired/destroyed; remove its inventory seed row so
fresh installs don't list a dead host. Live row already deleted; the migrate
runner is filename-tracked so 023 won't re-run on existing DBs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 20:20:47 +10:00
root
9aacc58c35 chore(release): 2.0.0 — drop -alpha; Void 1 retired, CTs renamed
Void 2 reaches GA. Void 1 (CT 301) was stopped, fully backed up (vzdump +
off-CT data tarball), and destroyed; CT 310/311 renamed void-db/void-app;
the legacy void1 registry tile removed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v2.0.0
2026-06-08 20:09:11 +10:00
root
b0b23ba05d feat(infra): commit live infra-audit/cluster work to reconcile git with prod
This work (network_hosts inventory + infra_audit MCP tool, /api/cluster +
Sacred Valley cluster card, topbar cluster-health pill + SW self-heal) was
built in an earlier session and DEPLOYED to CT 311 as alpha.24–26, but was
never committed to git — prod was running code absent from the repo. Commits
it as-is (already prod-validated) so git matches the live state, and restores
its alpha.24/25/26 CHANGELOG entries. Files are disjoint from the fold-in
work; both now ship together under alpha.27.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 15:20:38 +10:00
root
ae2ea09f0c refactor(embed): iframe title + captured frame ref, allow-absent test, router comment 2026-06-08 15:13:05 +10:00
root
29a9185788 chore(release): 2.0.0-alpha.27 — fold-in Apps section 2026-06-08 15:07:20 +10:00
root
608dedff8f feat(sv-card): open AI Usage dashboard via in-Void #/ai-usage route 2026-06-08 14:51:18 +10:00
root
ac7983eb52 feat(sidebar): add Apps section with Timelapse and AI Usage 2026-06-08 14:50:50 +10:00
root
f02c0a7303 feat(app): dispatch #/timelapse and #/ai-usage to their views 2026-06-08 14:50:25 +10:00
root
96b5e6a879 feat(views): cross-origin embed factory + Timelapse/AI Usage views 2026-06-08 14:50:14 +10:00
root
8222717fd4 feat(router): add #/timelapse and #/ai-usage routes 2026-06-08 14:49:32 +10:00
root
e01232e5f4 docs(fold-in): implementation plan for Apps fold-in + timelapse restyle
13 tasks across 3 phases: CF/Traefik provisioning for aiusage.hynesy.com,
Void rail+embed views (TDD), and Phase-1 timelapse restyle.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 14:38:05 +10:00
root
4f97add050 docs(fold-in): spec for folding Timelapse + AI Usage into the Void
Cross-origin HTTPS iframe embeds as left-rail "Apps" items; standalone
URLs stay chromeless. phuryn gets aiusage.hynesy.com behind CF Access;
timelapse gets a Phase-1 palette/typography restyle. Targets alpha.27.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 14:32:05 +10:00
root
a289e0fc9f Merge: local/remote-aware service tiles (2.0.0-alpha.23)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 11:05:40 +10:00
root
73b572a092 chore(release): 2.0.0-alpha.23 — local/remote-aware service tiles
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 11:04:56 +10:00
root
3881334a7b test(health): use programmatic jsdom in node env to keep DB tests serial
A second vitest environment spins up a parallel worker pool that collides with the
DB-backed tests on the shared void_test database (fileParallelism only serializes
within one pool). Provide the DOM via jsdom directly instead.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 01:21:27 +10:00
root
d5adfb5054 style(health): blackflame styling for tile alt control + LAN-only marker
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 00:58:30 +10:00
root
d91e5e75c8 feat(health): tile opens local/remote URL with one-click alt + LAN-only marker
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 00:57:48 +10:00
root
a3662f6ff2 feat(health): pure helper to pick local/remote service URLs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 00:56:22 +10:00
root
7f2a0ced72 feat(health): seed external domains for exposed services
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 00:55:54 +10:00
root
d7a1a47b28 feat(health): expose external in /services payload and accept on add/edit
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 00:55:19 +10:00
root
789dc2442e feat(health): add external URL column, backfill domains, thread through repo
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 00:54:10 +10:00
root
276889e7fe docs(health): spec + plan for local/remote-aware service tiles
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 00:52:26 +10:00
root
03a93ade1f Merge sw-tombstone: kill stale Void 1 service worker (alpha-22) 2026-06-06 00:33:14 +10:00
root
4e78b16188 fix(sw): ship self-unregistering tombstone to kill stale Void 1 service worker 2026-06-06 00:32:46 +10:00
root
35cffc4a87 Merge wiki-repo-and-chunking: docs-kind spaces + long-page embedding (alpha-21) 2026-06-05 23:50:28 +10:00
root
358b826247 chore: release 2.0.0-alpha.21 (docs-kind spaces + long-page embedding) 2026-06-05 23:49:48 +10:00
root
4b3945f904 refactor(space-view): reuse docHead/descEl in project mode (no double exportMenu) 2026-06-05 23:49:26 +10:00
root
43bfa23a00 feat(spaces): docs-kind spaces render as pure documentation repos
Adds a `kind` column to spaces ('project' default, 'docs' for Wiki).
Docs spaces skip projects/tasks fetches and render only the page tree.
Sidebar caret for docs spaces expands to top-level pages (#/page/:id).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 23:41:46 +10:00
root
71adc51c00 fix(embed): chunk + mean-pool long text so large pages embed
Split long page text into 1500-char chunks before calling Ollama, then
mean-pool the per-chunk vectors into one page vector. Removes the hard
6000-char slice that still caused 500s on dense markdown/table pages.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-05 23:24:40 +10:00
root
946a03883f Merge docs-consolidation: page ordering + sectioned space view (alpha-20) 2026-06-05 22:59:58 +10:00
root
c54bc76e24 docs: void docs consolidation + wiki restructure plan (executed) 2026-06-05 22:59:58 +10:00
root
494793874d chore: release 2.0.0-alpha.20 (page ordering + sectioned space view) 2026-06-05 22:37:28 +10:00
root
c9bf79575d chore(space-view): clarify tree depth limit + drop stray blank line 2026-06-05 22:36:33 +10:00
root
3f77f3faad feat(pages): explicit position ordering + sectioned space view
Add position column to pages (migration 020), update listBySpace to ORDER BY position, title,
expose position in update(), add to patchSchema, and replace the space view flat table with a
tree renderer grouping pages by parent_id under h4 section headers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 22:33:10 +10:00
root
34d0c417f4 chore: release 2.0.0-alpha.19 (Whisper GPU sharing, mobile Send button, Chaptarr)
Version + changelog were left at alpha.18 (the cutover) while four
subsequent changes shipped to prod. Bump to alpha.19 and document:
GPU->CPU Whisper fallback + in-container driver, Ollama VRAM unload
before STT, mobile chat Send button, Chaptarr in the service registry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 21:50:41 +10:00
root
d22d31a3f0 feat(registry): add Chaptarr to the homelab service registry
Chaptarr (Readarr fork, ebooks + audiobooks) now runs on the mediastack
(CT 100), routed at chaptarr.hynesy.com. Added to the media group; probes
healthy. Source-of-truth services.json + inserted into prod monitored_services.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 21:21:58 +10:00
root
a9191cee00 feat(workers): free Ollama VRAM before loading Whisper on the GPU
Whisper (CT 311) and Ollama (CT 102) share one A2000. Before loading
Whisper on CUDA, ask Ollama to unload its models (GET /api/ps then POST
/api/generate keep_alive:0) and wait for the card to clear, so the GPU
load has headroom. Best-effort and stdlib-only; Ollama reloads
cooperatively, and the existing CUDA->CPU fallback covers any failure.
Toggle via OLLAMA_FREE_BEFORE_STT; endpoint via OLLAMA_URL.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 21:12:05 +10:00