Commit graph

100 commits

Author SHA1 Message Date
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
Paweł Orzech
797c6eedd0
Merge branch 'worktree-agent-a3aee2cc' into claude/ghost-microblog-android-utau1 2026-03-19 10:37:27 +01:00
Paweł Orzech
5001ba18cb
feat: add multi-account support with account switcher and data isolation 2026-03-19 10:37:13 +01:00
Paweł Orzech
0265a1159d
feat: add multi-image gallery with grid layout, picker, and pinch-to-zoom 2026-03-19 10:37:13 +01:00
Paweł Orzech
5a41944a97
feat: add hashtag parsing, highlighting, tag chips, and feed filtering by tag 2026-03-19 10:37:11 +01:00
Paweł Orzech
bbc408d5df
feat: add full-text search with debounce, history, and highlighted results 2026-03-19 10:37:10 +01:00
Paweł Orzech
f2ccf53577
feat: add feed filters (by status) and sorting options with persistence 2026-03-19 10:37:09 +01:00
Paweł Orzech
b119d75bac
feat: add pinned/featured posts with toggle and feed section 2026-03-19 10:37:08 +01:00
Paweł Orzech
636c9f7649
feat: add swipe-to-edit and swipe-to-delete actions on post cards 2026-03-19 10:37:07 +01:00
Paweł Orzech
202e25b572
feat: add alt text support for images with accessibility 2026-03-19 10:37:07 +01:00
Paweł Orzech
6927259a41
feat: add post preview with HTML rendering in WebView 2026-03-19 10:37:05 +01:00
Paweł Orzech
9da3b0da0f
feat: add share sheet with share intent, copy link, and URL construction 2026-03-19 10:37:04 +01:00
Paweł Orzech
c24b2f7fa7
feat: add post statistics with word count, reading time, and writing stats screen 2026-03-19 10:37:02 +01:00
Paweł Orzech
fe60d17d39
feat: add dark/light mode toggle with system/light/dark options 2026-03-19 10:37:00 +01:00
Paweł Orzech
163d6596c9
docs: update micro-animations spec after review
Address all review findings: fix Bouncy spring damping (0.55→0.65),
add BouncyQuick for press feedback, document stagger pattern and
already-animated tracking, add reduced motion support, fix nav
transitions with popEnter/popExit, add disconnect confirmation
dialog as new behavior, and add PulsingPlaceholder component.
2026-03-19 10:33:20 +01:00
Paweł Orzech
31b04e549c
docs: add micro-animations design spec
Define 19 micro-animations + 5 navigation transitions across all
screens with expressive/bouncy style and shared SwooshMotion specs.
2026-03-19 10:28:17 +01:00
Paweł Orzech
beef4c4e1b
fix: prevent "Ghost URL not configured" error after setup
FeedViewModel was created at NavGraph scope, so its init block called
refresh() before credentials existed when starting on the setup screen.
Guard the init refresh with an isConfigured check and explicitly trigger
refresh after setup completes.
2026-03-19 10:27:31 +01:00
Paweł Orzech
74f42fd2f1
docs: add open-source project files (README, license, contributing)
Add professional open-source scaffolding:
- README.md with badges, features, architecture, and setup guide
- LICENSE (PolyForm Noncommercial 1.0.0)
- CONTRIBUTING.md with guidelines
- CHANGELOG.md for v1.0.0
- GitHub issue and PR templates
- Updated .gitignore
2026-03-19 10:17:46 +01:00
Paweł Orzech
7da55c4b35
feat: redesign setup screen with pulsing animated background and API key helper
- Move inputs/button to bottom of screen for easier thumb access
- Add full-screen animated radial pulse background (3 circles with independent animations)
- Add contextual hint linking to Ghost integrations page when URL is entered
- Add pull-to-refresh and connection error handling to feed screen
- Add CLAUDE.md and restore gradle wrapper
2026-03-19 10:11:00 +01:00
Claude
edb1752cd8
test: add comprehensive TDD unit tests for all business logic (116 tests)
Extracted private functions into testable utilities:
- MobiledocBuilder: shared mobiledoc JSON generation (from ComposerViewModel & PostUploadWorker)
- UrlNormalizer: Ghost URL normalization (from ApiClient)

Test suites (all passing):
- GhostJwtGeneratorTest (9): JWT generation, key parsing, hex decoding, claims validation
- GhostAuthInterceptorTest (4): auth header injection, null key handling, request preservation
- ConvertersTest (18): Room type converter round-trips for PostStatus & QueueStatus enums
- FormatRelativeTimeTest (19): relative time formatting (now/minutes/hours/days/dates)
- MobiledocBuilderTest (27): JSON generation, text escaping, link preview cards, edge cases
- UrlNormalizerTest (15): protocol prefixing, trailing slashes, whitespace, ports
- GhostModelsTest (24): data class defaults, GSON serialization, enum values, pagination

Also fixes compilation issues: HorizontalDivider→Divider, PullToRefreshBox→LinearProgressIndicator,
continue-in-inline-lambda, duplicate XML attribute.

https://claude.ai/code/session_01CpMtDAEfMd14A8MQubMppS
2026-03-18 23:24:49 +00:00
Claude
c76174ff5e
feat: implement Ghost CMS microblogging Android app (Swoosh)
Full Kotlin/Jetpack Compose app for personal microblogging against a Ghost instance.

- Setup screen with Ghost URL + Admin API key (EncryptedSharedPreferences)
- Twitter/Mastodon-style feed with pull-to-refresh and infinite scroll
- Composer with image attach, link preview (OpenGraph), publish/draft/schedule
- Post detail view with edit and delete actions
- Ghost Admin API JWT auth (HS256, key splitting, 5-min expiry)
- Offline queue with Room DB and WorkManager for connectivity-aware uploads
- Material 3 theming with dynamic color support
- Settings screen for reconfiguring instance credentials

https://claude.ai/code/session_01CpMtDAEfMd14A8MQubMppS
2026-03-18 22:43:53 +00:00