syncing #182
Merged
Merged
Conversation
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Just resyncing repos