Commit Graph

112 Commits

Author SHA1 Message Date
0d8415ba4e remove app animations to fix transition flash
Temporarily removed complex animations that were causing double-render flash.
Using simple hide/show approach during content loading instead.
2026-01-20 13:28:07 +01:00
b3055d8f1a fix transition flash between apps
- Set app-opening class BEFORE loading content to prevent flash
- Keep app-closing at opacity 0 after animation ends
- Remove unnecessary class removal in playCloseAnimation
2026-01-20 13:10:22 +01:00
efc007e487 use junctions for base-apps icon paths instead of duplicate files
Create Windows junctions at root pointing to src/main/assets/:
  mklink /J icons src\main\assets\icons
  mklink /J scripts src\main\assets\scripts
  mklink /J ui src\main\assets\ui

This avoids duplicating files while allowing base-apps manifest
paths like ../../icons/ to resolve correctly.
2026-01-20 13:04:32 +01:00
469535f79a add toast and app transition animations
Toast:
- Bigger size with bold text (18dp padding, 16dp font)
- Pop-up animation from bottom with bounce effect
- Fade-out animation when dismissing
- Cancels previous toast when showing new one

App transitions:
- Opening: fade in + scale from 0.8 to 1.0 with back-out easing
- Closing: fade out + scale from 1.0 to 0.8
- Skip animation on initial shell load
- Async close animation before loading previous app
2026-01-20 12:27:44 +01:00
11c59b890e docs: add tests/ folder convention for test output 2026-01-20 12:04:29 +01:00
17f605cf5f fix toast display and auto-dismiss
- Wrap toast message in span for proper text rendering
- Use setTimeout instead of mosis.timer for auto-dismiss
- Remove unsupported CSS animation property
- Add explicit color to toast variants
- Change px to dp units for RmlUi compatibility

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:45:02 +01:00
07896959ce fix sandbox test API names to match actual registration
- Timer: use global setTimeout() instead of mosis.timer.setTimeout()
- JSON: use json.encode/decode instead of mosis.json
- Crypto: use crypto.sha256 instead of mosis.crypto
- Storage: use fs.read/write with /data/ prefix instead of mosis.fs

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:32:47 +01:00
a52b58c176 add sandbox-test app content and test functions
- Add main_content.rml for sandbox-test app with test cards for Timer, JSON, Crypto, Storage
- Add sandbox test functions to shell.lua (testSandboxTimer, testSandboxJSON, etc.)
- Register sandbox-test in builtin_ids and shellNavigateTo paths
- Add sandbox-test styles to shell.rml

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-20 11:28:12 +01:00
2134a53921 fix Android: load shell.rml, add loadAppContent function, fallback to built-in apps 2026-01-20 10:56:58 +01:00
41fc6fdd86 fix simulator mode to use shell.rml instead of deleted home.rml 2026-01-20 10:39:27 +01:00
ab53bee5c4 add dynamic app discovery and remove unused static RML files 2026-01-20 10:14:13 +01:00
2db7eea9f1 add shell architecture with persistent status bar, nav bar, and content fragments 2026-01-20 10:09:47 +01:00
1f91d7508e add base-apps with manifests, layout system, and testing documentation
- Rename test-apps to base-apps with proper manifest.json for each app
- Add is_system_app flag to app discovery and Lua API
- Fix icon path resolution for /system/icons/ paths
- Add layout.lua and layout.rcss for reusable UI components
- Update home screen to dynamically load all apps from manifests
- Update all app RML files to use layout components
- Comprehensive testing framework documentation with JSON action format
- Add tests/ directory structure for automated UI testing
2026-01-20 09:14:05 +01:00
5de087e8e0 fix document global for external Lua scripts in designer and Android 2026-01-19 22:51:19 +01:00
a3a15b0644 docs: add simulator mode and test-apps flags to DESKTOP-DESIGNER.md 2026-01-19 22:17:37 +01:00
68398e5b60 fix sandbox app script loading and timer execution
- Add relative path resolution for filesystem-loaded documents in kernel.cpp
  - SetDocumentBasePath() tracks document directory for relative resource resolution
  - ResolvePath() resolves relative paths like "app.lua" against document base path
- Fix RmlUi context name lookup in sandbox test app (use "default" not "main")
- Add debug logging to timer_manager.cpp to trace timer creation and execution

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 22:10:45 +01:00
8cf24d8c2a fix files directory handling: use internal storage and add exception handling
- Use internal files dir instead of external (fixes scoped storage permissions)
- Pass files directory from Android context via JNI instead of hardcoding
- Add exception handling in ScanAppsDirectory to prevent crashes on permission errors
- Use std::error_code overload of fs::exists() to avoid throwing on access denial

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 21:49:58 +01:00
76d97e202b fix settings layout for RmlUi 6.2: toggle positioning and flexbox sizing 2026-01-19 19:53:29 +01:00
90b0a19a4d Fix Settings app layout for RmlUi flex rendering
Add explicit width and flex container properties to fix elements
collapsing to zero width in RmlUi:
- .settings-list: Add width: 100%, display: flex, flex-direction: column
- .settings-section: Add width: 100%, display: flex, flex-direction: column
- .settings-item: Add width: 100%, box-sizing: border-box
- .user-card: Add width: 100%, box-sizing: border-box

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 17:33:42 +01:00
56dc8337af Fix RmlUi CSS compatibility issues in store, settings, and music apps
- Replace linear-gradient with solid colors (not supported in RmlUi)
- Replace border shorthand with border-width/border-color properties
- Replace display:grid with flexbox in music quick-access cards
- Remove unsupported transition property
- Fix border-radius: 50% to use 9999px in theme.rcss
- Fix third-party app icon/label sizes to match system apps (72x72px, 16px)
- Replace data-model bindings with static values in settings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 17:27:08 +01:00
6b611b1d09 Fix icon loading for third-party apps with file:// URL scheme
- Add file:// URL handling to AssetFilesInterface in kernel.cpp
- Update home.lua to use file:// prefix for absolute filesystem paths
- Add file:// URL handling to desktop file interface for consistency

This fixes RmlUi stripping the leading slash from absolute paths
when resolving img src URLs relative to the document base.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 17:01:31 +01:00
cb86d52705 Add sandbox API integration for RmlUi Lua state
- Register sandbox APIs (timer, JSON, crypto, VFS) into RmlUi's Lua state
- Add switchAppSandbox() function for context switching between apps
- Update goHome() to reset sandbox context when returning home
- Fix icon loading for third-party apps (handle full paths vs relative)
- Mirror changes between Android service (kernel.cpp) and desktop designer

This enables third-party apps to use sandbox APIs when running in RmlUi.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 15:49:35 +01:00
ea44f0bba4 Add simulator mode with app discovery and mosis.apps API
Simulator mode (--simulator flag):
- Starts from main home.rml instead of separate simulator home
- Discovers apps from test-apps folder automatically
- Shows discovered apps in home screen grid

mosis.apps API for Lua:
- getInstalled() returns array of discovered apps
- launch(package_id) starts an app with its own sandbox

goHome improvements:
- Uses g_main_assets_path to find home.rml correctly
- Works when running test apps directly
- Properly clears current app state

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 15:01:40 +01:00
984e8715d7 Fix desktop designer click handling and add goHome API
Designer click handling:
- Fix DPI scaling in MouseButtonCallback and CursorPosCallback
- Scale coordinates from window space to framebuffer/RmlUi context
- Remove window resizing in ResizeToPhone (caused DPI mismatches)

Test framework:
- Fix SendMouseDown to use MOUSEEVENTF_MOVE before button down
- Remove double-scaling in ScaleToPhysical (WindowController handles it)
- All 5 UI navigation tests now pass

Kernel API:
- Add goHome() Lua function to return to home screen
- Stops any running third-party apps before navigating

Test app:
- Update sandbox-test to use goHome() instead of goBack()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 14:52:15 +01:00
d6b7504408 implement third-party app launching from home screen 2026-01-19 13:50:05 +01:00
ad28cf2360 add local app discovery: scan apps folder, render on home screen 2026-01-19 13:20:21 +01:00
bb31dcee00 fix remaining logger includes in Android source
Update kernel.cpp and apps/*.cpp to use core library logger.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 12:30:55 +01:00
58251e21cc add test output files to gitignore
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 12:15:00 +01:00
486c194f08 update Android to use shared mosis-core library
- Remove duplicate sandbox sources from Android (now in core/)
- Update Android CMakeLists to link mosis-core
- Add OpenSSL crypto support for Android
- Update all includes to use core library headers
- Remove duplicate logger from Android (use core logger)
- Add openssl to Android vcpkg dependencies

This removes ~5,500 lines of duplicate code by sharing
the sandbox implementation between desktop and Android.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 12:14:34 +01:00
33841516f1 extract shared mosis-core library from sandbox APIs
Create core/ directory with platform-agnostic sandbox components:
- Timer manager, JSON API, Crypto API, Virtual FS
- Lua sandbox, Permission gate, Audit log, Rate limiter
- Platform abstraction interfaces (IAssetInterface, IFilesystemInterface)
- Platform-agnostic logger with Android/Desktop implementations

Update designer to link against mosis-core library instead of
including sandbox sources directly.

This is the foundation for unifying the Android service and
desktop designer to share the same codebase.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 11:57:10 +01:00
f41eda6f62 add simulator mode to desktop designer for testing apps
- Add --simulator flag to launch home screen showing discovered apps
- Create app discovery system to scan test-apps/ directory
- Build simulator home screen with dark phone-like UI
- Add Lua API: simulator.launchApp, simulator.goHome, simulator.getApps
- ESC key returns to home when inside an app
- Apps displayed with icons in grid layout

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 11:16:01 +01:00
02db0d849c add --screenshot-after option and fix test app document access
- Add --screenshot-after CLI option to capture screenshot after playback
- Fix sandbox test app to cache document reference for onclick handlers
- Add getDocument() helper that works with RmlUi Lua proxy objects

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 10:36:14 +01:00
a583ef64a1 fix action player wait actions to properly delay playback finish
Wait actions now extend the minimum finish time based on their
timestamp + duration, ensuring timers and other async operations
have time to complete before playback ends and screenshot is taken.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 10:35:44 +01:00
8432bbb986 add sandbox support to desktop designer, fix mouse coordinates and UI issues
- Add DesktopSandbox class that integrates timer, JSON, crypto, and VirtualFS APIs
- Fix mouse coordinate handling: GLFW reports window coordinates, not physical pixels
- Fix font path resolution to search multiple locations for test apps
- Fix screenshot capture timing (capture before buffer swap)
- Fix test app CSS: use border-width instead of border:none, add display:block
- Fix test app Lua: add document nil checks, use HTML entities for symbols
- Update hot_reload to reset sandbox state on reload

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 10:22:32 +01:00
d40ea1e537 add generated icon for sandbox test app 2026-01-19 09:17:56 +01:00
d88bddbf75 fix sandbox test app: replace os.date, add goBack, remove missing icon ref 2026-01-19 09:15:30 +01:00
bbf1638f20 update roadmap with completed milestones, trim SANDBOX.md to reference milestone files 2026-01-19 09:07:31 +01:00
010e11cf6b move docs to docs/ folder, merge architecture files, update references 2026-01-19 09:02:11 +01:00
1b34b0e974 update docs with app management and sandbox system documentation 2026-01-18 23:14:56 +01:00
2364d0d327 integrate sandbox manager with app lifecycle (LaunchApp, StopApp, IsAppRunning) 2026-01-18 23:11:24 +01:00
0278acc0fc fix build errors: add missing include, LOG_* macros, stub sandbox integration 2026-01-18 22:55:20 +01:00
60d1a75838 integrate AppManager and UpdateService into kernel with Lua API registration 2026-01-18 22:38:02 +01:00
3ab586956e add app management sources and dependencies to build system 2026-01-18 22:36:14 +01:00
5ea0cdde63 add device-side app management with AppManager, UpdateService and App Store UI (M10) 2026-01-18 22:33:15 +01:00
03556ff1d4 update go.sum with CLI dependencies 2026-01-18 22:25:44 +01:00
9ccdf846f0 remove and ignore test results 2026-01-18 22:18:13 +01:00
8cb3cf769d add documentation site with markdown rendering (M12) 2026-01-18 22:07:35 +01:00
94a573f218 change module path from github.com/omixlab to omixlab.com 2026-01-18 21:55:47 +01:00
a5aa3cc9d7 add telemetry system with analytics and crash reporting (M08) 2026-01-18 21:53:06 +01:00
fbcb5c9543 add app review system with validation pipeline and admin htmx UI 2026-01-18 21:35:43 +01:00