feat(onedrive-sync): include unsynced classified files in search, tags and duplicates#741
Open
jbarden wants to merge 3 commits into
Open
feat(onedrive-sync): include unsynced classified files in search, tags and duplicates#741jbarden wants to merge 3 commits into
jbarden wants to merge 3 commits into
Conversation
…, duplicates Unsynced classified files under the account local sync root must appear in search results, tag lists, and duplicate detection. Adds IsSynced + FileDetailId to SyncedItemSearchResult and DeleteFileDetailAsync stub so the red tests compile. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s and duplicates Search, tag list, and duplicate detection now cover FileDetail rows under the account's local sync root that no synced item references. Unsynced results carry IsSynced=false and FileDetailId; deleting one removes the disk file, classification links, and the FileDetail row. Account scoping uses the LocalSyncPath prefix; accounts without a configured root behave exactly as before. Repository unit tests move from the EF InMemory provider to SQLite: the account-root lookup materialises AccountEntity, whose complex properties the InMemory provider cannot shape. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
astar-development-jb
approved these changes
Jul 12, 2026
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
Search, tag filtering, and duplicate detection in the OneDrive Sync Client previously only covered files that had already been synced. Classified files on disk (rows in
FileDetail/FileClassificationsproduced by the scraper) under the account's local sync root were invisible until a sync linked them. This change includes those unsynced files:GetDistinctTagNamesAsyncreturns categories of classified files under the account'sLocalSyncPath, in addition to synced-item classifications.SearchAsyncunions the synced-item query with an unsyncedFileDetailquery (same name/size/tag filters); unsynced results carryIsSynced = falseand aFileDetailId, withLocalPathbuilt fromDirectoryName+FileName.SyncedItem.FileDetailIdreferences, and deletes theFileDetailrow (newDeleteFileDetailAsync). Synced deletes are unchanged.LocalSyncPathbehave exactly as before.ApplicationVersionbumped 0.32.2 → 0.33.0 (feature rule).Repository unit tests moved from the EF InMemory provider to SQLite: the account-root lookup materialises
AccountEntity, whose complex properties the InMemory provider cannot shape (KeyNotFoundExceptiononAccountProfile.DisplayName).Type of change
Related issues / links
How was this tested?
12 new tests (failing-first commit c81f552): unsynced tags in/out of root, unsynced search inclusion/exclusion, name/tag filters on unsynced files, cross-set duplicates, no-root fallback,
DeleteFileDetailAsynccascade + reference clearing, viewmodel delete routing. Full suite green: OneDrive client 2169/2169 unit, 27/27 integration; all other projects passing, 0 failures.Impacted areas
TDD Checklist (required)
dotnet test)How to run tests locally
Notes for reviewers
StartsWithprefix match onDirectoryNamevsLocalSyncPath— root/datawould also match/data-backup. Flag if a separator-aware boundary check is preferred.Id = 0and empty remote fields; UI distinguishes viaIsSynced.🤖 Generated with Claude Code