Skip to content

syncing #182

Merged
marota merged 12 commits into
ainetus:mainfrom
marota:main
Jul 3, 2026
Merged

syncing #182
marota merged 12 commits into
ainetus:mainfrom
marota:main

Conversation

@marota

@marota marota commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

Just resyncing repos

claude and others added 12 commits July 1, 2026 09:30
Frontend (SLD overlay):
- Wrap relabelled branch-feeder names wider than ~15 chars onto up to
  three <tspan> lines, vertically centred on the original baseline, so a
  long far-end VL name no longer occludes the neighbouring feeder's
  label at the top/bottom of the SLD.
- Make a feeder name clickable: applyFeederRelabels tags each with
  data-feeder-nav (the far-end VL id) + the sld-feeder-navigable class,
  and the new useSldFeederNav hook opens that VL's SLD on click, keeping
  the current sub-tab so the same overload stays visible from the other
  extremity. Registered ahead of (and guarded against) the edit-mode
  switch/injection click handler so a name click is never a maneuver.

Backend:
- simulation_helpers.half_open_branch_reactive_from_obs: guard `nm` in
  the early return so mypy can prove it non-None before
  nm.set_working_variant (fixes union-attr at lines 526/533).

Tests: wrapFeederLabel + nav-tagging cases in feederLabels.test.ts;
wrapped-label + navigation cases in SldOverlay.test.tsx. Full frontend
suite (1705) + backend simulation-helper suites green; ruff + mypy +
code-quality gate pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019mHWAwFyLaRJJUvcctZqDm
…names

Three UX fixes for the network diagram and SLD:

- Feeder names at a substation's extremities no longer overlap. Beyond
  the branch relabelling (Issue 1), a new applyFeederLabelWrap pass wraps
  EVERY long feeder name (generators, loads, and branches whose far-end
  VL is unnamed) inside each feeder cell, and wrapFeederLabel now breaks
  long single-token ids on their _/-/. separators.

- VL disks are interactive across their whole area, even where a branch
  is drawn on top: when the direct hit-test lands on an occluding edge,
  the handlers fall back to document.elementsFromPoint and pick the first
  VL disk/name box in the paint stack (discrete events only, no per-frame
  cost).

- The VL name box on the NAD is interactive too — a single click opens
  its SLD. Resolved through metadata.textNodes (new textNodesBySvgId map
  on the metadata index) that maps each label box to its VL.

Docs + unit tests updated (feederLabels, metadataIndex, vlInteractions).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
12-dimension audit (backend/frontend architecture, API contract, UX,
performance, documentation, maintainability, security, plus data-pipeline,
Game Mode and deployment gap reviews) with adversarially verified findings
(34 confirmed / 23 partially confirmed / 0 refuted), a sequenced deep-revision
roadmap (D1-D9) and 25 quick wins. Indexed in docs/README.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FmiTR5B6ud726XCKDyxVU
Add 2026-07 full-repository review to docs/architecture
PR #3 targets the `claude/sld-voltage-navigation-mypy-1zm3om` working
branch, but the Code Quality / Tests / Parity workflows only fired on
`pull_request` events whose base was `main`, so no CI ran for it. Broaden
each `pull_request` trigger to `branches: ['**']` so CI runs on PRs
targeting any branch. `push` stays restricted to main, and the
HuggingFace deploy workflow is left untouched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
Empty commit to fire a pull_request synchronize event now that repo-level
GitHub Actions is enabled, so Code Quality / Tests / Parity run on PR #3.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
A pull_request whose base is not `main` is matched against the base
branch's own trigger (still main-only), so broadening the head branch's
pull_request filter alone did not fire CI for PR #3. Add the `claude/**`
working branches to the push trigger so pushes to this branch get
commit-level checks that surface on the PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
The pull_request `branches: ['**']` change (read from the PR head
branch's workflow) is confirmed to trigger CI for PR #3, so the
`claude/**` push trigger is no longer needed and only produced
duplicate runs. Restore push to `main`-only; keep the broadened
pull_request filter.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aLzZJp3MP3qYBr1WKGRC6
…xht90

Wrap long feeder names at substation extremities (Issue 1)
…1zm3om

SLD: wrap long feeder names, navigate to far-end VL; mypy fix
@marota marota merged commit fdccc80 into ainetus:main Jul 3, 2026
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants