Atom Vault Changelog
23 July 2026
v1.12.25 – v1.12.27
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