Commit 9869de71ef

9869de71ef3b0351bf822c59e684babf3741fbc4

parent: 40ee0f2ae0

Unsigned

cmc <hello@cleberg.net> · 2026-04-01 16:52 UTC

fix: ensure projects in Home tab are sorted by last updated date

Layout: unified · split

Hutch/Models/Project.swift +1
@@ -65,6 +65,7 @@ struct Project: Identifiable, Hashable, Sendable {
65 let website: String? 65 let website: String?
66 let visibility: Visibility 66 let visibility: Visibility
67 let tags: [String] 67 let tags: [String]
68 let updated: Date
68 let mailingLists: [MailingList] 69 let mailingLists: [MailingList]
69 let sources: [SourceRepo] 70 let sources: [SourceRepo]
70 let trackers: [Tracker] 71 let trackers: [Tracker]
Hutch/Networking/ProjectService.swift +4 −1
@@ -20,6 +20,7 @@ private struct ProjectSummaryPayload: Decodable, Sendable {
20 let website: String? 20 let website: String?
21 let visibility: Visibility 21 let visibility: Visibility
22 let tags: [String] 22 let tags: [String]
23 let updated: Date
23} 24}
24 25
25private struct ProjectDetailResponse: Decodable, Sendable { 26private struct ProjectDetailResponse: Decodable, Sendable {
@@ -92,6 +93,7 @@ struct ProjectService: Sendable {
92 website 93 website
93 visibility 94 visibility
94 tags 95 tags
96 updated
95 } 97 }
96 cursor 98 cursor
97 } 99 }
@@ -162,7 +164,7 @@ struct ProjectService: Sendable {
162 for try await project in group { 164 for try await project in group {
163 projects.append(project) 165 projects.append(project)
164 } 166 }
165 return projects.sorted { $0.name.localizedCaseInsensitiveCompare($1.name) == .orderedAscending } 167 return projects.sorted { $0.updated > $1.updated }
166 } 168 }
167 } 169 }
168 170
@@ -267,6 +269,7 @@ struct ProjectService: Sendable {
267 website: project.website, 269 website: project.website,
268 visibility: project.visibility, 270 visibility: project.visibility,
269 tags: project.tags, 271 tags: project.tags,
272 updated: summary.updated,
270 mailingLists: deduplicate(mailingLists), 273 mailingLists: deduplicate(mailingLists),
271 sources: deduplicate(sources), 274 sources: deduplicate(sources),
272 trackers: deduplicate(trackers) 275 trackers: deduplicate(trackers)