Mark which entries of a shared base are shared #252

Merged
cruelacid merged 1 commit from worktree-bases-shared-dot into main 2026-10-02 11:26:55 +01:00
Owner

Task: NEC-199

A shared base lists every note its filters find in each vault, including notes that never leave it. Focus presence is sent only for entries under the base's shared folder, so a collaborator's outline that never appeared looked like a fault. In the case that prompted this, a base showed about ten cards titled "Untitled", and only two of them were shared.

Each entry under the base's own shared folder now carries the file explorer's sync dot, in the same states and shapes:

  • table: the row's leading gutter;
  • cards: the top-right corner;
  • list: before the bullet.

It is gated on "Show sync status in the file explorer", computed locally, and sent nowhere.

The dot is drawn as a class plus a pseudo-element, never a child element, because Obsidian's table rebuilds a row's children as it scrolls.

This also adds the missing e2e for table row-level focus, where the column is not a note property and the outline goes on the row.

Verification

  • Unit tests: new bases-shared-marks.test.ts; additions to bases-presence.test.ts and file-status-indicator.test.ts. Each new rule was mutation-checked: removing the root check, never adding the class, never removing it, dropping the scroll redraw, and dropping the immediate clear on fallback each fail a test.
  • e2e bases.test.ts in the container: 9/9 pass. Mutating the row-outline CSS fails the new row test. Removing the root check does not fail the e2e, because its unshared note is outside every shared folder; the unit test covers a note in a different shared folder.
  • pnpm test, pnpm -r typecheck, pnpm lint, build-mirror --check and check-conformance --check all pass.

Changelog

Shared bases now mark which entries are shared with the same sync dot as the file explorer, so it is clear which ones collaborators can see.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AsUFqoi4GHKYjFtPbYCgRp

Task: NEC-199 A shared base lists every note its filters find in each vault, including notes that never leave it. Focus presence is sent only for entries under the base's shared folder, so a collaborator's outline that never appeared looked like a fault. In the case that prompted this, a base showed about ten cards titled "Untitled", and only two of them were shared. Each entry under the base's own shared folder now carries the file explorer's sync dot, in the same states and shapes: - table: the row's leading gutter; - cards: the top-right corner; - list: before the bullet. It is gated on "Show sync status in the file explorer", computed locally, and sent nowhere. The dot is drawn as a class plus a pseudo-element, never a child element, because Obsidian's table rebuilds a row's children as it scrolls. This also adds the missing e2e for table row-level focus, where the column is not a note property and the outline goes on the row. ## Verification - Unit tests: new `bases-shared-marks.test.ts`; additions to `bases-presence.test.ts` and `file-status-indicator.test.ts`. Each new rule was mutation-checked: removing the root check, never adding the class, never removing it, dropping the scroll redraw, and dropping the immediate clear on fallback each fail a test. - e2e `bases.test.ts` in the container: 9/9 pass. Mutating the row-outline CSS fails the new row test. Removing the root check does not fail the e2e, because its unshared note is outside every shared folder; the unit test covers a note in a different shared folder. - `pnpm test`, `pnpm -r typecheck`, `pnpm lint`, `build-mirror --check` and `check-conformance --check` all pass. ## Changelog Shared bases now mark which entries are shared with the same sync dot as the file explorer, so it is clear which ones collaborators can see. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01AsUFqoi4GHKYjFtPbYCgRp
Mark which entries of a shared base are shared
All checks were successful
Release note / release-note (pull_request) Successful in 14s
CI / build (pull_request) Successful in 5m3s
CI / e2e (pull_request) Successful in 7m49s
CI / promote (pull_request) Has been skipped
Deploy site / deploy (push) Successful in 51s
CI / build (push) Successful in 5m21s
CI / e2e (push) Successful in 7m49s
CI / promote (push) Successful in 32s
211891e69f
A base's query runs against each vault's own index, so a shared base also
lists notes that never leave the vault, and nothing told the two apart. Focus
presence is only sent for entries under the base's shared folder, so a
collaborator's outline that never appeared looked like a fault.

Each entry under the base's own shared folder now carries the file explorer's
sync dot: the row's gutter in a table, the top-right corner of a card, before
the bullet in a list. Drawn as a class and a pseudo-element, since the table
rebuilds a row's children as it scrolls. Gated on the explorer's setting,
computed locally, sent nowhere.

Also adds the missing e2e for table row-level focus on a non-property column.

Task: NEC-199

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AsUFqoi4GHKYjFtPbYCgRp
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Nectenda/nectenda!252
No description provided.