Skip to content

Make Markover UI development live and share element callouts #196

Description

@lastobelus

Problem

The current development watcher performs a complete build, quits Electron, and launches a replacement application after every successful edit. That destroys the working window geometry and turns UI tuning into a stop-start QA loop. Developers and agents also have no shared, low-friction way to point at the same rendered element without exchanging annotated screenshots.

Accepted interaction

  • UI-facing changes reload inside the existing Electron process and existing BrowserWindow. The window does not close, reopen, resize, move, activate, or lose its configured geometry.
  • Main-process or backend changes report that a restart is required; the watcher never silently tears down the application.
  • A failed build leaves the last working renderer and window untouched.
  • A user holds one development-only modifier gesture and clicks an element. Markover outlines and pins that element and copies one stable element reference.
  • An agent can use the same reference with a development CLI command to show the elements bounding box in the running Markover window.
  • The workflow requires no screenshots, drawing, DevTools inspection, or remote arbitrary JavaScript execution.

Delivery stack

  1. Stable renderer live reload, based on main: classify watcher inputs, build UI assets separately, publish them atomically, and reload the existing web contents without replacing the BrowserWindow. Main-process changes stop at an explicit restart-required diagnostic.
  2. Shared element callouts, based on slice 1: add the development-only picker, stable element-reference contract, authenticated CLI highlight command, renderer overlay, and focused tests.

The second PR depends on the first because it reuses the persistent development control path. The active UI-tuning PR #195 remains separate; this issue does not take ownership of its visual changes.

Complete when

  • repeated CSS, HTML, and renderer edits become visible without changing the Electron PID or BrowserWindow bounds;
  • UI-facing preload changes use the same stable-window path when Electron can safely reload them;
  • failed UI builds leave the displayed renderer unchanged and the next valid edit recovers;
  • main-process and backend inputs produce one clear restart-required state without automatic shutdown;
  • user selection is one modifier-click gesture that visibly pins the chosen box and copies a stable reference;
  • the development CLI can highlight or clear that exact reference in the addressed running instance;
  • ambiguous or stale references fail clearly without highlighting the wrong element;
  • production and non-watch runtimes expose no picker or highlight route;
  • focused deterministic tests and the full local gate pass for each slice;
  • native QA confirms stable bounds and the two-way callout flow in one running development instance.

Excludes

  • hot-swapping Electron main-process or backend modules;
  • preserving arbitrary unsaved in-memory renderer state beyond existing workspace and autosave contracts;
  • a general browser automation server, arbitrary renderer script execution, remote-debugging port, or production inspector;
  • visual changes owned by PR Improve Markover review UI #195;
  • compatibility behavior for the current pre-MVP restart watcher.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions