diff --git a/Jarvis/Views/Home/SignalFeedView.swift b/Jarvis/Views/Home/SignalFeedView.swift index 9438f62..47d7428 100644 --- a/Jarvis/Views/Home/SignalFeedView.swift +++ b/Jarvis/Views/Home/SignalFeedView.swift @@ -5,13 +5,28 @@ import SwiftUI import SwiftData -// Reusable wordmark: J in KisaniOrange, the rest white, weight 800, kerning -2. +// Reusable wordmark: typewriter font, lowercase j in orange, orange dot on i. struct JarvisWordmark: View { var size: CGFloat = 30 + + private var font: Font { .custom("Courier New", size: size).bold() } + var body: some View { - (Text("J").foregroundColor(Palette.orange) + Text("arvis").foregroundColor(.white)) - .font(.system(size: size, weight: .heavy)) - .kerning(-2) + HStack(spacing: 0) { + Text("j").font(font).foregroundStyle(Palette.orange) + Text("arv").font(font).foregroundStyle(.white) + // White "i" with an orange dot overlaid at the tittle position. + Text("i") + .font(font) + .foregroundStyle(.white) + .overlay(alignment: .top) { + Circle() + .fill(Palette.orange) + .frame(width: size * 0.17, height: size * 0.17) + .offset(y: size * 0.04) + } + Text("s").font(font).foregroundStyle(.white) + } } } @@ -148,17 +163,13 @@ struct SignalFeedView: View { } .task { CacheMaintenance.prune(modelContext) } // bound the caches on launch .task(id: selectedPill) { + await store.setPill(selectedPill) var pages = 0 if selectedPill == .all { // Front page: pull enough stories to fill the sections. while store.stories.count < 100 && store.hasMore && pages < 5 { await store.loadMore(); pages += 1 } - } else { - // Sparse pill: pull a few more pages until something matches. - while filteredStories.isEmpty && store.hasMore && pages < 8 { - await store.loadMore(); pages += 1 - } } } } @@ -218,7 +229,9 @@ struct SignalFeedView: View { ScrollView(.horizontal, showsIndicators: false) { HStack(spacing: 8) { ForEach(StoryPill.allCases) { p in - pill(p.label, selected: selectedPill == p) { selectedPill = p } + pill(p.label, selected: selectedPill == p) { + selectedPill = p + } } } .padding(.horizontal, 16) @@ -312,7 +325,9 @@ struct SignalFeedView: View { Rectangle().fill(Palette.orange).frame(width: 18, height: 2) Spacer() if let pill { - Button { selectedPill = pill } label: { + Button { + selectedPill = pill + } label: { HStack(spacing: 2) { Text("See all"); Image(systemName: "chevron.right").font(.system(size: 10, weight: .bold)) }