makepad/libs/asset/widgets/Cargo.toml
Admin 2d23dba736 libs/asset: the store runs on our own SQLite, and the importers learn the whole map contract
The asset store now uses libs/sqlite_query as its ONLY engine — not a feature
flag, not a fallback. That closes the Windows gap (the embedded store starts
there now, and a SHARED->EXCLUSIVE upgrade is handled rather than assumed
free) and takes the C dependency out of the build everywhere else.

Around it:

  - store: a garbage collector, catalogued content that is referenced in place
    instead of copied, the `vjeffect` kind, and host/chat routes that keep up
    with the chat wire below.
  - importer: the unified map contract reaches quake2, quake3, doom and duke —
    world placement, nav, welding, prelit maps and glTF node handling shared
    rather than reimplemented per game. Music import, billboards and stateful
    props move to the data crate so readers stop linking the importer.
  - ai: the serving side of multi-lane chat — per-lane conversations, honest
    progress and acceptance reporting, penalties and a watchdog, context as a
    per-box number that compacts instead of erupting, a realtime session mode,
    and inpaint/flux2 backends. `chat_bench` measures the rate the way the
    client meter computes it.
  - client / chat / chat_ui: a publication can NAME a file instead of carrying
    it; the wire says whether a turn is warm and whether it is thinking, so a
    client stops guessing; transcript and feed widgets render history the way
    the model wrote it. `SessionConfig::catalog_runtime` lets a host size the
    catalog runtime's lanes itself — a browsing UI puts every listing, every
    per-tile resolve and every thumbnail blob through that one runtime and
    wants a wider fast lane than the shared default, while media lanes keep
    it (a few big transfers, not a thousand small ones).
  - widgets: the shared asset widgets — one video view (knobbed seek,
    transport, bracket trim, rail playback) used everywhere, plus thumb,
    preview, scene view, walk-world and the lyric reader.
2026-08-23 01:34:34 +02:00

57 lines
2.7 KiB
TOML

# Shared asset preview/viewer widgets.
#
# The pool every host draws catalog content with: the asset UI's Create
# viewer and Library preview, the VJ and DJ surfaces, the sandbox later.
# Widgets here take TYPED content in (blob bytes, decoded textures, manifest
# facts) and hand actions back out; they never reach into an app's state, own
# an audio device, or talk to a server.
#
# Styling follows the widget-library pattern: every widget registers a
# `set_type_default()` base, so a host restyles by overriding draw props in
# its own script_mod rather than forking the code.
#
# Dependency policy: the WIDGET LAYER depends on the widget library plus
# ZERO-DEPENDENCY leaf crates only. Not the asset-server client, not the
# renderer — a preview is HANDED content, it does not go and get it.
#
# That is a hard constraint, not tidiness: apps/sandbox is a nested cargo
# workspace that cannot depend on makepad-asset-client at all (the
# nested-workspace-root refusal), and it must be able to adopt these widgets
# with its own blob supply. Client-wired convenience (resolve an asset id,
# stream a blob, decode it) belongs in the host or in a later optional
# feature the sandbox does not enable.
#
# makepad-asset-data IS admitted (the sandbox already depends on it): it is
# the zero-dependency contract crate, and the thumbnail widget's whole job
# is to obey the ThumbnailView declarations written in it. Mirroring those
# types here to dodge the dependency would be a second copy of the contract
# — exactly the drift the shared crate exists to end.
[package]
name = "makepad-asset-widgets"
version = "0.1.0"
edition = "2021"
[dependencies]
makepad-widgets = { path = "../../../widgets" }
# Two ZERO-DEPENDENCY leaf crates, which is the whole reason they are
# allowed here: the sandbox can take either without dragging a workspace
# along. They let a well DRAW a track — decode the bytes the host handed
# over and render the same spectrogram and wave strip the importer bakes —
# instead of only ever showing a picture somebody else made.
makepad-audio-decode = { path = "../../audio_decode" }
makepad-audio-picture = { path = "../../audio_picture" }
# The content contract's data types — zero dependencies, see the policy
# note above. AssetThumb interprets ThumbnailView declarations from here.
makepad-asset-data = { path = "../data" }
[features]
# Renderer-backed faces: the mesh turntable and the autonomous world
# walkthrough. OFF by default, because makepad-render is a real dependency
# and `apps/sandbox` (a nested cargo workspace) must be able to adopt the
# 2D faces without it. A host that wants a mesh or a world well turns it on.
renderer = ["dep:makepad-render"]
[dependencies.makepad-render]
path = "../../render"
optional = true