summaryrefslogtreecommitdiff
path: root/Hutch/Views/Repositories/RepositoryListViewModel.swift
Commit message (Collapse)AuthorAgeFilesLines
* fix: deleted repositories linger until the cache expiresChristian Cleberg2026-07-161-1/+4
| | | | | | | | | | | | | | Deleting a repository left it on the list, and pulling to refresh did not shift it. Two independent reasons, both cache-related. deleteRepository never invalidated anything. Creation invalidates the repositories and home prefixes; deletion was written without it, so the list and Home kept serving a repository that no longer exists. And forceRefresh only ever reached the build statuses — its own doc comment says so — while the repository list itself was pinned to useCache: true. So a pull to refresh re-served the same cache it already had. fetchPage already takes useCache and falls through to an uncached fetch; it was simply never told.
* feat(cache): persist read-only API responsesv3.3.1Christian Cleberg2026-05-061-35/+61
| | | | | | | | | | | | Add a bounded stale-while-revalidate cache at the Sourcehut API boundary with stable keys, centralized TTLs, request coalescing, payload hashing, and LRU disk pruning. Cache high-value read-only repo, build, ticket, project, profile, paste, and Home/Work Queue data while keeping mutations network-only and invalidating related prefixes after successful writes. Add focused cache tests and implementation notes.
* fix: sonarqube code smell fixesv3.1.4Christian Cleberg2026-04-131-56/+39
|
* perf: reduce redundant fetches and improve list render efficiencyChristian Cleberg2026-04-131-3/+12
| | | | | | | | | | | | | | | | - Remove no-op per-row task from RepositoryListView; loadMoreIfNeeded is a stub for repos so each row was allocating a Task that did nothing - Fix BuildListView auto-refresh stopping permanently after navigating away; startAutoRefresh now runs unconditionally on task so it restarts on every reappear, not just first load - Add lastRefreshed tracking to HomeViewModel with a needsRefresh(after:) helper; HomeView and WorkView scene-activation handlers now skip loadDashboard() if the data is less than 60 seconds old - Add 120-second TTL to repository build status refresh; statuses are no longer re-fetched on every tab appear, only when stale or when the user explicitly pulls to refresh (forceRefresh: true) Implements: https://todo.sr.ht/~ccleberg/hutch/56
* feat: add search and recent queriesChristian Cleberg2026-04-121-2/+34
| | | | | Implements: https://todo.sr.ht/~ccleberg/hutch/47 Implements: https://todo.sr.ht/~ccleberg/hutch/48
* feat: add repo settings managementChristian Cleberg2026-04-121-0/+11
| | | | | | Implements: https://todo.sr.ht/~ccleberg/hutch/42 Implements: https://todo.sr.ht/~ccleberg/hutch/43 Implements: https://todo.sr.ht/~ccleberg/hutch/44
* v2.1: bundled polish and fixesChristian Cleberg2026-03-191-15/+2
|
* add Home dashboard and repository build status indicatorsChristian Cleberg2026-03-181-0/+185
|
* cache repository search results and gate remote refreshesChristian Cleberg2026-03-181-11/+55
|
* v1.0Christian Cleberg2026-03-171-0/+548