fix(android): A2/A3/A4 — APK build doc, dead refs, modal hit targets
A2: docs/ANDROID.md — remove stale "permanent fix to come" note;
clarify --lib is the canonical command; root-cause the upstream
cargo-apk bug. SESSION_HANDOFF.md closes the open item.
A3: Remove dead CARD_PLAN.md references from four source module
doc comments (theme/importer.rs, theme/plugin.rs, assets/mod.rs,
assets/svg_loader.rs). Also fix stale "future picker UI" language
in plugin.rs (picker shipped in Phase 7).
A4: ui_modal.rs spawn_modal_button — add min_height: Val::Px(48.0)
so every modal action button meets Material's 48 dp touch target
minimum. Modal button height was 42 px (2×SPACE_3 + TYPE_BODY_LG);
now clamped to 48 px minimum. Cards at 40 dp on 360 dp phones are
layout-constrained (7 columns) and cannot be widened.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+2
-2
@@ -72,8 +72,8 @@ Also shipped (pre-Phase 8 but post-v0.22.0, already in CHANGELOG):
|
||||
hook confirmed `ClipboardManager.setPrimaryClip()` succeeds on Android 14.
|
||||
Hook reverted. Production path requires Interaction::Pressed + non-null `share_url`.
|
||||
Note: `adb shell input tap` doesn't deliver touch events on headless AVD (documented).
|
||||
- **`cargo apk build --lib` noisy stderr** — post-sign panic doesn't affect the
|
||||
APK but pollutes CI output. Document `--lib` as canonical or upstream a fix.
|
||||
- [x] **`cargo apk build --lib` noisy stderr** — upstream cargo-apk bug; `--lib`
|
||||
is the canonical command (CLAUDE.md §15.1, docs/ANDROID.md). No in-repo fix possible.
|
||||
|
||||
### 5. Feature completeness
|
||||
- [x] **Theme importer UI.** Done (`613bbf8`): "Scan for new themes" button in
|
||||
|
||||
+8
-6
@@ -143,16 +143,18 @@ After the APK is signed cargo-apk panics with:
|
||||
thread 'main' panicked: Bin is not compatible with Cdylib
|
||||
```
|
||||
|
||||
This happens AFTER the APK is on disk and signed. cargo-apk is
|
||||
trying to also wrap the desktop `[[bin]]` target. The APK is still
|
||||
valid. Work around with `--lib`:
|
||||
This happens AFTER the APK is on disk and signed. cargo-apk tries to
|
||||
also wrap the desktop `[[bin]]` target alongside the `[lib]`. The APK
|
||||
is valid — the panic is cosmetic. **Always use `--lib`**, which is the
|
||||
canonical build command (see `CLAUDE.md §15.1`):
|
||||
|
||||
```bash
|
||||
cargo apk build -p solitaire_app --target x86_64-linux-android --lib
|
||||
cargo apk build -p solitaire_app --lib
|
||||
```
|
||||
|
||||
(Permanent fix to come — likely a `[[bin]] required-features = ["desktop"]`
|
||||
gate so cargo-apk skips the bin target on Android.)
|
||||
Root cause: upstream cargo-apk bug — it does not skip `[[bin]]` targets
|
||||
when building for Android. No in-repo fix is possible; `--lib` is the
|
||||
accepted workaround.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
//! Asset-loading infrastructure for runtime SVG rasterisation and the
|
||||
//! per-platform user-themes directory.
|
||||
//!
|
||||
//! See `CARD_PLAN.md` for the full multi-phase implementation plan.
|
||||
//! This module is the entry point for Phases 1 (SVG → `Image`) and 5
|
||||
//! (user-themes directory). Phase 3 will extend it further with custom
|
||||
//! `AssetSource` implementations for `embedded://` and `themes://`.
|
||||
//! Provides the SVG → `Image` loader and the `embedded://` / `themes://`
|
||||
//! custom `AssetSource` implementations used by the theme system.
|
||||
|
||||
pub mod card_face_svg;
|
||||
pub mod icon_svg;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//! Bevy `AssetLoader` that rasterises an SVG into `bevy::image::Image`.
|
||||
//!
|
||||
//! The card-theme system (see `CARD_PLAN.md`) ships SVG sources both as
|
||||
//! The card-theme system ships SVG sources both as
|
||||
//! the embedded default theme and as user-supplied themes. Bevy 0.18 has
|
||||
//! no built-in SVG support, so this loader bridges `usvg` (parser) +
|
||||
//! `resvg` (renderer) + `tiny-skia` (CPU pixmap) to produce textures
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//! Theme zip-archive importer.
|
||||
//!
|
||||
//! Phase 7 of the card-theme system (see `CARD_PLAN.md`). Players ship
|
||||
//! Players ship
|
||||
//! and install third-party themes as a single `.zip` containing a
|
||||
//! `theme.ron` manifest at the archive root plus the 52 face SVGs and
|
||||
//! one back SVG referenced by that manifest. [`import_theme`] is the
|
||||
|
||||
@@ -3,10 +3,8 @@
|
||||
//! with the currently-loaded theme so existing card-rendering systems
|
||||
//! pick up the new artwork on the next state-changed tick.
|
||||
//!
|
||||
//! Phase 4 of `CARD_PLAN.md`. The plugin's `set_theme` helper is the
|
||||
//! public API that the future picker UI (Phase 6) calls; for now it's
|
||||
//! exposed for tests and for any embedder that wants to load an
|
||||
//! alternative theme manually.
|
||||
//! The plugin's `set_theme` helper is the public API used by the
|
||||
//! Settings appearance picker and exposed for tests.
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
||||
|
||||
@@ -372,6 +372,7 @@ pub fn spawn_modal_button<M: Component>(
|
||||
Button,
|
||||
Node {
|
||||
padding: UiRect::axes(VAL_SPACE_4, VAL_SPACE_3),
|
||||
min_height: Val::Px(48.0),
|
||||
justify_content: JustifyContent::Center,
|
||||
align_items: AlignItems::Center,
|
||||
column_gap: VAL_SPACE_2,
|
||||
|
||||
Reference in New Issue
Block a user