Skip to content

refactor(lists): remove the List Folders feature, keep parent/child list nesting - #19

Merged
Adron merged 2 commits into
devfrom
refactor/lists-remove-list-folders
Sep 6, 2026
Merged

refactor(lists): remove the List Folders feature, keep parent/child list nesting#19
Adron merged 2 commits into
devfrom
refactor/lists-remove-list-folders

Conversation

@Adron

@Adron Adron commented Sep 6, 2026

Copy link
Copy Markdown
Member

Summary

Removes the List Folders feature — the vertical slice that let lists be grouped into folders — in its entirety, from the sidebar UI down through the domain service and the Kit endpoint/DTO.

Parent/child list nesting is unaffected and stays. The two were independent concepts that merely both happened to nest: the Lists sidebar continues to render the owned-lists tree via OwnedList.parentID under Section("Lists"). The Documents "folder" feature (FolderNode / FolderRecord / FolderTreeViewModel) is a different feature and is untouched.

What changed

Deleted (8 source files + their tests):

Layer Removed
App ListFoldersSectionView, ListFoldersViewModel
Domain ListFolder model, ListFoldersService
Kit ListFoldersEndpoint, ListFolderDTO
Tests ListFoldersViewModelTests, StubListFoldersService, ListFoldersServiceTests, ListFoldersEndpointTests

Rewiring:

  • OwnedListsRootView — drop ListFoldersSectionView() from the sidebar List.
  • AppEnvironment — drop the listFolders service, the retained listFoldersAPI, its init parameter/assignment, the live() wiring, and the associated doc comments.
  • Repoint two comments that referenced the deleted symbols (ShareLinksViewModel, the AppEnvironment sharing doc).

Docs: work-consolidation.md still listed "List Folders (cycle-safe tree)" under already-shipped Collaboration features; that snapshot is now stale, so the claim is retired with a note on the removal and date.

Net: 13 files changed, 4 insertions, 1262 deletions.

Verification — full E2E gate observed green

Every leg was run and observed on 2026-09-05:

Gate leg Result
xcodebuild -scheme InterlinedList -destination 'platform=macOS' build ** BUILD SUCCEEDED **
App target test (CODE_SIGNING_ALLOWED=NO) 622/622 pass, 0 failures
swift test — InterlinedKit 314/314
swift test — InterlinedDomain 619/619
swift test — InterlinedPersistence 135/135
Decision 0003 — ^\s*import InterlinedKit in App/Features|Navigation|MenuCommands 0 hits
git grep -l ListFolder 0 tracked hits

Note: commit 1afb89d's message states the App-target gate could not be run — at authoring time the machine's shell could not resolve uid 501, so xcodebuild aborted pre-compilation. That environment fault is resolved and the App build + test gate has since been run green, as recorded above. The commit message is left as-authored; this table supersedes it.

Two small gotchas worth knowing for future review of this area:

  • A plain grep -rn "import InterlinedKit" over the feature dirs returns 4 hits, but all four are comment text literally saying "does not import InterlinedKit". Anchor the pattern to the line start for the true count.
  • grep -rn ListFolder across the repo hits Packages/*/.build/ artifacts only; git grep over tracked files is clean.

Risk

Low. Pure deletion with no behavioral substitute needed — no dangling references remain, and the retained parent/child nesting path is covered by the existing owned-lists tests.

🤖 Generated with Claude Code

https://claude.ai/code/session_013tAJgfBGnnA1HgRGAWvkRK

Adron and others added 2 commits September 4, 2026 12:40
…ist nesting

Deletes the entire ListFolder vertical slice and its sidebar section. The
Lists sidebar now renders only the owned-lists tree (OwnedList.parentID
parent/child nesting via Section("Lists")), which is unaffected — the two
were independent concepts that merely both nested. The Documents "folder"
feature (FolderNode/FolderRecord/FolderTreeViewModel) is unrelated and
untouched.

Removed (8 files):
- App: ListFoldersSectionView, ListFoldersViewModel
- Domain: ListFolder model, ListFoldersService (+ tests)
- Kit: ListFoldersEndpoint, ListFolderDTO (+ tests)

Wiring:
- OwnedListsRootView: drop ListFoldersSectionView() from the sidebar List
- AppEnvironment: drop the listFolders service, the retained listFoldersAPI,
  its init parameter/assignment, the live() wiring, and the doc comments
- repoint two comments that referenced the deleted ListFoldersViewModel/
  listFolders (ShareLinksViewModel, AppEnvironment sharing doc)

Verification: swift test green — InterlinedKit 314, InterlinedDomain 619,
InterlinedPersistence 135 (0 failures); Decision-0003 grep = 0 real Kit
imports. App-target xcodebuild test could NOT be run this session: the
machine's DARWIN_USER_CACHE_DIR is returning EIO (getconf exit 71), so
xcodebuild aborts pre-compilation — unrelated to this change. App gate to
be confirmed once the cache-dir fault clears.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MQCieButVmc4o7KC6wWzEq
work-consolidation.md still listed "List Folders (cycle-safe tree)" under
the already-shipped Collaboration features. The feature was removed on
refactor/lists-remove-list-folders (commit 1afb89d), so the snapshot was
stale. Retire the claim and note the removal + date; the owned-lists
parentID parent/child nesting is a separate concept and remains.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Adron
Adron merged commit 898d063 into dev Sep 6, 2026
8 checks passed
@Adron
Adron deleted the refactor/lists-remove-list-folders branch September 6, 2026 04:00
Adron added a commit that referenced this pull request Sep 6, 2026
The "New endpoints (2026-07-31 re-baseline)" section had sat at its
initial ☐ Implemented / ☐ Tested state through the entire July/August
parity effort, so the matrix was the last artifact still describing the
pre-parity client. Re-derive every row from the repository:

- Implemented ☑ where a builder exists in InterlinedKit/Endpoints and an
  InterlinedDomain service calls it; Tested graded by counting distinct
  test_* functions in Packages/InterlinedKit/Tests that exercise the
  builder (ContractTests excluded — it needs live credentials):
  ☑ ≥ 3, ◐ 1–2, ☐ 0. 53 rows flipped.
- Add 10 implemented endpoints that had no row at all: email invites for
  lists and documents (6, from PR #13) and user search / handle lookup /
  Bluesky + Mastodon provider status (4).
- Correct 8 row paths copied from OpenAPI that the client does not use —
  six Moderation writes (/api/users/{username}/block|mute|report and
  /api/messages/{id}/report) and the two nested GitHub issue routes —
  with footnotes 14 and 15 recording why, including that GitHub's update
  and comment routes 404 live despite shipping client-side.
- Mark List Folders (G6) retired: the feature was removed in PR #19, so
  its 4 rows stay ☐ permanently rather than reading as an open gap.
- Recompute the totals per the docs checklist: the new section holds 93
  rows, not the 53 claimed — that figure never matched its own per-area
  breakdown, which already summed to 83. Grand total 98 + 93 = 191 rows,
  with a note that a row count is not a live-endpoint census.

Also refresh two stale claims in work-consolidation.md: the G14 ImagePrep
size-ceiling follow-up is done (both upload paths already project
ContentLimits through ImagePrep.Limits), and Sparkle's code integration
is complete — only the Ed25519 key material and appcast hosting remain.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QYA3FQuyhHgvpbbeMFuYrx
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