makepad/apps/aichat/Cargo.toml
Admin 8625076661 aichat + photos + image_tiles: make me a picture and it lands on the wall; the wall filters as you type, tiles flying to their places
gen.image{prompt} is a service inside the assistant: on a worker it
runs the creator pipeline for the image domain against the node the
runner picks (LAN discovery, ETA-ranked, the resident flux model wins),
streams the node's progress into the tool card, and writes the picture
under the makepad home's gen/ dir; the creator library gains
generate_bytes — the request, poll and fetch that generate_and_publish
now shares — so no second pipeline exists. photos.add{path} bakes that
one file into the open library (only from the gen dir or the person's
home), re-opens the wall and glides onto the new picture; the module
executor answers it later through the host's reply sink. The model
chains them, launching photos in between. A registry seam found on the
way: a call dispatched in the same event a link was adopted reached the
port before its Registered, so the registry now answers a leading
Register at once.

The wall gained a search box: every keystroke re-cuts the packing over
the matches (every word in a title or link; title beats link, a whole
word beats a substring), each picture flies from its drawn rect to its
target over 450 ms, dropped pictures shrink and fade, returning ones
grow back; Esc clears; ⌘F or a bare slash focuses the box; the status
reads "35 of 293 · ro". photos.filter{query} sets the same from the
pane; instances are rebuilt only while a flight runs, and the clock is
the platform's.

Proven on the fleet: "make me a picture of a red bicycle on the moon
and put it in photos" → the file in 40 s, photos launched, added and
shown among the comics; typing r, ro, rob re-packs the wall live; the
filter through the pane in a process tile and as a module. ai-services
39, aichat 5, photos 9, image_tiles 12, creator 9; aichat and photos
check for wasm32.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-02 20:03:54 +02:00

46 lines
1.7 KiB
TOML

# aichat — the assistant, as an app.
#
# One conversation that drives every application through the AI services
# layer. It is hosted three ways with one code base: under the window
# manager as a special child seated in the pane slot (this binary,
# `--stdin-loop`), standalone as its own window (this binary), and inside
# any app's Window as the F10 overlay or inside the mobile/web superbuild
# (this crate's lib, `makepad_aichat::script_mod` + `AiChatPanel{}`).
#
# The panel widget OWNS the engine: the service registry, the model, the
# transcript. Hosts only feed it links (in-process) or bus frames (the
# window manager's studio Custom frames) and give it a place to draw.
#
# Plan of record: repo-root aicontrol.md.
[package]
name = "makepad-aichat"
version = "0.1.0"
edition = "2021"
default-run = "aichat"
[lib]
name = "makepad_aichat"
path = "src/lib.rs"
[[bin]]
name = "aichat"
path = "src/main.rs"
[features]
default = ["engine"]
# The real models (the hub's local runtime, the cloud providers). Off for a
# build without a model runtime — the web page answers with NoModel and the
# tool console still works.
engine = ["makepad-ai-services/engine", "dep:makepad-asset-creator"]
[dependencies]
makepad-widgets = { path = "../../widgets" }
makepad-wm-theme = { path = "../../libs/wm_theme" }
makepad-wm-api = { path = "../../libs/wm_api" }
makepad-ai-services = { path = "../../libs/ai/services", default-features = false }
makepad-strict-json = { path = "../../libs/strict_json" }
# The generative pipelines behind the assistant's own `gen` service
# (src/gen.rs): the creator runner picks a fleet node and brings the
# picture back. Native only, with the engine.
makepad-asset-creator = { path = "../../libs/asset/creator", optional = true }