fusible 0.18.0

Electronic linter: a fuse that blows to block firmware code generation
(() => {
  if (!window.FUSIBLE_DESKTOP) return;
  const STRIP = 44;
  const LABEL = 'main';
  const isMac = /Mac|iPhone|iPad/.test(navigator.platform) || /Mac OS X/.test(navigator.userAgent);
  const invoke = (cmd, args) => {
    const tauri = window.__TAURI_INTERNALS__;
    return tauri ? tauri.invoke(cmd, args) : Promise.resolve();
  };

  const style = document.createElement('style');
  style.textContent = `
    body.desktop-chrome #project { padding-top: calc(var(--gutter) + ${STRIP}px); }
    body.desktop-chrome .floating-views { top: calc(var(--gutter) + ${STRIP}px); }
    .desktop-strip { position: fixed; top: 0; left: 0; right: 0; height: ${STRIP}px; z-index: 60; display: flex; align-items: center; padding: 0 16px; }
    .desktop-strip .traffic-group { display: flex; align-items: center; gap: 8px; }
    .desktop-strip .traffic { display: grid; place-items: center; width: 12px; height: 12px; padding: 0; border: 0; border-radius: 50%; cursor: pointer; }
    .desktop-strip .traffic.close { background: var(--traffic-close); }
    .desktop-strip .traffic.min { background: var(--traffic-min); }
    .desktop-strip .traffic.max { background: var(--traffic-max); }
    .desktop-strip .traffic-glyph { font-size: 11px; line-height: 1; color: var(--traffic-glyph); opacity: 0; }
    .desktop-strip .traffic-group:hover .traffic-glyph, .desktop-strip .traffic:focus-visible .traffic-glyph { opacity: 1; }
  `;
  document.head.append(style);

  const strip = document.createElement('div');
  strip.className = 'desktop-strip';
  strip.setAttribute('data-tauri-drag-region', '');
  document.body.classList.add('desktop-chrome');
  document.body.prepend(strip);

  const buttons = [
    { name: 'close', label: 'Close', glyph: '×', cmd: 'plugin:window|close' },
    { name: 'min', label: 'Minimize', glyph: '−', cmd: 'plugin:window|minimize' },
    { name: 'max', label: 'Maximize', glyph: '+', cmd: 'plugin:window|toggle_maximize' },
  ];
  if (!isMac) {
    const group = document.createElement('div');
    group.className = 'traffic-group';
    group.setAttribute('role', 'group');
    group.setAttribute('aria-label', 'Window controls');
    for (const spec of buttons) {
      const button = document.createElement('button');
      button.type = 'button';
      button.className = `traffic ${spec.name}`;
      button.title = spec.label;
      button.setAttribute('aria-label', spec.label);
      button.innerHTML = `<span class="traffic-glyph" aria-hidden="true">${spec.glyph}</span>`;
      button.addEventListener('click', () => invoke(spec.cmd, { label: LABEL }));
      group.append(button);
    }
    strip.append(group);
  }

  if (!isMac) {
    const plain = {
      n: () => invoke('open_projects', { fragment: 'new' }),
      o: () => invoke('open_projects', { fragment: 'open' }),
      ',': () => invoke('open_projects', { fragment: 'settings' }),
      q: () => invoke('plugin:window|close', { label: LABEL }),
    };
    const shifted = { o: () => invoke('open_projects', {}) };
    const editable = (node) => node instanceof Element && Boolean(node.closest('input, textarea, select, [contenteditable]:not([contenteditable="false"])'));
    document.addEventListener('keydown', (event) => {
      if (event.defaultPrevented || editable(event.target)) return;
      if (!(event.ctrlKey || event.metaKey) || event.altKey) return;
      const run = (event.shiftKey ? shifted : plain)[event.key.toLowerCase()];
      if (!run) return;
      event.preventDefault();
      run();
    });
  }

  const dock = document.querySelector('.floating-dock');
  if (!dock) return;
  const divider = document.createElement('span');
  divider.className = 'dock-divider';
  const button = document.createElement('button');
  button.className = 'btn';
  button.id = 'btn-projects';
  button.title = 'Back to projects';
  button.setAttribute('aria-label', 'Back to projects');
  button.innerHTML = '<iconify-icon icon="pixelarticons:folder"></iconify-icon> <span class="btn-label">PROJECTS</span>';
  button.addEventListener('click', () => invoke('open_projects', {}));
  dock.append(divider, button);
})();