AntonDocs Home API Vault
On this page

QA Reference

Hot Updates (OTA) — Manual Testing

10 / 10 Tests Passed

Every mode and scenario the OTA hot-updates feature ships with, walked through end-to-end. Each test is self-contained — run them in any order. Look for the green pill on each test card to confirm coverage as you go.

Manifest mindsdb.github.io/antontron-releases/latest.json
Cache root ~/Library/Application Support/Anton/ui-cache/
Modes manual · auto · live · full

Prerequisites

Before you start, confirm two things.

1. The manifest is live

curl -s https://mindsdb.github.io/antontron-releases/latest.json | python3 -m json.tool

You should see something like:

{
  "version": "2.0.4-e94e713",
  "url": "https://github.com/mindsdb/antontron-releases/releases/download/ui-v2.0.4-e94e713/ui-bundle.tar.gz",
  "sha256": "5b15b66a5a7bcf9a319418e22f601e2ce3f610ac0edc45d6cc45fc3ad53af1d3"
}

If this fails or 404s, the OTA system has nothing to serve — the update check will report "up to date" and the app will load its bundled renderer.

2. You can build the packaged app

OTA checks only run in packaged builds (app.isPackaged === true). Dev mode (npm run dev) skips them entirely.

PATH="/opt/homebrew/opt/node@20/bin:$PATH" npm run pack

Output: release/mac-arm64/Anton.app

Tip. To see Electron's console logs, always launch the packaged app from Terminal:

./release/mac-arm64/Anton.app/Contents/MacOS/Anton

That lets you watch [ui-updater] and [main] log lines in real time.

Key file locations

Anton config ~/.anton/.env
OTA cache dir ~/Library/Application Support/Anton/ui-cache/
Cached bundle .../ui-cache/current/index.html
Previous bundle (rollback) .../ui-cache/previous/
Version metadata .../ui-cache/version.json
Electron logs Launch from Terminal to see stdout

Test 01

Manual update mode (default) — first launch, no cache

Passed

The out-of-the-box experience for new users.

Setup

# Ensure no prior OTA cache exists
rm -rf ~/Library/Application\ Support/Anton/ui-cache

# Ensure manual mode (or just remove the key — manual is the default)
grep -v 'UI_UPDATE_MODE' ~/.anton/.env > /tmp/.env.tmp && mv /tmp/.env.tmp ~/.anton/.env
grep -v 'DEV_MODE' ~/.anton/.env > /tmp/.env.tmp && mv /tmp/.env.tmp ~/.anton/.env

Steps

  1. Build the app: PATH="/opt/homebrew/opt/node@20/bin:$PATH" npm run pack
  2. Launch from Terminal: ./release/mac-arm64/Anton.app/Contents/MacOS/Anton
  3. Watch the Terminal output.

What to verify

  • Terminal shows [ui-updater] checking log lines (no errors)
  • The app loads normally with the bundled renderer (no blank screen)
  • After a few seconds, a small green-accented banner appears in the sidebar footer area saying "Update available (2.0.4-e94e713)" with an "Install" label
  • The banner is unobtrusive — it doesn't block any UI or force action
  • Clicking the banner starts the download — you may briefly see a full-screen overlay with a spinner and "Updating to 2.0.4-e94e713…"
  • The app reloads with the new bundle — the UI looks the same (it's the same codebase, just delivered via OTA)
  • After reload, the sidebar banner is gone (we're now up to date)

Verify the cache

# Should now have files
ls ~/Library/Application\ Support/Anton/ui-cache/current/
# Should contain index.html and assets

cat ~/Library/Application\ Support/Anton/ui-cache/version.json
# Should show {"version":"2.0.4-e94e713"}
Test 02

Manual update mode — already up to date

Passed

Setup

Run Test 1 first so the cache is populated with the latest version.

Steps

  1. Quit and relaunch: ./release/mac-arm64/Anton.app/Contents/MacOS/Anton

What to verify

  • Terminal shows the update check but reports no new version
  • No update banner appears in the sidebar
  • The app loads from the cached OTA bundle (check Terminal for the file path in any load logs)
Test 03

Auto update mode

Passed

Setup

# Clear cache to force a fresh download
rm -rf ~/Library/Application\ Support/Anton/ui-cache

# Set auto mode
echo 'UI_UPDATE_MODE=auto' >> ~/.anton/.env

Steps

  1. Launch: ./release/mac-arm64/Anton.app/Contents/MacOS/Anton

What to verify

  • The app starts and shows its normal UI briefly
  • A full-screen overlay appears with a spinner and "Updating to …" message
  • After a few seconds (download time), the overlay says "Almost there…"
  • The app reloads automatically — no user interaction needed
  • After reload, the app is running the OTA bundle (check version.json)
  • No update banner appears (auto mode doesn't use the banner)

Cleanup

# Remove the auto mode setting to go back to default (manual)
grep -v 'UI_UPDATE_MODE' ~/.anton/.env > /tmp/.env.tmp && mv /tmp/.env.tmp ~/.anton/.env
Test 04

Offline behavior

Passed

Setup

# Clear cache
rm -rf ~/Library/Application\ Support/Anton/ui-cache

Steps

  1. Disconnect from the internet (turn off Wi-Fi, or use an airplane-mode equivalent)
  2. Launch: ./release/mac-arm64/Anton.app/Contents/MacOS/Anton

What to verify

  • Terminal shows something like [ui-updater] timeout or connectivity failure (not a crash)
  • The app loads normally with the bundled renderer — no blank screen, no error
  • No update banner appears
  • The app is fully functional (aside from features that need the network)

Then

  1. Reconnect to the internet
  2. Quit and relaunch
  • The update check now succeeds and the banner (or auto-update) kicks in
Test 05

DEV_MODE=live

Passed

For developers who want renderer changes in real time without rebuilding the full app.

Setup

echo 'DEV_MODE=live' >> ~/.anton/.env

Steps — with dev server running

  1. In one terminal, start the Vite dev server:
    PATH="/opt/homebrew/opt/node@20/bin:$PATH" npm run dev:renderer
    Wait until it says the server is ready on localhost:5173.
  2. In another terminal, launch the packaged app:
    ./release/mac-arm64/Anton.app/Contents/MacOS/Anton

What to verify

  • Terminal shows [main] DEV_MODE=live — loading from http://localhost:5173
  • The app loads the renderer from the Vite dev server, not from the bundled/cached files
  • If you edit a file under src/renderer/, Vite hot-reloads it in the running app window
  • No OTA update check runs — no [ui-updater] log lines appear
  • The Python server still starts and works normally

Steps — without dev server running

  1. Stop the Vite dev server (Ctrl+C)
  2. Launch the packaged app again
  • The app window shows an error page (ERR_CONNECTION_REFUSED or similar) — this is expected
  • The app does NOT crash — it just can't reach localhost:5173

Cleanup

grep -v 'DEV_MODE' ~/.anton/.env > /tmp/.env.tmp && mv /tmp/.env.tmp ~/.anton/.env
Test 06

DEV_MODE=full

Passed

For developers who want to test the packaged build end-to-end but don't want OTA to override their local changes.

Setup

# Populate the OTA cache so we can verify it gets ignored
# (run Test 1 first if the cache is empty)

echo 'DEV_MODE=full' >> ~/.anton/.env

Steps

  1. Launch: ./release/mac-arm64/Anton.app/Contents/MacOS/Anton

What to verify

  • Terminal shows [main] DEV_MODE=full — using bundled renderer, skipping OTA cache
  • The app loads from the app bundle, NOT from ui-cache/current/
  • No OTA update check runs
  • If you had a different version cached in ui-cache/, it is ignored

Cleanup

grep -v 'DEV_MODE' ~/.anton/.env > /tmp/.env.tmp && mv /tmp/.env.tmp ~/.anton/.env
Test 07

Settings UI toggle

Passed

Steps

  1. Launch the app (packaged or dev mode — Settings UI works in both)
  2. Navigate to Settings (gear icon in the sidebar)
  3. Scroll down and expand the Updates section

What to verify

  • There is a segmented control with two options: Manual and Auto
  • The default selection is Manual
  • Clicking Auto switches the selection visually
  • Click Save settings
  • Verify the setting was persisted:
    grep UI_UPDATE_MODE ~/.anton/.env
    # Should show: UI_UPDATE_MODE=auto
  • Switch back to Manual and save again
  • Verify:
    grep UI_UPDATE_MODE ~/.anton/.env
    # Should show: UI_UPDATE_MODE=manual
Test 08

Rollback / cache clearing

Passed

If a bad OTA bundle is deployed, users can recover by clearing the cache.

Steps

  1. After running any test that populated the cache:
    rm -rf ~/Library/Application\ Support/Anton/ui-cache
  2. Relaunch the app

What to verify

  • The app loads the bundled renderer (the version shipped inside Anton.app)
  • On next launch with internet, OTA check runs and re-downloads the latest bundle
Test 09

About panel version display

Passed

Steps

  1. Launch the packaged app
  2. Click Anton in the menu bar > About Anton

What to verify

  • If running the OTA bundle, the version shows something like 2.0.4 (UI: 2.0.4-e94e713)
  • If running the bundled renderer (no cache), it shows just 2.0.4 or 2.0.4 (UI: bundled)
Test 10

Standard dev mode (npm run dev)

Passed

Verify that the normal development workflow is unaffected.

Setup

# Make sure DEV_MODE is NOT set
grep -v 'DEV_MODE' ~/.anton/.env > /tmp/.env.tmp && mv /tmp/.env.tmp ~/.anton/.env

Steps

  1. PATH="/opt/homebrew/opt/node@20/bin:$PATH" npm run dev

What to verify

  • The app starts with Vite hot-reloading as usual
  • No OTA checks run (because app.isPackaged is false in dev)
  • No update banner appears
  • Everything works as it did before this feature

Quick reference: env vars

Add these to ~/.anton/.env as KEY=value lines.

Variable Values Default Effect
UI_UPDATE_MODE auto, manual manual How OTA updates are applied
DEV_MODE live, full, false/empty not set Developer renderer override

Both can also be set from the Settings UI (UI_UPDATE_MODE) or manually edited.

Troubleshooting

I see no update banner but the manifest has a new version
  • Are you running the packaged app? OTA only runs when app.isPackaged === true.
  • Is DEV_MODE set? It skips OTA entirely.
  • Check Terminal logs for [ui-updater] lines.
The app shows a blank white screen
  • If DEV_MODE=live and no Vite server is running, this is expected. Remove DEV_MODE from ~/.anton/.env.
  • If the OTA cache is corrupted: rm -rf ~/Library/Application\ Support/Anton/ui-cache and relaunch.
The update overlay is stuck
  • Could mean the download is slow or failed. Check Terminal for [ui-updater] download failed or SHA-256 mismatch errors.
  • Kill the app, clear the cache, and relaunch.
I want to force a re-download
rm -rf ~/Library/Application\ Support/Anton/ui-cache

Then relaunch.