Changelog

Atom Vault v1.10.48

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 scriptscripts/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 existingapi.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 linksapp.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
  • Adminadmin.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 testcontributor.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 dashboardadmin.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 calculationsasset-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 testdeploy.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-checkdeploy.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
  • APIapi.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 scriptdeploy.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