Atom Vault Changelog
16 August 2026
v1.12.34 – v1.12.35
Mobile header
Hamburger always visible — Menu button is pinned outside the overflow strip and the search field no longer takes the full mobile row, so the menu stays on screen on phones
Offline desktop
Download page — Owner-only offline-download.php to grab your .atomvault data bundle (DB + prefs + photos + floor plans) and the platform binary
Toolbar link — New opt-in Offline desktop toolbar icon (default off) linking to the download page
Bundle — offline-bundle-lib.php zips the current vault's sessions/ + uploads/ with a manifest; unencrypted for v1
31 July 2026
v1.12.33
Widgets (Super Saiyan)
Logbook — Attaching or detaching a widget writes widget_attached / widget_detached events (with title + template) to the asset logbook; activity feed can filter them
Detach reliability — Transactional state+row delete, clear not-found errors, mobile-visible Detach control, optimistic UI refresh + toast
Asset attributes — Handlebars gets full {{asset.}} context (standard fields, custom., warranty helpers); Advanced tab lists live field chips; warranty/mileage widgets bind purchase/odometer paths
Ops
Smoke — scripts/smoke-api-widgets.php asserts logbook events, asset context on render, and idempotent detach
27 July 2026
v1.12.30 – v1.12.32
Admin / agent
Iterate system — Admin tab renamed from Vtest; runs tobius (not grok) with skill atomvault-iterate
Pre/post checks — PHP lint + sandbox health before coding; deploy + ping + sessions check after
CLI — /opt/docker/router/scripts/iterate-system.sh (vtest-iterate.sh is a compat wrapper)
Completeness alerts
Full gate (default off) — “Show completeness alerts” now hides the entire Completeness banner and chips for missing photos, locations, and categories (not only photos)
Cyberpunk theme
Vault home chrome — Hero, stat cards, quick actions, filter chips, inventory panels, form sheet, and pastel icon tiles restyled for cyber mode so light-mode whites no longer bleed through
Mobile header
Search stays on the logo row — On narrow screens the search field is inline with the logo/toolbar instead of wrapping to a full-width second line (less dead space)
Inventory completeness
Completeness alerts optional — Menu → account gear → Inventory hints (default off); when off, hides missing photo/location/category chips and the Completeness banner
Portfolio charts
Click to filter — Pie slices, bars, and legend labels deep-link into the inventory list (location or category), with shareable ?location= / ?category= URLs and a category filter in Advanced filters
Widgets
Mileage & service — Unified odometer + service interval widget with one Save, history, trip shortcuts, and service-log handoff; fixed save handlers and empty-reading failures
Theme
Cyberpunk polish — Light widget surfaces, indigo buttons, and completeness chips remapped to neon glass so cyber mode stays consistent
Ops
Admin recovery — Restored atomvault-beta-admin when the admin container was down (502/timeout on admin.php)
26 July 2026
v1.12.29
In-app feedback
Circle gesture (mobile) — Draw a closed circle on screen to open a quick feedback form
Right-click menu (desktop) — Context menu on page elements with Send feedback; Open in new tab when the target is a link
Context capture — Form records last UI element, app version, and a written comment and/or voice note
Storage — Submissions land in sessions/_circle_feedback.db with optional audio under uploads/feedback/; also logged to project analytics as circle_feedback
23 July 2026
v1.12.25 – v1.12.28
Mobile layout
Marketing + vault shell — Narrow-viewport rules for chrome, CTAs, demo grid, inventory chips/toolbars, modals, and asset action buttons; overflow-x clip on public and vault pages
Marketing site
Feature gallery — New /features.html with the interactive “what Atom Vault can do” demos; homepage CTA + sticky chrome link
About icons — About Atom Vault uses feature icons instead of plain yellow bullets; homepage teaser points to the gallery
Service log (1.12.26)
Search & list redesign — Search title/notes/date; removed Tree tab; card timeline with sort, year chips, last-service summary, title suggestions, and clearer add/edit flow
Vault home (app.php)
Home redesign — Welcome hero with primary actions (Add asset, AI import, Export), clearer stats cards with icons, and quick-nav tiles for categories, locations, collections, trade, widgets, and alerts
Inventory UX — Completeness filter chips, collapsible advanced filters, photo thumbnails in the list, and richer empty / no-results states
Asset form — Full-screen focused sheet with progressive sections (money, status) instead of an inline wall of fields
14 July 2026
v1.12.19 – v1.12.24
Admin Trinity
Deferred logging — Ollama failures log trinity_deferred events (per asset, with retry count and attempts); batch summaries include deferred counts; Widgets tab shows defer stats and re-attempt leaders
Admin Trinity
Model experiment — When no batch is running, re-run past request-queue assets with a chosen Ollama model (20 min/day cap); suggestions tagged experiment
Admin announcer
Widget request queue — TTS announces new request-more entries and when Trinity fulfills them, naming vault and session
Admin Trinity
Instance pause — Pause icon on vtest and alpha per-instance cards only; skips that vault for 8 hours (cron + manual batches still run for other instances)
Admin Trinity
Pause 8 hours — (superseded) global pause removed in v1.12.21
Trinity
No fallback — Ollama failures no longer insert curated “Trinity fallback” widgets; Trinity retries up to 4× per asset and defers to the next batch until it gets real suggestions (when no request-more queue is ahead)
13 July 2026
v1.11.1 – v1.12.18
Admin announcer
Session login TTS — Admin announcer (on by default) says “Atom Vault Admin Announcement. {subdomain} {session} is in the building” at 60% volume
Admin widgets
Trinity timing — Admin Widgets tab shows average batch run time and average Ollama time per asset (from logged trinity_run events)
Widget requests
Custom prompt — Request specific (and session gallery Request similar) accepts optional instructions (up to 500 chars) passed to Trinity with the basis widget
Fixes
Request specific — Button click handler fixed (duplicate IDs on Gallery/Suggested tabs prevented the modal from opening)
Widget requests
Request specific — Pick a gallery template or pending suggestion as the basis for the next Trinity batch (Suggested tab + session Widgets gallery)
Basis in queue — Trinity prompt receives the chosen widget pattern; queue stores a snapshot until the batch runs
Widgets gallery
Hamburger → Widgets — Session-wide gallery of all pending widget suggestions with live previews, asset name, and asset ID
Attach / discard — Actions from the gallery without opening each asset first
Grok suggestions
Asset-specific seeding — Grok suggestions now read name, category, description, notes, and location (hats → trip wear log, sunglasses → lens care, plush → play & care, etc.); no more generic "uses logged" counters
Refresh — seed-grok-widget-suggestions.py --refresh-all replaced 382 generic suggestions
Mission: Super Saiyan Facultative Mutualism
Optional mutual benefit between assets and attachable widgets — assets supply live fields; widgets supply tracking, warranty, habits, and status UI. Grok seeds curated suggestions now; Trinity (Ollama) batches in as it catches up. Gallery templates are the shared symbiont DNA across vaults.
Widget platform
Attach on every asset — Handlebars + JSON widgets with per-asset SQLite state; render on the asset page (counters, habit toggles, archive week)
Gallery — Master templates: rolling-week-habit, simple-counter, warranty-status (attribute mapping → live active/expired)
Advanced tab — Custom Handlebars + JSON builder with live preview and data-action guide
Asset context in templates — {{asset.*}}, warranty helpers, logbook events on attach/detach
Suggestions (Grok + Trinity)
Grok suggestions — 382 curated pending suggestions across production vaults (source=grok, model grok-4); GROK badge in Suggested tab
Trinity batch — Up to 3 pending per asset via trinity-widget-suggest.py (5 assets/run, Ollama on 192.168.76.221); request-more queue priority
Model labels — Each suggestion shows producer (Grok / Trinity AI / Curated) and model name under Attach
Trinity prompts — All three gallery examples as quality bar; no habit/counter clones; no JavaScript operators in Handlebars
SanctuaryEsmond curated seed — House-sit vault per-asset suggestions (Dyson, pets, battery, fountain)
Template validation — Rejects invalid Handlebars before insert; auto-discards broken pending suggestions (8 bad || templates removed)
Admin
Widgets tab — Live tallies, event log, preview catalog (master + attached + suggestions), filters by type/status/instance/source
Run Trinity now — Manual batch from admin (sudoers fixed for beta container)
Log previews — Click suggestion events to open preview modal
Fixes
Gallery attach — Widget API reads asset_id from JSON body
Detach — Hardened errors, foreign keys, explicit state cleanup
Invalid server response — Output buffering + widget admin log path fallback in Docker
Service log
Service Log button — On each asset page (next to Appraise), open a service history modal for maintenance and repairs
Date + title entries — Every entry is saved with a service date and title (optional notes) for future reference
Tree by date — Browse entries in a date → title tree; click a title to view or edit
Edit & delete — Update existing service entries or remove them; changes also appear in the asset logbook
11 July 2026
v1.11.0
Analytics
Usage analytics page — Each subdomain gets an Analytics page (analytics.php) scoped to that vault only: events, active time, visitors, sessions, and drill-down by category and event type
Side menu link — Analytics appears under Vault in the hamburger menu on every instance (optional toolbar shortcut in Customize toolbar)
Project-wide store — All subdomains and the public demo feed a central analytics store (opens, page views, asset changes, imports, AI features, engagement, and more)
Engagement tracking — Active time (scroll, typing, navigation — not just page loads), feature usage (search, add asset, import, lazy upload, etc.), and view changes; shown as Active time and Top features on the analytics page
Admin analytics — atomvault.com.au/admin.php opens on an Analytics tab with project-wide totals and per-instance drill-down (demo, boris, and every subdomain)
Admin
Tabbed admin — Analytics, Vtest, Logs, Demo activity, Vault instances, and Subdomains in a sticky top nav with Atom Vault styling
Instance totals — Per-subdomain toggles for which vaults count toward the landing-page asset counter and ntfy summaries; Save & refresh and Send totals notification buttons
Demo activity — Reset events no longer clutter the live feed (reset counter still tracked)
Notifications (ops)
First asset — ntfy push when a notify-enabled subdomain adds its first asset
Daily asset summary — ntfy when net new assets are added across notify-enabled instances
Milestone alerts — Dedicated ntfy at 100, 1,000, and 10,000+ total assets (notify-enabled totals)
Vault notify header — Asset-add webhook passes subdomain id so per-instance hooks run correctly
Logbook
Manual comments — Post comments on an asset logbook from the asset page; comments appear in Notifications and search
Commenter name — Set the name shown on your comments in side menu → Session settings (defaults to your subdomain)
Lazy upload
PDF import — Upload a single PDF receipt, invoice, or list; Grok reads the first page and proposes assets (same AI import flow as photos)
Asset list
Sort assets — Dropdown at the top of the asset list: Newest/Oldest, Name A–Z/Z–A, Location, Category, Value high–low/low–high, and Purchased date (choice remembered per session in the browser)
Ops
nginx — /vault-analytics, /vault-analytics-event, and /analytics-api.php proxied for analytics APIs
Deploy — Ensures lazy-upload chunk and photo-batch upload dirs exist on every instance
6 July 2026
v1.10.63
Photos & documents
More photo formats — Direct asset photo upload now accepts HEIC, HEIF, AVIF, JFIF, TIFF, and BMP (not only inside zips)
More audio formats — Document attachments accept AAC and FLAC
Ops
Deploy — Creates uploads/.lazy-upload-chunks and uploads/.lazy-photo-batch on deploy (fixes chunked zip uploads on fresh instances)
4 July 2026
v1.10.62
Demo
Demo activity log — Public demo (atomvault.com.au/demo) records visitor actions in a persistent log that survives the 15-minute data reset
Admin Demo panel — Beta admin shows live demo stats, recent events, browsers, and reset count
Ops
SSL — Let's Encrypt cert expanded to include isaac.atomvault.com.au
3 July 2026
v1.10.61
Locations — floor plan
Fix: 94 Neill St map (jarrad) — Floor plan files now seed under the Home session (migrates legacy TheHub plan data)
PDF uploads — Upload PDF floor plans; first page is converted to JPEG for Grok room tracing and the schematic map
2 July 2026
v1.10.57 – v1.10.60
Ops
ping.php — Reply with status field for agent workflow /status check on vtest
Ops
ping.php — Reply with hello greeting for agent workflow smoke test on vtest
Ops
Agent workflow test — Verify tobius branch commit and vtest-only deploy pipeline
Ops
ping.php — JSON health check (ok, pong, version, host) for vtest monitoring
27 June 2026
v1.10.56
Hotfix
vault-chrome.js — Restore missing IIFE closing line that prevented pages from loading after v1.10.55
26 June 2026
v1.10.51 – v1.10.55
Lazy upload
Bulk strong matches — Zip match review offers one-click “Attach all strong matches” for high-confidence pairings
Asset list
Completeness filter — Filter assets missing photos, location, category, or any incomplete data; banner shows counts with quick-filter links
Side menu
Get started progress — Shows “N of M done” with a progress bar
Deep links — Each tip opens the right flow (lazy upload for photos, floor plan upload on Locations, appraisal on an asset, etc.)
Side menu
Get started order — Pending tips appear first in the carousel and exploded list; completed tips move to the end
Side menu
Get started carousel — Onboarding tips are one compact card: swipe or use arrows to browse, or explode to see every tip at once
Dismiss tips permanently — Hide all tips or dismiss individual ones; choices are saved to your session preferences
Lazy upload
Large zip chunks — Photo/document zips up to 256 MB upload in 4 MB chunks with retry and progress (no single-request size limit)
Zip server fix — Vault containers now include the PHP zip extension (ZipArchive); fixes “zip upload is not available on this server” on instances like Eric’s
Lazy upload
Saved zips (7 days) — Uploaded photo/document zips are kept on the server for about a week so you can re-process without uploading again
Re-process saved zip — AI import lists recent zips with a one-click re-match after you add assets or attach more files
Documents in zips — PDF, Word, and audio files in zips attach to matched assets’ document lists; macOS junk files (.DS_Store, etc.) no longer block mixed zips
HEIC in zips — iPhone HEIC/HEIF images inside zips are accepted for filename matching
25 June 2026
v1.10.49 – v1.10.50
Lazy upload
Zip documents — Photo zip matching also accepts PDF, Word, and audio files; documents attach to the matched asset’s document list (photos still go to photos)
Mixed zip review — Match review shows file type badges and document icons alongside photo thumbnails
Lazy upload
Zip of photos — Upload a .zip of images; filenames are matched roughly to existing assets so you can confirm, skip, or reassign each photo before attaching
Match review — Preview thumbnails, confidence hints, and per-photo asset picker before photos are saved
24 June 2026
v1.10.43 – v1.10.48
Side menu
Get started encouragements — Side menu suggests first steps (add asset, photo, appraisal, AI import, locations, etc.)
Achievement fade-out — Completed tips congratulate you, then disappear after you have seen them 10 times in the menu
AI limits
Lazy upload quota — Raised from 10 to 100 AI imports per subdomain
Lazy upload
Fix: AI import button — Toolbar button stayed disabled until usage quotas loaded and never refreshed; it now works immediately on mobile and desktop
Toolbar
Icon or text per item — Every toolbar row in Customize toolbar has Icon / Text toggles (Add Asset, lazy upload, import, changelog, floor plans, etc.)
Toolbar
Fix: mobile toolbar — Customized header icons (lazy upload, import/export, etc.) now show on phones; scroll horizontally when needed
Lazy upload
Custom fields from spreadsheets — CSV/Excel columns map to standard fields and existing custom attributes; unmatched columns create new custom field definitions automatically
Lazy upload
Toolbar shortcut — Lazy upload (AI) appears in the header toolbar by default; toggle it in Customize toolbar
More spreadsheet formats — CSV, TSV, legacy .xls, .xlsx, macro-enabled .xlsm, and LibreOffice .ods
21 June 2026
v1.10.26 – v1.10.42
Vault rename
Fix: photos & documents after rename — Renaming a vault now updates photo, document, and collection cover paths in the database (not just files on disk)
Contribute links
Fix: Home button — Header Home and logo links use root-absolute paths on /contribute/… URLs (no more /contribute/.../index.php 404)
Contribute links
Fix: photo lightbox — Full-screen overlay on contribute URLs (fixed asset paths and viewport-sized image instead of inline at page bottom)
Contribute links
Photo lightbox — Tap any photo thumbnail on the contribute page to view it full size (arrow keys to browse, Escape to close)
Contribute links
Photo upload — Helpers can add asset photos (JPEG, PNG, GIF, WebP) on the one-time contribute page
Voice notes — Record audio notes on contribute, same as the asset editor; saved as document attachments
Vault picker (instance landing)
Scroll header — Same compact menu animation as atomvault.com.au: logo shrinks top-left, title dissolves into the ring, links merge into the banner
Vault wording — “New vault” and “Existing vaults” replace session labels on the picker page
Asset page
Action toolbar — QR, Appraise, Contents, Request details, Edit, and Delete align top-right on the same row as the back link
Asset page
Action buttons at top — QR, Appraise, Contents, Request details, Edit, and Delete sit under the asset title instead of below the details
Hide empty fields — Category, location, serial, notes, purchase info, and other blank details no longer show placeholder rows
Appraisals
Cached listing links — Comparable URLs are stored with each appraisal run and replayed from cache/history without re-checking links or calling Grok again
Appraisals
Fix: live search deprecated — Appraisals now use xAI Agent Tools (/v1/responses + web_search) instead of the removed live-search API
Appraisals
Quality — Live web search, stricter same-item matching, dead links filtered out, prices recalculated from verified listings only
History — Appraise button lists previous runs for this asset; open any past result or force a fresh search
Appraisals
Attribute suggestions — Photo appraisals can suggest name, brand, model, category, description, serial, and notes; accept all empty fields in one tap or choose your value vs Grok’s for each conflict
Appraisals
Listing links — Comparable sales in the appraisal modal link out to the marketplace listing when Grok provides a URL
Photo-assisted appraisal — Optionally include one or more asset photos for a visual Grok appraisal (+1 credit per photo; cached lookups stay free)
Documents
Audio notes — Record a short voice note (up to 2 minutes) from the asset edit form; audio plays inline in Documents on the asset page
Database permissions
Fix: read-only database on unlink — Session .db files are chmodded writable on API access and deploy (was only _*.db sidecars); detach returns clean JSON on SQLite errors
Component unlink
Fix: detach errors — Safer parent_id check on the API; nested items in Contains now get unlink/swap actions; stale “already standalone” no longer shows a false error after a successful unlink
Mobile Part of strip — Remove confirm names the parent container
Asset page (mobile)
Part of strip — When viewing a component on a phone, a compact bar shows the parent link plus Make main and Remove (desktop still uses breadcrumbs + Contains icons only)
20 June 2026
v1.9.36 – v1.10.25
Public demo
Auto-reset every 15 minutes — Cron job runs scripts/reset-demo-cron.sh to restore the demo session, floor plan, and uploads to the seeded baseline
Public demo
Fix: floor plan on /demo/ — Location plan API calls and plan images now use the /demo/ base path so the interactive map loads correctly
Public demo (atomvault.com.au/demo/)
Demo session — Passwordless demo session with sample assets, two locations, component hierarchy, sold/loaned/insured examples, a collection, and a floor plan
Auto-enter — Visiting /demo/ opens the demo vault directly (no password)
Seed script — scripts/seed-demo.php rebuilds the demo data
Asset page
Back remembers where you came from — Opening an asset from Locations, Categories, or Notifications returns you there via the back link (Locations reopens the same place)
Locations
Expand locations and rooms — By location list uses expand/collapse on each place, then on each room (e.g. 94 Neill St → Kitchen → assets)
Asset list
Per-item explode — Assets with components show an expand/collapse icon on each row; toolbar “Explode all” still expands everything at once
Asset page
Fix: link error toast — “Link here” no longer shows a false error after a successful attach
Asset page
Link here — no confirm — Linking an existing asset into contents applies immediately (tick feedback only)
Asset page
Fix: false linked ticks — “Add to contents” list no longer marks every row after the first as already linked
Asset page
Link here → tick — When linking an item into contents, the row stays in place and shows a checkmark instead of disappearing from the list (modal stays open for linking more)
Navigation
Home button toggle — Show or hide the header Home button under Menu → Customize toolbar; preference syncs to your vault
Navigation
Home button — Every vault page header has a Home control that returns to your asset list (or the login page when you are not signed in)
Locations — floor plan
Fix: layout save — Floor plan edits save reliably; uploads/location-plans/ is writable by the web server and save failures return a clear error instead of a broken JSON response
Sessions
Fix: meta table warning — Empty or broken .db files in sessions/ are ignored on login and trade vault lists (fixes no such table: meta on index)
Trade
Fix: TradeView is not defined — Guest trade page now loads /trade-view.js from the site root (was 404 under /trade/)
Trade
Fix: guest asset picker — Loads your vault assets using the trade auth token when the browser session is missing; picker UI renders reliably after reconnect
Trade
Leave trade — Guests can disconnect from a trade room and return to the join screen to scan the QR link again
Trade
Fix: guest asset picker empty — After joining from another subdomain, your assets load via the trade auth token (not session password, which was lost on reload)
Fix: guest asset photos — Thumbnails use the correct subdomain URL when browsing assets on a remote vault
Trade
Fix: guest join from QR link — API calls from /trade/{token} now use /trade-api.php (root path); relative URLs were 404ing under /trade/
Trade
Fix: guest vault list — Joining from another subdomain (e.g. boris) now loads vaults via cross-instance API; Docker instances no longer need shared filesystem access
Cross-vault trade — Password verify, asset pickers, previews, and completed trades work across separate Atom Vault subdomains
Trade
Invite link + QR — Host trade room shows the guest link and a scannable QR code; copy button included
Trade
Trade page — Host offers assets plus optional cash; a shareable link opens a live trade room
Guest join — Recipient enters their subdomain, vault database, and password; picks assets in real time while both sides browse offers
Agreement — When both parties agree, selected assets are cloned into each vault with trade history kept
Expiry — Trades expire after 24 hours by default; the host can extend by another 24 hours
Toolbar
Floor plan shortcuts — Under Customize toolbar, enable map icons for each saved floor plan; they jump straight to that plan on Locations
Version display
Fix: v1.0.0 everywhere — Version parser now accepts patch releases like 1.10.1; deploy writes a VERSION stamp and aborts if resolution falls back incorrectly
Locations — floor plan
Edit layout — Move rooms on the schematic map; drag corner handles to resize; save or cancel changes
Locations — floor plan
Floor plan map — Upload a house plan; Grok traces clickable room regions on a canvas (cyber theme glow supported)
Schematic view — Room layout shown by default without the uploaded photo; optional “Show photo” toggle
Room asset list — Select a room to see matching assets; drag ? tokens from “No room set” onto a room to assign them
Layout — Floor plan section sits below the By location list; uses 1 of your 10 AI import credits per new plan upload
Notifications
Removed deleted-items summary — Notifications shows only the activity log; deleted assets are opened from deletion events in the feed
Deleted assets
Deleted asset page — Click a deleted item in Notifications to view its snapshot, logbook, restore, or permanently purge all data and history
Purge deleted — Removes tombstone, logbook entries, and stored photos/documents for that deletion batch
Logbook & deletion
Deletion events — Deletes are logged; creation and other history stay unless you choose to purge on delete
Restore deleted assets — Tombstone snapshots on delete; restore from Notifications (activity log or Deleted items panel)
Optional purge — Wipe per-delete history or purge the entire vault logbook from Notifications
Asset detail page
Removed “Part of” banner — Breadcrumbs show where an asset sits; swap/remove stay as compact icons on the Contains list
Asset relationships
Reverse relationship — “Make main item” swaps a mistaken parent/child link (child becomes the container; former parent moves inside it)
Clearer contents UI — “Part of” banner when inside another asset; “Contains” list with swap/remove actions; toolbar “Contents” button; simplified link modal
Asset detail page
Component quantity — Nested component list on the asset page shows each item’s quantity (e.g. ×2)
Components
Fix: attach existing asset — Standalone assets were rejected as “not found” because isset() treated null parent_id as missing; attach now works for top-level items
Components
Add component modal — Choose to create a new component or attach an existing asset from a searchable list
Nested components — Component tree on the asset page shows nested children; attach API prevents circular parent relationships
Attach existing — api.php?action=attach links any standalone or re-parentable asset as a child component
Asset detail page
Dedicated asset page — Clicking an asset opens asset.php?id=… instead of a popup; full detail view with logbook, photos, components, QR, appraise, edit, and delete
Deep links — app.php?asset= redirects to the asset page; QR codes and notifications link to asset.php
Edit flow — Edit from the asset page returns you to that page after saving
Cyberpunk parity
Same popup fixes as light mode — All modals use vault-modal-overlay + scroll-lock open/close; cyberpunk CSS forces fixed centering (no glass/backdrop-filter traps on overlays, pickers, or menus)
Floating UI on body — Modals, combobox menus, and backdrops move to document.body in every theme; layout refreshes when switching to cyberpunk
Scroll-first popups (Linux)
Suggestion picker — Near-bottom fields auto-scroll to center before the menu opens, so the list stays in view instead of relying on fragile viewport math
Asset popup — Opening detail/appraisal scrolls to top, locks page scroll, and restores your position when closed; modals are moved to document.body for reliable centering
Linux / viewport positioning
Suggestion picker — Fixed menus rendering far below the input on Linux (removed incorrect visualViewport.offsetTop from position: fixed coordinates); near-bottom fields flip upward instead of docking to screen bottom
Asset popup — Detail and appraisal modals always center in the viewport (no bottom-sheet layout)
Cyberpunk theme
Asset popup & modals — Scanlines no longer cover modals (z-index fix); asset detail and all modals use shared vault-modal-panel light-mode styling in cyberpunk
Cyberpunk theme
Shared floating UI — Suggestion picker and tool menus use vault-floating-ui.css, the same styles as normal mode (white surface, dark text); cyberpunk globals no longer override them
Cyberpunk theme
Suggestion picker — Location/category dropdowns use glassmorphic styling with readable neon text (fixed white-on-white invisible options in cyberpunk mode)
Floating menus — Import/export, Smart table, and picker layers sit above scanlines
UI fixes
Ubuntu/Linux suggestion picker — Fields near the bottom of the screen open a docked picker sheet (with backdrop) instead of anchoring below the input; fixes viewport miscalculation on Linux display scaling
UI fixes
Suggestion picker — Replaced native browser datalist popups with a custom menu that always stays inside the viewport (Chrome & Firefox); blocks autofill interference on location/category fields
UI fixes
Linux Firefox dropdowns — Suggestion menus measure available space and flip upward; scroll into view before opening; vault-chrome.js loads in page head on sub-pages so comboboxes always initialise
Version display
Single source of truth — Main asset vault (app.php) reads the version from changelog.php like every other page; toolbar, menu, and header subtitle update on deploy automatically
UI fixes
Firefox dropdown positioning — Location/category suggestion lists and toolbar menus flip upward when opened near the bottom of the page; Smart table panel no longer clips inside the asset list card
Usage endpoint & reliability
usage.php spam fix — Quota fetch uses the correct path on sub-pages (../usage.php under /collections/…), skips when not logged in, and stops retrying after auth failure
Lighter auth poll — Usage checks no longer write activity logs on every menu open
Deploy smoke tests — All main vault pages are runtime-checked on deploy (usage, API, locations, categories, etc.)
19 June 2026
v1.9.4 – v1.9.35
Sharing / collections
Informational template — New layout preset for shared collections: photo, summary facts, description, and View all attributes to expand every field
Template presets — One-click Card grid or Informational when editing a collection layout
Analytics
Group by Category or Location — Toggle which dimension the charts break down
Count, Value, or Both — Show asset counts (pie), total value (bar), or both charts together
Categories
Categories page — New menu item lists active assets grouped by category, plus an Uncategorised section
Stats link — Click the Categories count on the vault dashboard to open the page
Edit & merge — Same workflow as Locations: rename groups, change per-asset category, merge duplicate names via Merge duplicates
Locations
Edit locations — Rename a place for all assets in a group (pencil on the group header), or change/move an individual asset via the location field on each row
Locations
Collapsed by default — Location groups start folded; use ?location= to deep-link and auto-expand one group
Merge duplicate locations — On the Locations page, Merge duplicates (menu or Import/Export) finds similar place names and reassigns assets to the name you keep
Locations
Locations page — New menu item lists active assets grouped by location, plus an Unallocated section for items with no location
Stats link — Click the Locations count on the vault dashboard (e.g. “9 Locations”) to open the page
404 page
Flying assets — One dot per vault asset (e.g. 82) drifts around the screen; centred amber “404 / file / not / found” bubbles with subtle drift
404 page
Atom not found — Branded 404 with vault asset total, a bouncing red lost atom, and jittery amber “404 / Atom / not / found” bubbles
Fixes
Lazy upload flow — Modal closes automatically, asset list refreshes, burger menu closes; usage counter updates immediately
Usage counter — Fixed permission/write failures on _instance_usage.db that kept lazy-upload count at 0
UI
AI limits — Shown only in the signed-in card gear settings (removed duplicate block from the top of the burger menu)
UI
AI limits in settings — Gear icon on the signed-in card shows appraisal and lazy-upload quotas alongside logout timer settings
Fix
Lazy upload images — Switched from retired grok-2-vision-1212 to grok-4; JPEG/PNG normalization for AI vision
AI limits (per subdomain)
Appraisals — Each subdomain gets 100 Grok appraisals (cached lookups are free)
Lazy upload — Each subdomain gets 10 AI imports: upload a photo or spreadsheet and Grok adds assets to your vault
Burger menu — Side menu shows appraisal and lazy-upload usage with progress bars and a Lazy upload action
Admin — admin.php vault instances table shows appraisals and lazy uploads used per subdomain
Critical fix
Assets not loading — Deployed fix for PHP fatal in asset list API; deploy now smoke-tests api.php asset list
Render safety — Loading spinner, retry UI, and guards so a failed API or render never leaves a blank table
Critical fix
Assets not loading — Fixed PHP fatal error in the asset list API (broken recursive sort added in v1.9.20)
Load error UI — If assets fail to load, the table shows a clear message with a Retry button instead of staying blank
Fixes
Document delete — Trash button on documents works again (broken inline click handler in HTML attributes)
Asset table order — Newest assets appear at the top (including nested components)
Mobile edit — Opening the edit form scrolls it into view so inputs are not off-screen
Documents
Delete documents — Owners can remove attached documents from the asset detail view and edit form (trash icon); file is deleted from storage and logged in the logbook
Fixes (contribute document uploads)
Fix: save before upload finishes — Save is blocked while documents are uploading so the one-time link is not burned before files land on the asset
Fix: upload errors surfaced — Failed uploads show a clear error instead of failing silently
Fix: older share links — Links created before document upload was added now include document upload on the contribute page
Fix: documents-only save — Saving after uploads works even if the browser session cookie was lost
Asset fields
Purchased from — Record where an asset was bought (store, seller, website)
Invoice number — Receipt or invoice reference on each asset
Available in edit form, detail view, CSV import/export, smart table columns, logbook, and contribute share links
Contribute links
Document uploads — One-time share links now let helpers attach PDF, Word, and JPEG documents (up to 10 files, 25MB each) before saving
Fixes (contribute links)
Fix: contributor page crash — Removed call to log schema helper that was not loaded on the public contribute page
Fix: save from pretty URL — Contribute form now posts to /api.php so saves work from /contribute/{vault}/{token} routes
Deploy smoke test — contributor.php is included in deploy runtime checks
Asset contribute links
One-time share link — From an asset’s detail view, Request details generates a single-use link for a helper to fill in asset fields (brand, model, serial, notes, custom attributes, etc.)
Scoped access — Helpers edit only that asset; no vault login required
Link burns on save — After they save, the link expires for everyone; unused links expire after 7 days
Logbook — Contributions are recorded in the asset logbook
Admin & activity
Instance activity tracking — Logins and vault access write _instance_activity.json per deployment for admin reporting
Beta admin dashboard — admin.php lists each subdomain with last accessed, last login, total assets, last asset added, and per-vault session breakdown
Landing page
Wiki link scope — Feature roadmap (wiki) link on the session login page only appears on atomvault.com.au, not personal subdomains
Feature Wall → Wiki
Retired Feature Wall — Removed wall.php and in-app links; all 81 roadmap items live in the wiki at Ideas Vault → Feature roadmap
Landing page version — Session login page reads the current version from changelog.php (no more stale v1.5.0 badge)
Session menu
Clearer logout timer — Menu copy now says “auto-logout” and “logout timer”; notes that it only affects sign-in, not your vault data
Session menu
Account card actions — Gear icon opens auto-logout settings; logout icon signs you out from the signed-in panel
Configurable expiry — Choose 15 minutes through 30 days, or a custom duration (minutes, hours, or days)
Per-vault preference — Logout timer is saved in your vault preferences and applied on next login
Session
Expiry in menu — Hamburger menu shows your signed-in vault and how long until the session expires (30-day login)
Tracked auth — Login expiry is stored server-side; expired sessions require signing in again
Uploads
JPEG photos — Photo uploads accept .jpg and .jpeg by extension and file content, not just browser MIME type (fixes rejects on some phones and desktops)
JPEG documents — Attach JPEG scans and receipts in the documents section alongside PDF and Word files
Stats & export
Aligned totals — Stats bar and PDF export now use the same active-only value math (original_price × quantity, excluding sold and defunct assets)
Shared calculations — asset-stats.php centralizes vault stat logic for the UI and PDF export
Clearer labels — Stats bar shows Active Assets and Active Value to match the export
Preferences
Fix: toolbar saves — Preferences files are now writable by the web server (existing .prefs.json files were owned by a different user, so saves failed silently)
Safer partial saves — Column/summary saves no longer overwrite your toolbar before preferences have loaded
Unload save — Uses sendBeacon when leaving the page so menu changes survive refresh/navigation
Deploy & changelog
Fix: changelog crash — Changelog page loads again when logged in (get_vault_session_user was missing from shared page helpers)
Deploy smoke test — deploy.sh now runs key pages at deploy time, not just php -l (syntax-only checks miss runtime fatals)
Navigation & menu
Hamburger menu — Full labeled menu (export, import, theme, changelog, settings, etc.) on all screen sizes
Shared menu everywhere — Same hamburger menu, toolbar icons, and customize panel on the asset vault, Collections, and Notifications
Vault section always visible — Assets, Notifications, and Collections always appear in the menu under Vault; toolbar toggles only control header quick icons
Menu button in header — Compact hamburger icon; menu slides in from the right
Menu in toolbar order — Hamburger is part of the sortable toolbar list; default position is furthest right
Changelog display — Version text (default) or icon-only in the toolbar
Icon ordering — Drag and drop quick icons in Customize toolbar to reorder the header
Customize toolbar — Toggle quick header icons individually; search on/off; Add Asset as full button or icon-only
Notifications & Collections quick icons — Optional header shortcuts; off by default until you enable them in Customize toolbar
Preferences
Synced preferences — Toolbar, theme, columns, and summaries save to a per-vault .prefs.json on the server
Reliable toolbar saves — Customizations save when you close the menu and are not overwritten by a late preferences load
Complete toolbar payload — Icon toggles, order, and styles always write the full toolbar state
Settings survive navigation — Server-side merge so moving between vault, Collections, and Notifications no longer resets your layout
Existing layout preserved — Default toolbar matches the previous design until you customize it
Notifications
Activity log page — Vault-wide logbook of every asset change (edits, sales, loans, photos, appraisals, merges)
Search & filter — Find events by asset name or event type; tap through to the asset
Collections
Collections page — Group assets into curated collections with a name, icon, colour, or cover photo
Handlebars layouts — Each collection has its own template editor plus custom CSS; live preview before saving
Pretty URLs — /collections/ lists your groups; each collection can have a slug like /collections/running-gear
Public or private — Private by default (vault login). Toggle Public link to share outside the vault
Optional password — Public collections can stay open or require a separate viewing password
Sharing panel — Slug, visibility, and live URL preview in the collection editor
Simpler default template — New collections start with photo (if any), name, and unit price
Custom attributes in templates — Use vault-defined fields via {{attrs.key}}
Reliable defaults — New collections always get default Handlebars + CSS; fresh vaults show a helpful empty state
Assets
Custom attributes — Define extra fields per vault in Session settings; values included when collections render
Asset table
Smart summaries — SQL-like queries (e.g. SELECT SUM(line_value) WHERE insured = 1) as summary cards above the table
Smart table editor — Columns button is now “Smart table” with Columns and Summaries tabs
Filter-aware — Summary fields recalculate with search, location, and idle filters
Changelog
Same-day grouping — Releases on the same day appear under one date heading; version numbers (e.g. v1.9.4 – v1.9.5) show as subtext
Changelog page menu — When logged in, the changelog uses the same vault menu and toolbar as the rest of the app
18 June 2026
v1.7.1
Bug fix
New session creation — Fixed PHP parse error in index.php when creating a vault (unescaped quotes in the documents column default)
Deploy
Syntax pre-check — deploy.sh now runs php -l on all PHP files before syncing; deploy aborts if any file has a syntax error
Attachments
Document uploads — Attach PDF and Word (.doc, .docx) files to assets alongside photos
Download from detail view — Documents appear in asset detail with open/download links
Raw backup — Documents are included in raw export/import with photos
Asset table
Custom columns — Columns button lets you show/hide fields; choices are saved per session in your browser
Money & insurance group — Value, sale price, and purchased date grouped together in the column picker and asset form
Covered by insurance — New checkbox on assets; toggle inline in the table when the Insured column is visible
16 June 2026
v1.6.8
Import / Export
Raw backup — Export dropdown offers a .zip containing your session SQLite database and all vault photos
Restore raw backup — Import modal accepts a raw export .zip, or a .db plus photo files; backs up the old database on the server
Bug fix
Page crash on mobile — Fixed JavaScript syntax error in explode view indent (1rem in template expression) that prevented the asset list from rendering
15 June 2026
v1.6.5
Components
Explode view — Components now list directly under their parent (indented), not scattered in database order
Parent-child matching — Fixed parent_id type handling so nested assets attach to the correct parent
Security
Deploy script — No longer copied to public www/; removed from existing instances
.htaccess — Blocks web access to deploy.sh, .git, xai.env, and other server-only files
Inline editing
Empty list cells — Click “Add category”, “Add location”, or “Add value” in the asset table to edit in place
Suggestions from existing categories and locations; Enter to save, Escape to cancel
UX fixes
NaN prices — Empty or missing prices now show as — in lists, stats, and detail views
Merge duplicates
Merge duplicates tool (Import/Export menu) — find assets with the same name/brand/model and combine them
Quantities summed; photos and logbook history merged into the keeper record
Logbook
Asset event history — Timeline in asset detail for creates, edits, sold/loan status, photos, detach
Auto-backfill — Existing assets get synthetic created/sold/loaned entries on first load
Appraisal events — Grok appraisals appear in asset logbook timelines
API — api.php?action=logbook&asset_id=N returns event list
Bug fixes
PDF export — Fixed htmlspecialchars() deprecation on null fields and PHP 8.3 warnings when assets have no price; added defunct badge
Feature Wall harvest (low-hanging fruit)
#### Analytics
Category pie chart — Asset count breakdown by category
Value bar chart — Total value per category
Idle filter — Show assets not updated in 90+ days
#### Asset fields
Room — Separate room/shelf from address/location
Intent — Keep, sell, sentimental, or inherit
Present / defunct — Accounted-for and dead-item flags
Loan tracking — Loaned to, date, and return-by fields
#### UX
Breadcrumbs — Parent chain shown in asset detail view
Mobile menu — Consolidated navigation drawer on small screens
QR print label — Print-friendly QR modal with asset metadata
Improved PDF export — Better print layout with status badges
#### Feature Wall
Stale items marked done; bug type filter and add form
Version bump hints (next patch/minor) in wall header
#### Location filter
Filter by location — Dropdown on the asset list narrows items to a single location (includes components in exploded view)
#### Feature Wall access
Vault session auth — Anyone who has opened a vault can use the Feature Wall (no SSH panel login required)
#### Atom Vault branding
Renamed from Asset Manager — UI, exports, and docs now say Atom Vault to match atomvault.com.au
Animated atom logo — Same spinning-orbit logo as the landing page, used on session picker and in-app header
#### Photo uploads
Immediate upload on select — Photos start uploading as soon as you pick them (auto-saves new assets when a name is entered)
Per-file progress bars — Each thumbnail shows upload progress so you know the site is responding
#### Component detach
Promote components — Detach a child asset from its parent to make it a standalone top-level item
8 June 2026
v1.3.0
New Features
#### Cyberpunk Theme by Default
Session page styled — Login/session selection now uses the cyberpunk theme out of the box
Asset list inherits theme — Cyber mode enabled by default on app load (toggle to opt out)
Consistent neon aesthetic — Session picker and inventory share the same Blade Runner vibe
#### Photos on Create
Add images when creating assets — No longer need to save first, then edit to attach photos
Pending photo queue — Select images in the add form; they upload automatically after save
Preview thumbnails — See queued photos before submitting a new asset
#### Change Password
Session list — Key icon on each session opens a change-password dialog
In-app — Key icon in the Atom Vault header changes the active session password
Secure update — Requires current password; stored as bcrypt hash in session meta
#### Git-Managed Deployments
Central repo — Application code lives at /opt/code/asset-manager.git (bare) on tank
Deploy script — deploy.sh syncs main branch to all Docker instances without touching sessions/ or uploads/
24 March 2026
v1.2.0
New Features
#### Photo Uploads
Attach photos to assets — Upload multiple images per asset (JPEG, PNG, GIF, WebP)
Photo gallery — Thumbnails displayed in asset detail view
Lightbox viewer — Click any photo to view full size with navigation
Keyboard navigation — Arrow keys to browse, Escape to close lightbox
Delete photos — Hover over thumbnails in edit mode to remove
10MB limit — Per-photo file size limit
Auto-cleanup — Photos deleted when asset is removed
18 March 2026
v1.1.0
New Features
#### Nested Assets / Components
Parent-child relationships — Assets can now contain sub-assets (e.g., a server containing GPUs)
Add Component button — Quickly add child assets from the detail view
Visual hierarchy — Parent assets show folder icon and component count
Cascading delete — Removing a parent removes all its children
#### Import & Export
CSV Export — Download all assets as a spreadsheet
PDF Export — Generate printable inventory reports with stats
CSV Import — Bulk upload assets from spreadsheet with smart column mapping
#### AI Price Appraisal
Grok-powered appraisals — Get market value estimates from eBay, Facebook, Gumtree data
Full asset context — Appraisals consider all asset details (brand, model, age, condition)
Cached results — Appraisals cached for 7 days to avoid repeat API calls
Confidence indicators — High/medium/low confidence badges
Comparable sales — See similar items that have sold recently
Detail view integration — Cached appraisal value shown when viewing assets
#### Dark Mode
Toggle switch — Moon/sun icon in header to switch themes
Persistent preference — Theme choice saved to localStorage
Full coverage — All modals, forms, and tables styled for dark mode
15 March 2026
v1.0.0
Initial release.
Features
#### Session Management
Multi-session support — Create separate SQLite databases for different inventories
Password protection — Each session secured with its own password
Session list — View all sessions with asset count and database size
Delete sessions — Remove sessions permanently (requires password confirmation)
#### Asset Management
Full CRUD — Create, read, update, and delete assets
Rich asset details:
Name, brand, model
Category and location
Description and notes
Purchase date and original price
Serial number (optional)
Quantity tracking
Search — Filter assets by name, brand, model, category, location, or serial number
Detail view — Click any asset to see full information
#### QR Code Integration
Generate QR codes — Each asset gets a unique QR code
Scannable URLs — QR includes session name for direct access
Download QR — Save as PNG for printing labels
Direct linking — Scanning opens login → asset detail automatically
#### Dashboard
Stats overview:
Total asset count
Combined value
Number of categories
Number of locations
Real-time updates — Stats refresh on any change
#### User Interface
Responsive design — Works on desktop, tablet, and mobile
Mobile-optimized:
Card view for asset list
Bottom sheet modals
Touch-friendly buttons
Desktop features:
Table view with columns
Keyboard shortcuts (/ to search, Esc to close)
Clean form UI — Hidden by default, slides in when adding/editing
Technical Details
Backend: PHP 8+ with SQLite3
Frontend: Vanilla JavaScript, Tailwind CSS
Storage: One .db file per session in /sessions/ directory
Auth: Password hashed with password_hash() (bcrypt)
QR Library: qrcodejs
AI: xAI Grok API for appraisals
Built with 🛡️ by Tank