refactor(lists): remove the List Folders feature, keep parent/child list nesting - #19
Merged
Merged
Conversation
…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>
This was referenced Sep 6, 2026
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
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.
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.parentIDunderSection("Lists"). The Documents "folder" feature (FolderNode/FolderRecord/FolderTreeViewModel) is a different feature and is untouched.What changed
Deleted (8 source files + their tests):
ListFoldersSectionView,ListFoldersViewModelListFoldermodel,ListFoldersServiceListFoldersEndpoint,ListFolderDTOListFoldersViewModelTests,StubListFoldersService,ListFoldersServiceTests,ListFoldersEndpointTestsRewiring:
OwnedListsRootView— dropListFoldersSectionView()from the sidebarList.AppEnvironment— drop thelistFoldersservice, the retainedlistFoldersAPI, its init parameter/assignment, thelive()wiring, and the associated doc comments.ShareLinksViewModel, theAppEnvironmentsharing doc).Docs:
work-consolidation.mdstill 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:
xcodebuild -scheme InterlinedList -destination 'platform=macOS' build** BUILD SUCCEEDED **test(CODE_SIGNING_ALLOWED=NO)swift test— InterlinedKitswift test— InterlinedDomainswift test— InterlinedPersistence^\s*import InterlinedKitinApp/Features|Navigation|MenuCommandsgit grep -l ListFolderTwo small gotchas worth knowing for future review of this area:
grep -rn "import InterlinedKit"over the feature dirs returns 4 hits, but all four are comment text literally saying "does notimport InterlinedKit". Anchor the pattern to the line start for the true count.grep -rn ListFolderacross the repo hitsPackages/*/.build/artifacts only;git grepover 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