[object Object]

← back to Desktop Dotbar

auto-data-snapshot: 2026-09-16T10:40:23 (1 data files) — electron-main.js.bak-single-20260916T174147Z

158144eff26cfa9e3f97580110453b85324e61c1 · 2026-09-16 10:42:53 -0700 · auto-commit-fleet

Files touched

Diff

commit 158144eff26cfa9e3f97580110453b85324e61c1
Author: auto-commit-fleet <steve@designerwallcoverings.com>
Date:   Wed Sep 16 10:42:53 2026 -0700

    auto-data-snapshot: 2026-09-16T10:40:23 (1 data files) — electron-main.js.bak-single-20260916T174147Z
---
 electron-main.js.bak-single-20260916T174147Z | 101 +++++++++++++++++++++++++++
 1 file changed, 101 insertions(+)

diff --git a/electron-main.js.bak-single-20260916T174147Z b/electron-main.js.bak-single-20260916T174147Z
new file mode 100644
index 0000000..1febbbd
--- /dev/null
+++ b/electron-main.js.bak-single-20260916T174147Z
@@ -0,0 +1,101 @@
+// Electron shell: a true always-on-top strip across the top of the desktop.
+// Spawns the local server, then floats a frameless bar above every window
+// (including fullscreen) at 'screen-saver' level. Grows only when a dropdown opens.
+'use strict';
+const { app, BrowserWindow, ipcMain, screen } = require('electron');
+const { spawn } = require('child_process');
+const http = require('http');
+const fs = require('fs');
+const path = require('path');
+
+const DIR = __dirname;
+const PANEL_H = 360;
+const BAR_DEFAULT = 48, BAR_MIN = 22, BAR_MAX = 140;
+const BARH_FILE = path.join(DIR, '.barh');
+let win, serverProc, PORT = null;
+let isOpen = false;                                  // is a dropdown panel open
+let barH = readBarH();                               // resizable strip height (persisted)
+
+function clampBar(h) { return Math.max(BAR_MIN, Math.min(BAR_MAX, Math.round(h || BAR_DEFAULT))); }
+function readBarH() { try { return clampBar(parseInt(fs.readFileSync(BARH_FILE, 'utf8'), 10)); } catch { return BAR_DEFAULT; } }
+function writeBarH() { try { fs.writeFileSync(BARH_FILE, String(barH)); } catch {} }
+
+function portFromFile() { try { return parseInt(fs.readFileSync(path.join(DIR, '.port'), 'utf8'), 10); } catch { return null; } }
+function alive(port) {
+  return new Promise(res => {
+    if (!port) return res(false);
+    const r = http.get({ host: '127.0.0.1', port, path: '/health', timeout: 800 }, x => { x.resume(); res(x.statusCode === 200); });
+    r.on('error', () => res(false)); r.on('timeout', () => { r.destroy(); res(false); });
+  });
+}
+// The launcher (start-bar.command) starts the node server; we just wait for it.
+async function ensureServer() {
+  for (let i = 0; i < 50; i++) {
+    const p = portFromFile();
+    if (await alive(p)) return p;
+    await new Promise(r => setTimeout(r, 200));
+  }
+  // last resort: spawn it ourselves via Electron-as-node
+  serverProc = spawn(process.execPath, [path.join(DIR, 'server.js')], {
+    stdio: 'ignore', env: { ...process.env, ELECTRON_RUN_AS_NODE: '1' } });
+  for (let i = 0; i < 30; i++) {
+    await new Promise(r => setTimeout(r, 200));
+    const p = portFromFile();
+    if (await alive(p)) return p;
+  }
+  return portFromFile() || 9787;
+}
+
+function bounds(open) {
+  const wa = screen.getPrimaryDisplay().workArea; // excludes the menu bar
+  return { x: wa.x, y: wa.y, width: wa.width, height: open ? barH + PANEL_H : barH };
+}
+
+// Apply the current barH (+ open state) to the window and tell the renderer its strip height.
+function applyBounds() { if (!win) return; win.setBounds(bounds(isOpen)); try { win.setAlwaysOnTop(true, 'screen-saver'); win.moveTop(); } catch {} }
+function pushBarH() { if (win) try { win.webContents.send('dotbar:barH', barH); } catch {} }
+// setBarH fires on EVERY pointermove during a grip drag, so keep it cheap: resize the window and
+// mirror the height to the renderer live, but do NOT re-assert always-on-top per frame (the 2s
+// `raise` interval covers that) and do NOT hit the disk per frame — persist once, debounced, after
+// the drag settles. Resize is the sole affordance now (keyboard resize was dropped, DTD 2026-09-16).
+let _persistTimer = null;
+function setBarH(h) {
+  barH = clampBar(h);
+  if (win) win.setBounds(bounds(isOpen));                 // live resize only; no per-frame moveTop
+  pushBarH();
+  clearTimeout(_persistTimer); _persistTimer = setTimeout(writeBarH, 300);
+}
+
+async function createWindow() {
+  PORT = await ensureServer();
+  win = new BrowserWindow({
+    ...bounds(false),
+    type: 'panel',                 // NSPanel: floats above normal windows, non-activating
+    frame: false, resizable: false, movable: true, minimizable: false, maximizable: false,
+    fullscreenable: false, skipTaskbar: true, hasShadow: false, transparent: false,
+    focusable: false, backgroundColor: '#14161a',
+    webPreferences: { preload: path.join(DIR, 'preload.js'), contextIsolation: true, nodeIntegration: false },
+  });
+  win.setAlwaysOnTop(true, 'screen-saver');       // above normal + fullscreen windows
+  win.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true });
+  win.loadURL(`http://127.0.0.1:${PORT}/`);
+  // Re-assert top without the off→on toggle (which caused a visible drop-flicker).
+  // setAlwaysOnTop(true, ...) re-elevates on its own, including after setBounds.
+  const raise = () => { try { win.setAlwaysOnTop(true, 'screen-saver'); win.moveTop(); } catch {} };
+  const dbg = (tag) => { if (process.env.DOTBAR_DEBUG !== '1') return; try { fs.appendFileSync(path.join(DIR, 'debug.log'),
+    JSON.stringify({ tag, t: new Date().toISOString(), bounds: win.getBounds(), visible: win.isVisible(), onTop: win.isAlwaysOnTop() }) + '\n'); } catch {} };
+  win.webContents.on('did-finish-load', () => { raise(); pushBarH(); dbg('did-finish-load'); });
+  win.webContents.on('did-fail-load', (_e, code, desc) => dbg('FAIL:' + code + ':' + desc));
+  setInterval(raise, 2000);   // re-assert top above other apps
+  ipcMain.on('dotbar:setOpen', (_e, open) => { isOpen = !!open; applyBounds(); });
+  ipcMain.on('dotbar:setBarH', (_e, h) => setBarH(h));          // absolute height (grip edge-drag)
+  ipcMain.on('dotbar:quit', () => app.quit());
+}
+
+app.on('window-all-closed', () => app.quit());
+app.on('before-quit', () => { if (serverProc) try { serverProc.kill(); } catch {} });
+app.whenReady().then(() => {
+  if (app.dock) app.dock.hide();            // accessory app: panels float above active apps
+  createWindow().catch(e => console.log('DOTBAR: createWindow ERROR', e && e.stack || e));
+});
+process.on('uncaughtException', e => console.log('DOTBAR: uncaught', e && e.stack || e));

← 71dbcd1 dotbar: add top-strip Arrange button — one-click re-tile eve  ·  back to Desktop Dotbar  ·  dotbar: render a strip on EVERY display (Arrange button reac 2f67aa2 →