◊

fall-hot

hot-load plugin updates without redeploying · the HTML serves itself new code

What it does

◊

Live updates

Periodically polls watched URLs · diffs by hash · re-runs new code in global scope. The user keeps working.

⇋

Multi-tab sync

BroadcastChannel notifies other tabs of the same tool. They reload too. No tab drift.

⌶

Zero data loss

State preserved · IndexedDB intact · the user mid-action stays mid-action. The update arrives quietly.

○

Sovereign

You host the watched URLs. Watch your own repos · your CDN · your origin. No vendor lock-in.

Install · one line

<script src="https://sjgant80-hub.github.io/fall-hot/fall-hot.js" defer></script>

Register what to watch

window.addEventListener('fall-hot:ready', () => {
  window.fallHot.watch([
    { name: 'fall-palette', url: 'https://sjgant80-hub.github.io/fall-palette/fall-palette.js' },
    { name: 'fall-bloom',   url: 'https://your-domain/bloom.js' }
  ], { every: 5 * 60 * 1000 });   // check every 5 min
});

Live demo

This page registered fall-palette as a watched plugin. Open DevTools console — you'll see ◊ fall-hot first-loaded · fall-palette on boot.

click a button to see live state

API

window.fallHot.watch(spec[], opts?)   // register URLs to watch · {name, url, every}
window.fallHot.checkNow(name?)         // force-check one or all
window.fallHot.stop()                  // pause polling
window.fallHot.start()                 // resume
window.fallHot.status()                // state per watched URL
window.fallHot.onUpdate(cb)            // callback on every successful reload

How it works

  1. Polls each watched URL with cache-busting query param
  2. Hashes the response (DJB2 · fast · sufficient for change detection)
  3. If unchanged → noop · if changed → indirect eval in global scope
  4. The plugin's own if (window.X._v >= N) return guard makes re-init idempotent
  5. BroadcastChannel fall-hot notifies other tabs · they fetch + apply too
  6. Subtle bottom-right toast on every successful reload (~2s, dismissible)

Edge cases

Strategic context

Built for the Fall sovereign tool estate · every Fall* tool loads plugins from sjgant80-hub.github.io/fall-* · adding fall-hot means updating the plugin updates every tool · without anyone redeploying anything · without users having to refresh · the field testifies · the seed grows · the tools listen.

When the next 5N puzzle solves and the forward-analysis surfaces a new modular filter, fall-hot pushes the new filter to every running CASSIE in <60s.