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
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
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
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