7 Commits

Author SHA1 Message Date
26ebfe132c fix: use java.net.URLEncoder for form encoding (removes Ktor FormDataContent dependency), simplify postForm to use Map<String, String> 2026-05-18 09:36:13 +08:00
b342ae85c6 fix: rewrite SageClient and BricksHttp to use URL-encoded string body instead of FormDataContent (not available in Ktor common) 2026-05-18 09:31:34 +08:00
e4f35ec39c fix: use FormDataContent for form POST requests (Ktor CIO engine requirement) 2026-05-18 09:28:10 +08:00
605b5200ef fix: weight scope issue (use simple spacer), add CoroutineScope import 2026-05-18 09:20:31 +08:00
b80d607d51 fix: resolve all compilation errors (weight import, asStateFlow, getCookies->get, CoroutineScope import, JsonPrimitive form values, ExperimentalMaterial3Api) 2026-05-18 09:16:37 +08:00
82c2b89ecd feat: macOS Sage desktop client with login, UI rendering, and DMG packaging
- SageClient: HTTP client with cookie-based login, session management, UI fetching
- Main.kt: Full macOS desktop app with login screen, main window, loading/error states
- BricksRenderer: Complete inline rendering for VBox/HBox/Button/Form/Menu/TabPanel/Modal/Scroll/Image/Svg
- BricksHttp: Ktor CIO engine with cookie storage, Bearer token auth, form POST
- BricksContext: currentWidget state flow, resolveTemplates for entire_url
- ActionDispatcher: SageClient integration, urlwidget loading, event callbacks
- BricksWidget: Added options field to BricksBind
- BricksParser: Parse bind options from JSON
- Build: Added ktor-client-cio, content-negotiation deps; DMG packaging configured
- .gitignore: Standard Kotlin/Gradle/IDE patterns
2026-05-18 08:42:34 +08:00
b9c585699c initial commit: bricks-mp project 2026-05-18 08:17:44 +08:00