Skip to content

Artifactory rail: SINCE YOU LOOKED means the human, as it does two sections up - #240

Merged
scgopi merged 1 commit into
mainfrom
fix/artifactory-since-you-looked
Sep 1, 2026
Merged

scgopi merged 1 commit into
mainfrom
fix/artifactory-since-you-looked

Conversation

@scgopi

@scgopi scgopi commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Asked: in the ARTIFACTORY section, is you the loop or the human?

It was the loop. The rule and the N NEW badge were drawn against node.lastArtifactoryRead — the cursor graphcode artifactory sync advances, which nobody can run from the app. Two sections up, the summary's identical words are drawn against seenBeatID, which the code describes as "a fact about a person at a screen". I borrowed the label without the mechanism.

Now

  • seenArtifactoryPostID on LoopWorkspaceFeature.State — the newest note on screen when a workspace in this project was last left. Set on .workspaceLeft, exactly as seenBeatID is.
  • Only what was on screen counts as looked at: a hidden rail or a folded section advances nothing, so a badge is never cleared for posts nobody could read.
  • Advances to the newest note, not the newest record — records are folded away.
  • Persisted per project (unlike seenBeatID): a board pointer that reset on relaunch would mark every post new each morning. Same reasoning as the sidebar's expanded-nodes set.
  • The section no longer takes node at all; the loop's own cursor is irrelevant to it.

Verification

Suite 1487 tests / 154 suites pass (+5: unread is the human's not the loop's; leaving with the board on screen marks it looked; hidden rail and folded section do not; advances to newest note, not record). swiftlint 0 errors, swift-format --strict clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_019A6NULwEiBXEdRXwEKKcRH

…ctions up

Asked: in the ARTIFACTORY section, is "you" the loop or the human? It was the
loop. The rule and the "N NEW" badge were drawn against
`node.lastArtifactoryRead` — the cursor `graphcode artifactory sync` advances,
which nobody can run from the app. Two sections up, the summary's identical
words are drawn against `seenBeatID`, which the code describes as "a fact
about a person at a screen". The label was borrowed without the mechanism.

- `seenArtifactoryPostID` on the workspace state: the newest note on screen
  when a workspace in this project was last left, set on `.workspaceLeft`
  exactly as `seenBeatID` is.
- Only what was on screen counts as looked at — a hidden rail or a folded
  section advances nothing, so a badge is never cleared for posts nobody
  could read.
- Advances to the newest note, not the newest record; records are folded
  away.
- Persisted per project, unlike `seenBeatID`: a board pointer that reset on
  relaunch would mark every post new each morning.
- The section no longer takes `node`; the loop's own cursor is irrelevant to
  it.

Suite: 1487 tests / 154 suites pass (+5); swiftlint 0 errors, format clean.

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
scgopi merged commit f8a4c3f into main Sep 1, 2026
1 check 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.

1 participant