summaryrefslogtreecommitdiff
path: root/Hutch/Views/Pastes/PasteListViewModel.swift
Commit message (Collapse)AuthorAgeFilesLines
* feat(cache): persist read-only API responsesv3.3.1Christian Cleberg2026-05-061-1/+1
| | | | | | | | | | | | 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-4/+4
|
* perf: cache filtered collections and add equatable row viewsChristian Cleberg2026-04-131-8/+20
| | | | | | | | | | | | | | | | Convert filteredJobs, filteredPastes, and filteredTickets from computed properties to stored properties updated via didSet on their inputs. Each update function guards with an equality check before assigning, so @Observable skips the notification when the filtered result hasn't changed — preventing list re-renders on auto-refresh when no visible data has actually changed. Add Equatable conformance to BuildRowView, PasteRowView, TicketRowView, and SelectableTicketRow, and apply .equatable() at each ForEach call site. When a list does re-render, SwiftUI now skips body evaluation for rows whose model value is identical to the previous pass. Implements: https://todo.sr.ht/~ccleberg/hutch/57
* feat: swipe actions on tickets, pastes, builds, and home dashboardChristian Cleberg2026-03-221-0/+41
|
* feat: add search to builds, trackers, tickets, pastes, mailing lists, and inboxChristian Cleberg2026-03-221-0/+12
|
* v2.1: bundled polish and fixesChristian Cleberg2026-03-191-3/+3
|
* feat: implement support for projects, lists, and pastesChristian Cleberg2026-03-191-0/+109