Atom Vault Changelog
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