Artifactory: read sends its request; the rail draws the whole board - #237
Merged
Merged
Conversation
Two bugs, one found by a peer loop and one by a human, both real. `graphcode artifactory read <path> <id>` timed out on every id, valid or not (exit 75), while sync/list/status answered fine from the same daemon. The `openProject` send that opens the round-trip had been glued onto the end of the preceding comment line — syntactically a comment, so it never ran, and `read` then waited for a `.graphChanged` nobody had asked for. Broken since the read-side round of #229; never worked in any release. Diagnosed to the line by the Artifactory demo GIF loop, which is the first time a loop on this graph has found a bug by using the board. A newline fixes it. The rail's expanded ARTIFACTORY section drew its header and the "Leave a note" button with nothing between them, while the folded line showed a post was there. The scroll box asked for `min(contentHeight, cap)` with `contentHeight` starting at zero, and a zero-height scroll view never lays out its content — so the preference that would have grown it never fired. Chicken and egg, resolved by leaving the box unsized until the measurement lands: the first pass lays the posts out, the height arrives, the box snaps to it. Every note is drawn, in a box that hugs them until roughly ten and scrolls after. Suite: 1482 tests / 153 suites pass; swiftlint 0 errors, format clean. `read` is verified live after install; the rail still needs a human's eyes. Signed-off-by: scgopi <scgopireddy@gmail.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019A6NULwEiBXEdRXwEKKcRH
scgopi
added a commit
that referenced
this pull request
Sep 1, 2026
…nt (#238) Reported with a screenshot: a large gap between the ARTIFACTORY header and the "3 message records" row under it. The box was taller than its rows and bottom-anchored, so the slack sat between the header and the first row. This is the second failure of sizing the scroll box from a measured content height — first a zero start that never laid out (#237), now a stale reading. Preferences from inside a ScrollView are not a foundation to build on. Replaced with the idiom that needs no measuring: `.frame(maxHeight:)` under `.fixedSize(horizontal: false, vertical: true)`. fixedSize asks the scroll view for its ideal height, which is its content's, and the frame clamps that. The box is exactly as tall as the posts until the cap and scrolls after. No state, nothing to go stale, nothing to fire late. All GeometryReader and preference plumbing removed. Suite: 1482 tests / 153 suites pass; swiftlint 0 errors, format clean. Claude-Session: https://claude.ai/code/session_019A6NULwEiBXEdRXwEKMcRH Signed-off-by: scgopi <scgopireddy@gmail.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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.
Two bugs, one found by a peer loop and one by a human, both real.
artifactory readnever workedgraphcode artifactory read <path> <id>timed out on every id (exit 75) whilesync/list/statusanswered fine. TheopenProjectsend that opens the round-trip was glued onto the end of the preceding comment line — syntactically a comment, so it never ran, andreadthen waited for a.graphChangednobody had asked for.Broken since the read-side round of #229; never worked in any release. Diagnosed to the line by the Artifactory demo GIF loop during a peer verification run — the first time a loop on this graph has found a bug by using the board. A newline fixes it.
The expanded rail section drew no posts
Header, Leave a note, and nothing between — while the folded line proved a post existed. The scroll box asked for
min(contentHeight, cap)withcontentHeightstarting at zero, and a zero-height scroll view never lays out its content, so the preference that would have grown it never fired. Resolved by leaving the box unsized until the measurement lands. Every note is drawn, in a box that hugs them until ~10 and scrolls after.Verification
Suite 1482 tests / 153 suites pass; swiftlint 0 errors,
swift-format --strictclean.readverified live after local install. The rail still needs a human's eyes.🤖 Generated with Claude Code
https://claude.ai/code/session_019A6NULwEiBXEdRXwEKKcRH