Removed the magnifying-glass toolbar button and the isSearching state
it drove -- .searchable() now shows the search field unconditionally,
which is simpler and was requested after hands-on use showed the extra
tap added no value. Updated the spec to match.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WYqycDFsynHH9VnnK7LNSf
- GroupFilterViewModel now tracks lastToggledGroupId (the single group
most recently toggled to a non-empty selection), since toggling a
group with subgroups expands selectedGroupIds to include the whole
subtree, breaking the previous count==1 check used to infer the
active filter group.
- VaultViewModel exposes lastToggledGroupId, forwarded from
GroupFilterViewModel by VaultRootView (ContentView.swift), and
EntryListView.defaultGroupId now reads it instead of the broken
selectedGroupIds.count == 1 check, so the add-entry sheet defaults
new entries into the group actually being filtered by, not silently
back to root.
- EntryListView's search toggle button now clears vm.searchQuery when
hiding the search bar, so a hidden bar can no longer keep filtering
the list invisibly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WYqycDFsynHH9VnnK7LNSf
Replaces group-drilling navigation with a flat, filterable/searchable
entry list backed by VaultViewModel.displayedEntries. SearchView's
role is fully absorbed by EntryListView's .searchable() modifier.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WYqycDFsynHH9VnnK7LNSf