makepad/apps/wm-dyn/engine/Cargo.toml
Admin 232595aed3 apps, examples: the window manager on Android and Windows, the phone layouts, the task manager, director, mail and the rest; Flow, the asset UI and VJ move to Stage
App and example changes, with the apps that moved to the Stage repository (apps/vj, apps/asset-ui) removed here.

Covers work ebf442a94..2b1a41df4 for apps examples:

- wm: the Android super-app compiles tiles on the phone against the host engine
- cargo-makepad: the super-app APK is packed by `android dyn-pack`, in Rust
- widgets, storybook: the widget catalogue app, some eighty new widgets, a theme store with mixable style sheets, and the rule that a press belongs to
- wm, widgets: the style tween starts with all eight weights, and the new style sheet takes the last number instead of macOS's
- platform: the Android desk swipes at 120 Hz — offscreen render passes and framebuffers cached, SVG meshes kept, font families that complete
- flow: the flow-ui app and the flowgraph canvas return to the workspace, with staged progress in libs/flow
- app_main!: only ship the fonts an app declares (#1247)
- platform, widgets, wm: every Vulkan pass renders through a negative-height viewport again, so a Wayland or X11 window stands upright, and no capture
- calendar: its own colour contrast is named explicitly, now that the theme store exports one under the same name through the widgets glob
- platform, wm, director: a hosted app's software frame arrives as a top-left texture and the window manager and the director carry no flip term at al
- wm: the desktop style menu lists each style once
- cef, video, platform: what Stage's browser needs from the shared layers
- platform, wm: work builds again on iOS, tvOS and wasm, and the window manager is warning-free on Windows
- ci: tools/ci, a Splash runtime that watches a branch and runs every ci.splash it finds
- ci: the terminal gets its pty helper, director is a desktop tool, and a refused input is asked again
- apps: what the CI box found
- Remove Flow, asset and VJ applications moved into Stage
- ci: a quiet header, a build that visibly moves, and scripts that leave the machine alone
- tests: the workspace suite, run as a whole for the first time, passes outside the example UI tests
- examples: the UI tests pass, for the reasons they failed
- tests: the last three failures of the CI box's night
- tools: makepad-screen is makepad-agents, and its binary is `agents`
- tests: the three binaries over ten seconds in release come under it
- wm: the shell menu says what it did, and the CI waits for that
- mail: the phone layout lines up
- clock: the phone layout fits both orientations
- calendar, reminders, calculator, sheets: the phone layouts fit their space
- platform, widgets, wm: a touch that is taken away is cancelled, never released
- weather, notes, finance, photos, route: the phone layouts tidy up
- files: the phone layout tidies up
- wm: the phone shell's surfaces match the app and the grid
- wm on Android: every app is its own process
- clock: a cancelled release neither opens an alarm nor switches tab
- platform, wm: hosted apps ask the WM for what they cannot do themselves
- wm on Android: apps build on the phone
- wm on Android: app transitions and gestures feel like the phone's
- android: rotated Vulkan windows stop rebuilding their swapchain every frame, and hosted children get touch
- android: hosted children hand frames over with GPU fences and draw only when they have work
- wm on Android: gestures and surfaces settle like the phone's
- widgets: touch lists scroll with Android's physics
- wm on Android: the shell follows the Pixel launcher's motion
- wm on Android: Recents shows the apps over a receding home, and the home screen switches looks
- wm on Android: the look switcher stays put, the iOS dock shows its icons, background apps follow a look change
- task, cargo-makepad, widgets, audio: the task manager chooses its columns, graphs every process' network and disk traffic and installs itself as a D
- files: the tile view's three projections are toolbar buttons
- mail: the local view takes a theme-derived palette and line icons, search pages share records
- director: agent lanes form a tree and Grok joins the usage bar
- widgets, draw: skeuomorphic surfaces light each other through an optional relief buffer
- widgets, platform: a texture can light the relief buffer, menus take colour chips, and a style reload recompiles changed shader functions
- platform, widgets, audio_route, ai: window crossfades and whole-frame presents, caption controls that click, themed menus, a stereo-pair audio tap,
- builder: the Builder TUI matches the new terminal design, Windows executables carry app icons, and every app has one
- files: the Files app deletes nothing and never overwrites
- director: coding agents ask before acting unless you choose otherwise
- sheets, score, git, home: saves cannot cut a file short or overwrite another one, and checkouts cannot write outside the repository
- widgets, builder: the big widget families are features, all on by default, and the Builder takes none of them
- ai: Claude Desktop drives any app with the F10 panel
- wm: starts on Windows
- wm: children open no console windows on Windows
- wm: the whole deck out of a Builder's source, compiled only when the person opens an app
- ai: Connect hands the .mcpb to Claude Desktop itself
- wm: the clock and calendar know the date on Windows
- wm: opening an app rebuilds it when its binary is out of date; warm instances never build
- civil-time: one local wall clock for every app, and it knows the zone on Windows
- platform + wm: a hosted child redraws at its tile's new size
- calendar: the Calendars sheet is an opaque panel, and the wide layout does not float one over its sidebar
- platform: an app's package dir, icons and bundle name rebuild only that app
- build: the AI stack, csg, Scope and Source Library join the one workspace
- ai chat: the chat's backends are the CLI, MCP and cloud providers; the local model is the `localai` feature
- apps: every app that hosts the chat has a `localai` feature for the local model, off unless the app's own job runs one
- widgets: every widget family is a crate of its own under widgets/families, and makepad-widgets links, re-exports and registers the ones its features
- aichat, widgets: the chat reads the design feedback through the tweaker's hook, so linking the chat no longer needs the tweaker
- apps, examples, libs: each crate builds only the widget families it uses, and the design overlay is each app's own default feature
- ai chat: a build without local AI starts on the first provider that answers here, not on "No model"
- repo: no third-party comic archive, generated models or sample asset in the tree
- remove big example media files
- wm: in a Makepad Builder installation apps build through the Builder, however wm was started

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-26 20:10:58 +02:00

51 lines
2.5 KiB
TOML

# makepad-wm-engine — the engine of the Android super-app as ONE Rust `dylib`.
#
# `apps/wm-dyn` hosts apps compiled on demand to `dylib`s. Those must bind
# the host's widgets/platform/std, not a copy: rustc links an rlib that is
# already inside an upstream dylib as `IncludedFromDylib` instead of
# embedding it again. This crate is that upstream dylib: it re-exports the
# union of everything the twelve tile apps and `makepad-wm` use, so the host
# (`makepad-wm-dyn`) and every app dylib share one engine `.so`. Build the
# whole super-app graph with `RUSTFLAGS="-C prefer-dynamic"`.
#
# Only the super-app graph depends on this crate; desktop/APK builds of the
# apps keep their rlib/cdylib shape. `rlib` is here so a build without
# prefer-dynamic still links (statically).
[package]
name = "makepad-wm-engine"
version = "0.1.0"
edition = "2021"
[lib]
name = "makepad_wm_engine"
path = "src/lib.rs"
crate-type = ["dylib", "rlib"]
[dependencies]
# Superset of every feature an app or the WM asks of a shared crate. The
# packaged workspace unifies features across all of its members (the dyn-pack
# stage writes `feature-unification = "workspace"`), so an on-device `-p <app>`
# build resolves the same engine units as the host's cross-build whatever an
# app asks for; naming the union here keeps a plain desktop build of wm-dyn
# (selected-package unification) on the same units too.
makepad-widgets = { path = "../../../widgets", default-features = false, features = ["maps"] }
makepad-app-module = { path = "../../../libs/app_module" }
makepad-ai-services = { path = "../../../libs/ai/services" }
makepad-wm-theme = { path = "../../../libs/wm_theme" }
makepad-strict-json = { path = "../../../libs/strict_json" }
makepad-wm-api = { path = "../../../libs/wm_api" }
makepad-civil-time = { path = "../../../libs/civil_time" }
makepad-base64 = { path = "../../../libs/base64" }
makepad-converse = { path = "../../../libs/converse", default-features = false }
makepad-diskmap = { path = "../../../libs/diskmap" }
makepad-geodata = { path = "../../../libs/geodata" }
makepad-html = { path = "../../../libs/html" }
makepad-image-tiles = { path = "../../../libs/image_tiles" }
makepad-map-nav = { path = "../../../libs/map_nav" }
makepad-micro-serde = { path = "../../../libs/micro_serde" }
makepad-network = { path = "../../../platform/network" }
makepad-search = { path = "../../../libs/search" }
makepad-sqlite = { path = "../../../libs/sqlite_query" }
makepad-studio-protocol = { path = "../../../platform/studio" }
libloading = { path = "../../../libs/vulkan/libloading" }