Commit graph

70 commits

Author SHA1 Message Date
Paweł Orzech
afa0005a47 feat: add Members list screen with search, filter, pagination, and nav routes
MembersViewModel manages members list state with loading, pagination,
filter (All/Free/Paid), and debounced search. MembersScreen shows
TopAppBar with total count, search field, segmented filter buttons,
and LazyColumn with member rows (avatar via Coil or colored initial,
name, email, open rate progress bar, relative time, PAID/NEW badges).
Add Routes.MEMBERS and Routes.MEMBER_DETAIL to NavGraph (not in
bottomBarRoutes). Wire "See all members" button from Stats screen.
2026-03-20 00:32:45 +01:00
Paweł Orzech
e99d88e10a feat: show member stats tiles in Stats screen with animated counters
StatsViewModel now fetches members via MemberRepository and computes
MemberStats. StatsScreen shows a 2x3 grid of ElevatedCard tiles when
memberStats is available: Total, New this week, Open rate, Free, Paid,
MRR. Includes animated counters and a "See all members" navigation button.
Member fetch failure is non-fatal (tiles simply hidden).
2026-03-20 00:29:50 +01:00
Paweł Orzech
64a573a95c feat: add MemberRepository with fetchMembers, fetchAllMembers, and getMemberStats
MemberRepository follows the same pattern as PostRepository: Context constructor,
AccountManager, ApiClient. Includes fetchMembers (paged), fetchMember (single),
fetchAllMembers (all pages, max 20), and getMemberStats (pure function computing
total/free/paid/newThisWeek/avgOpenRate/MRR). Comprehensive tests for getMemberStats.
2026-03-20 00:28:10 +01:00
Paweł Orzech
689b8cc8c2 feat: add Member model, API endpoints, and model parsing tests
Add MemberModels.kt with GhostMember, MemberLabel, MemberNewsletter,
MemberSubscription, SubscriptionPrice, and SubscriptionTier data classes.
Add getMembers() and getMember() endpoints to GhostApiService.
Add comprehensive JSON parsing tests for all member model types.
2026-03-20 00:26:32 +01:00
Paweł Orzech
0891013df6
docs: update CLAUDE.md and README.md to reflect current project state
Add multi-account, stats dashboard, search/filtering, animations,
theme system, and expanded architecture documentation.
2026-03-19 15:49:13 +01:00
Paweł Orzech
c9f77d8e25
fix: add proguard rule to suppress missing errorprone annotations in release build 2026-03-19 15:37:24 +01:00
Paweł Orzech
11f4e2f8f6
fix: extract avatar from post authors instead of /users/me/ (404)
Ghost Admin API /users/me/ returns 404. Instead, extract
profile_image from the first post's authors array which is
already fetched on every refresh.
2026-03-19 15:33:42 +01:00
Paweł Orzech
05f5518bdb
fix: fetch Ghost avatar for existing accounts on app launch 2026-03-19 15:30:28 +01:00
Paweł Orzech
ccd729e82f
feat: show app version in Settings, fix composer NPE crash, bump to v0.2.0
- Settings: shows "Swoosh v0.2.0" at bottom
- Fix: NPE crash in composer error display (AnimatedVisibility exit)
- Version bumped to 0.2.0 (versionCode 2)
- CLAUDE.md: added versioning process documentation
2026-03-19 15:27:58 +01:00
Paweł Orzech
dcb9c50c02
feat: fetch Ghost profile avatar for account icon, fallback to colored initial 2026-03-19 15:25:47 +01:00
Paweł Orzech
edca4dd0c5
feat: add refresh button to stats screen top bar 2026-03-19 15:22:23 +01:00
Paweł Orzech
4a2a18282c
fix: stats screen shows layout instantly, only numbers animate (no stagger entrance) 2026-03-19 14:59:28 +01:00
Paweł Orzech
3da3e97e77
feat: move search to top bar, replace with Stats tab in bottom nav
- Bottom tabs: Home / Stats / Settings (was Home / Search / Settings)
- Search icon back in feed top bar
- Stats screen: no back button, tab-style fade transitions
- Removed Stats link from Settings screen
2026-03-19 14:57:44 +01:00
Paweł Orzech
c91ccd0afb
fix: code review findings - @Stable on FeedPost, derivedStateOf, deduplicate dismiss logic 2026-03-19 14:54:30 +01:00
Paweł Orzech
f3ab562a6c
perf: remove StaggeredItem animations from LazyColumn for smooth scrolling
StaggeredItem wrapped every list item in AnimatedVisibility with
slideInVertically + fadeIn + LaunchedEffect delays, causing jittery
scrolling due to excessive recompositions and layout passes.
2026-03-19 14:51:03 +01:00
Paweł Orzech
c3fb3c7c98
feat: composer redesign, bottom tab bar, bug fixes, animation optimization
- Composer: auto-focus with keyboard, send button in top-right with dropdown
  (Publish/Draft/Schedule), smaller 120dp image thumbnails with fullscreen preview
- Navigation: bottom tab bar (Home/Search/Settings), hidden on detail screens
- Share now copies link to clipboard instead of opening share sheet
- Fix: pinned label no longer shows twice
- Fix: drafts now appear in feed
- Fix: schedule picker blocks past dates, no more NPE crash
- Animations: snappier springs (1500f stiffness), shorter tweens (150-200ms),
  @Immutable on data classes, Coil crossfade 150ms with cache config,
  LazyColumn contentType for better reuse
2026-03-19 14:43:21 +01:00
Paweł Orzech
2470f9a049
refactor: extract ConfirmationDialog, fix animation efficiency issues 2026-03-19 14:32:24 +01:00
Paweł Orzech
15c678556e
feat: add counter, buttons, hashtag, and preview animations in composer 2026-03-19 14:25:16 +01:00
Paweł Orzech
4a7005ce1e
feat: add content reveal and animated delete dialog in detail 2026-03-19 14:24:30 +01:00
Paweł Orzech
5183862533
feat: add account card animation and disconnect dialogs in settings 2026-03-19 14:24:21 +01:00
Paweł Orzech
a6429f16d3
feat: add staggered stats cards and count-up animations 2026-03-19 14:24:05 +01:00
Paweł Orzech
188c62f076
feat: add image, link, schedule, and error animations in composer 2026-03-19 14:23:25 +01:00
Paweł Orzech
0713bd912e
feat: add expand, queue chip, and account switcher animations
- F4: AnimatedContent with expand/shrink transitions on "Show more" text
- F6: Pulsing alpha animation on queue chip when status is UPLOADING
- F10: Staggered slideInHorizontally + fadeIn entrance for account switcher items
2026-03-19 14:21:12 +01:00
Paweł Orzech
5ab2cbafdc
feat: Bluesky-inspired feed redesign - opaque surface for swipe, large icons with labels, clean layout 2026-03-19 14:20:03 +01:00
Paweł Orzech
71d58008c6
feat: add empty state, filter, and overlay animations in feed 2026-03-19 14:18:31 +01:00
Paweł Orzech
64662f6bd4
feat: add staggered card entrance animation in feed 2026-03-19 14:13:03 +01:00
Paweł Orzech
677846a748
feat: add bouncy FAB entrance and press animations 2026-03-19 14:10:46 +01:00
Paweł Orzech
4d78029f9d
feat: add navigation transitions for all 8 routes 2026-03-19 14:08:52 +01:00
Paweł Orzech
59238ff572
feat: redesign feed to Bold Expressive style - no cards, action bar, thick dividers 2026-03-19 14:07:46 +01:00
Paweł Orzech
4b74a14cbf
feat: add AnimatedDialog reusable component 2026-03-19 14:06:59 +01:00
Paweł Orzech
f348f5ea54
feat: add PulsingPlaceholder loading component 2026-03-19 14:06:41 +01:00
Paweł Orzech
fd46d371fe
feat: add SwooshMotion shared animation specs 2026-03-19 14:06:33 +01:00
Paweł Orzech
cfaba04039
feat: bold expressive theme with custom green palette, elevated cards, and high-contrast swipe actions 2026-03-19 14:02:48 +01:00
Paweł Orzech
85fa89d985
refactor: remove theme toggle from feed top bar (available in Settings) 2026-03-19 11:37:46 +01:00
Paweł Orzech
53c7cdd6a6
feat: simplify app icon - solid dark green bg with single mint swoosh 2026-03-19 11:36:46 +01:00
Paweł Orzech
eaf9f2eec3
feat: redesign app icon with modern swoosh motif on dark teal background 2026-03-19 11:35:10 +01:00
Paweł Orzech
aaebc61156
fix: bump Room DB to version 3 with safe migrations from v1 and v2 2026-03-19 11:31:22 +01:00
Paweł Orzech
48127bffbe
fix: add fallbackToDestructiveMigration to prevent Room schema crash 2026-03-19 11:29:59 +01:00
Paweł Orzech
b976ceb9df
merge: integrate multi-account support (resolve conflicts) 2026-03-19 11:28:07 +01:00
Paweł Orzech
7d1caa65ea
merge: integrate multi-image gallery feature (resolve conflicts) 2026-03-19 11:20:33 +01:00
Paweł Orzech
91982a66a2
merge: integrate hashtag support (resolve conflicts) 2026-03-19 11:09:30 +01:00
Paweł Orzech
e1b59d38a6
merge: integrate search functionality (resolve conflicts) 2026-03-19 11:01:24 +01:00
Paweł Orzech
cf5aa93567
merge: integrate feed filters and sorting feature (resolve conflicts) 2026-03-19 10:56:43 +01:00
Paweł Orzech
34feca3461
merge: integrate pinned/featured posts feature (resolve conflicts) 2026-03-19 10:52:52 +01:00
Paweł Orzech
881b2f016f
merge: integrate swipe actions feature (resolve conflicts) 2026-03-19 10:46:21 +01:00
Paweł Orzech
0f1ab875f1
merge: integrate alt text for images feature (resolve conflicts) 2026-03-19 10:43:24 +01:00
Paweł Orzech
da1f796f32
merge: integrate post preview feature (resolve conflicts) 2026-03-19 10:41:03 +01:00
Paweł Orzech
0e954e15d5
merge: integrate share sheet feature (resolve conflicts) 2026-03-19 10:39:28 +01:00
Paweł Orzech
63a660322c
chore: exclude worktree directories from git 2026-03-19 10:38:35 +01:00
Paweł Orzech
b85bc96dcf
merge: integrate post statistics feature (resolve conflicts) 2026-03-19 10:38:26 +01:00