Commit Graph
14 Commits
Author SHA1 Message Date
tyiuandClaude Sonnet 5 188536867d Add a Compose HTML (DOM) web app and split Compose UI out of :shared
webHtmlApp is a new web build using Compose HTML instead of Compose
Multiplatform UI's Skia/canvas renderer - real <select>/<input>/<button>
elements, an anchored popup menu for reordering/removing currencies
(Compose HTML has no built-in DropdownMenu), and locale-independent
English strings (moko-resources' Compose integration pulls in
compose.foundation/ui, which this module exists to avoid).

Realizing the bundle-size win needed splitting sharedUi out of shared:
the Compose Multiplatform Gradle plugin bundles Skiko's several-MB web
runtime into any js/wasmJs target whose resolved dependencies contain
org.jetbrains.compose.ui:ui anywhere, and shared previously declared it
directly for the other (Skia-based) web app's UI. shared is now pure
business/data logic with no Compose dependency; sharedUi holds App()/
PriceScreen() for androidApp, desktopApp, and webApp to render.
PriceViewModel's ViewModel supertype and CurrencyConverter's BigDecimal
params moved from implementation() to api() in shared, since they're
part of its public surface that webHtmlApp now touches directly.

Also drops the @js-joda/timezone dependency from both web builds: the
app only ever calls TimeZone.currentSystemDefault(), which resolves to
a synthetic zone backed by the native Date offset on Kotlin/JS and
never touches the tz database - confirmed empirically on both js and
wasmJs targets. Cuts webApp's js bundle by ~950 KB and webHtmlApp's by
~800 KB.

currencyFlagEmoji() gained an explicit supportsFlagEmoji parameter
(defaulting to the existing expect/actual, false on web) so webHtmlApp
can opt in - Compose HTML renders real DOM text, so flag emoji work
fine there even though they don't on Compose Multiplatform's canvas.

website/serve-local.sh now builds and serves webHtmlApp instead of
webApp's wasmJs build, so it no longer mirrors what's actually deployed
to production; docs updated to reflect the new module layout and that
divergence, and the Pages workflow's path trigger now includes
sharedUi/** so UI changes there still redeploy the site.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-16 18:35:23 +03:00
tyiuandClaude Sonnet 5 1852d790ac Deploy web app to satsprice.app/app/ and link it from the website
Deploy website to GitHub Pages / deploy (push) Canceled after 0s
The GitHub Pages workflow now builds the Compose wasmJs web app and
publishes it alongside the marketing site, so it's reachable at
/app/. Add nav/hero/download links to it and list Web among the
supported platforms. Add website/serve-local.sh to reproduce the
production layout locally, and document the setup in README/AGENTS.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 08:40:08 +03:00
tyiuandClaude Sonnet 5 e387f2906c Point zapstore website field and README to satsprice.app
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 08:17:27 +03:00
tyiuandClaude Sonnet 5 bc483144cd Add missing library attributions to README
Credits Ktor, SQLDelight, moko-resources, kotlinx.coroutines/serialization/datetime,
kotlin-wrappers, and kotlin-multiplatform-bignum, which were used but not listed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AejmWBrdE3DbJWbXoaE3aX
2026-09-14 17:05:06 +03:00
tyiu 39ed9ecd35 Update README download buttons 2026-09-13 23:23:15 +03:00
tyiuandClaude Sonnet 5 db270c8aa3 Add app screenshots to README
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FXcrACM5sok3M1KQJ8kByy
2026-09-13 22:27:50 +03:00
tyiuandClaude Sonnet 5 b856454df5 Clean up templated text in README's Kotlin Multiplatform section
The module-layout bullets were still generic KMP-wizard boilerplate
("your project", a hypothetical CoreCrypto example never used here)
and omitted macOS, androidApp, desktopApp, and webApp entirely.
Replaces them with an accurate description of the actual layout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FXcrACM5sok3M1KQJ8kByy
2026-09-12 12:43:54 +03:00
tyiu 10b1b914b7 Remove centering div in README.md 2026-09-12 12:26:28 +03:00
tyiuandClaude Sonnet 5 c00f124b28 Update README, add AGENTS.md
README: drop the stale Skip attribution line (the project moved to
Kotlin Multiplatform entirely; the "Kotlin Multiplatform" line below
it already covers the current tooling) and fix the stated minimum
Android version — androidApp's actual minSdk is 24 (Android 7.0), not
10.0.

AGENTS.md: a navigation/orientation doc for AI agents, focused on the
things that aren't obvious from reading the code or that took real
trial-and-error to establish this session — the localization
architecture constraint (no synchronous, cross-platform way to
resolve a moko-resources string outside Compose/Apple, so shared code
must return data, not sentences), the Swift-interop plain-function
convention, per-platform currency-data quirks (web's ICU-dependent
currency list, missing color-emoji font), and the verification
workflow for each platform (especially that Compose for Web renders
to a <canvas>, so headless Chrome + specific GL flags is the way to
actually see a change, not DOM inspection).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FXcrACM5sok3M1KQJ8kByy
2026-09-10 16:30:39 +03:00
tyiu abf7cf2e83 Replace Skip implementation with Kotlin Multiplatform implementation 2026-09-02 22:11:32 +03:00
tyiu 0d9debf7ca Update README (#1) 2025-03-30 23:02:38 -04:00
tyiu edb10c48e6 Add support for currency selection 2024-09-07 05:55:34 +03:00
tyiu 7f22956557 Convert SatsPrice to a Skip multiplatform app 2024-08-31 10:24:07 +03:00
tyiu adac2bcd64 Initial commit 2024-02-20 22:30:10 -05:00