Commit graph

  • 091712f55a Merge upstream origin/dev c86415ef6 (30 commits) into nigig fork - preserve work content, game crates, nigig protocol, widgets layout nigig-makepad-test-android andodeki 2026-09-27 01:53:53 +03:00
  • c86415ef67 map_build: the repacker builds on Windows again -- repack and repack_remote read and wrote at offsets through Unix's FileExt, so makepad-map-build stopped compiling for Windows (the CI's workspace row, red since 6c5c71f92). A ReadExactAt shim gives read_exact_at and write_all_at on every platform: Unix's FileExt, and on Windows the same from seek_read/seek_write; repack_remote is built wherever repack is. Checked: cargo check of makepad-map-tiles' bins for the host and x86_64-pc-windows-gnu, the repack lib tests Admin 2026-09-27 00:17:25 +02:00
  • b7a96ebdf9 widgets: Tab leaves an open menu the keyboard, and Return opens a FloatingAction without shutting it again -- two menus tests red on the CI since the dev merge (c27ee1dcc). NavControl's new wrapping Tab treated a focus that is no stop as "nothing focused" and jumped to the first stop, so an open RadialMenu (which takes itself out of the stops) lost the keyboard; such a focus now keeps it. Button now activates from Return/Space itself, so the set's button pressed after the set's own key_down had opened it and shut it again; the set keeps its activation keys from its button (and Numpad Enter now opens it too, as it presses any button). Checked: makepad-widgets-core, -menus, -extras, -data lib tests all pass Admin 2026-09-26 23:56:53 +02:00
  • 6c5c71f92e maps: tiles ship only what the renderer draws, and a frame draws only what is on screen -- one detail contract in mbtile_reader::map_tags (detail_feature_used, micro_icon, the tag allowlist) is shared by the renderer (MvtSink::wants_feature skips rejected osm_* features in the detail pass before any id is allocated), the base bake (non --full drops them and stamps makepad_detail_contract=features-v1) and the repacker (a DATA_POLICY row; the verifier accepts exactly the contract's drops): address-only nodes (85% of detail points), plain road/building lines duplicated by the base and polygon layers, and relation points go; icons, trees, bridge corridors, platforms and detail buildings stay. Hosted city tiles shrink ~24% (Amsterdam z14 608 -> 465 KB). makepad-map-render-check builds each tile from the original and the rewrite at buckets 14-18 in 2D and 3D and requires identical buffers (bitwise digest, NaN-safe) and equal baked-face hits: ~3000 builds over local and hosted world tiles, 0 mismatches. Found on the way: base, detail and overlay polygon ids all started at 1 and the fill pass groups rings by id, so unrelated polygons of one colour fused; they now use disjoint ranges. makepad-map-repack --in-place converts an archive over itself shard by shard (cross-shard blobs stashed first, each partial verified tile by tile against the still-present original, journaled, renamed; root last; resumable), and --remote user@host:/dir runs it from this machine over parallel ssh streams against a sparse local mirror with SHA-256 checks. GPU/memory: only visible tiles are drawn (the prefetch ring, a whole z14 tile wide past z14, was drawn every frame), building outlines, flat-road fringes and roof edges move to the compact 28/16-byte formats, the shadow pass skips unlifted road chunks and off-screen terrain cells are skipped; z16 flat 6.3 -> 3.8 ms GPU, 123 -> 36 draws, 151 -> 94 MB resident; z17.5 7.3 -> 3.6 ms, 158 -> 26 MB; max tilt 5.5 -> 2.8 ms; pixels unchanged. New traces gpu.shaders, map.streams, map.frame Admin 2026-09-26 23:06:50 +02:00
  • c43831fe9c builder: apps build on their own menu row while the menu stays usable, with a queue, cancel and the Experiments list inline -- Return on an app downloads and compiles it in the background: its row spins in Makepad orange and shows the step with a short orange bar ("⠴ compiling ━━━━━─────── 50 / 118 crates"), and it opens by itself when done; nothing else is on the row. Return on another app while one compiles queues it ("◌ queued · next", "· 2 to go"); the next starts when the one before ends. Every build and queue entry carries its own open-when-done flag: Return on that app's row sets it (idle, queued or compiling), Compile all never does (its apps are only compiled: "✓ … is compiled."), and s turns it off or on for the selected compiling or queued row. c cancels the selected build (Cargo, its compilers and the downloads stop -- the Windows job object, curl killed, the shell's process tree; what was downloaded and compiled stays and the row says "stopped · continue") or takes a queued app out; on Compile all it takes out its queued apps. The footer shows "s don't start" / "s start when done" and "c cancel", letters in orange, only where they apply, and the line under the rule says what the selected row does or what happens with the build ("Compiling from source. It opens by itself when it is done.", "Queued behind Makepad Amp; it compiles and opens after it.", "... only compiles; press s or ⏎ to open it when done."). Update checks on its own row the same way, beside a build (one checkout writes a snapshot at a time). Experiments is a tree node in the main menu (▸/▾) with Compile all and every experiment indented under it; license labels are beta, licensed and free, and statuses line up at column 30. Everything above the footer, header included, scrolls with the selection; the rule, status lines and keys stay pinned at the bottom with "↑ n above · ↓ n more" above them, and the gap above the footer is gone. Accents are Makepad orange throughout (the .bat's first screen too). Same screens and keys in the Windows TUI and makepad.sh (background jobs there, a 0.2 s tick, a redraw after a window resize). Checked: cargo check for the host, x86_64-pc-windows-gnu and -msvc, the builder lib tests, and both TUIs driven in a pty (OSC 11 dark and light, 80x24 to 110x40) through real downloads and compiles of the public experiments: inline progress, queue and automatic next, Return and s on the flag, cancel of compiling and queued rows with no compiler left running, Compile all and its cancel, the update check beside a build, quitting while compiling, the Experiments node, scrolling in a short window and the Log in page's mark. Not run on a real Windows console Admin 2026-09-26 23:41:27 +02:00
  • 8fd4158601 builder: the email shows on the Account row only, not also at the header's right Admin 2026-09-26 22:40:57 +02:00
  • 79c5c24f0f builder: the Makepad mark is always whole, bars fill in Makepad orange, and the header says Makepad Apps -- the mark was cut off on short screens (log in, sub-pages: the rule followed the rows, leaving it a few lines) and had holes where text or the selection band crossed it. The rule, status, choice and footer now keep to the bottom of the window, and the mark (logo.txt now holds a 44 x 13 and a 30 x 9 version) goes where it fits whole beside every row's text with two columns of air, as near the middle as it can: the large one if it fits anywhere, else the small one, else none. The selected row's "<action> ⏎" does not count, so the mark does not move with the selection; where the hint reaches into it the text wins, and on the band row the dots lie over the band. Progress bars fill in Makepad orange. The header reads "Makepad Apps" and the subtitle "Shipped as source code, so your coding agent can customize everything." (Windows TUI, makepad.sh and the .bat's first screen). Checked in a pty for the Rust TUI and makepad.sh: log-in, menu, the band crossing the mark, dark and light backgrounds Admin 2026-09-26 22:39:23 +02:00
  • 3c3bf7193d builder (windows): compiling the Builder no longer promises "about a minute" -- it often takes longer Admin 2026-09-26 22:32:36 +02:00
  • 2485661407 builder: the menu gets the Makepad mark behind it and a quieter selection -- the selected row sits on a faint grey band with one Makepad-orange ▌ as its only accent, and its action (run ⏎, open list ⏎) is green; orange is never a background, an action or a bar. The Makepad mark (logo.txt: the SVG's triangles as braille dots, 44 x 13) is drawn faintly at the right of the window (up to 100 columns) behind the rows, only right of each line's text with two columns of air and never on the band, and only when the window leaves it room; makepad.sh embeds the same lines. The band and logo greys follow the terminal's background: OSC 11 (macOS, Linux), then COLORFGBG, dark otherwise, which is Windows' case. The CODING AGENTS heading loses its explanation. Checked: cargo check for the host and x86_64-pc-windows-gnu, the lib tests, the Rust TUI and makepad.sh in a pty answering OSC 11 dark and light (band, marker, logo colours and the logo clearing the text) Admin 2026-09-26 22:30:34 +02:00
  • 87d6d9063a builder: clearing build data has delete selected -- the person already chose the Disk row to clear it; keep stays one key away Admin 2026-09-26 22:07:36 +02:00
  • 98c425fce4 builder: the menu stays on its row after a build, Update sits at the top, and the GPU notice says why -- keys pressed during a work page, and trackpad scrolls that terminals send as arrow keys, were queued and applied once the build ended, so the cursor jumped (to Shell after Amp compiled); work_end now throws away what is waiting (console::drain on Windows and Unix, drain_keys in makepad.sh). The Update row moves above YOUR APPS, and the menu still opens on the first app (makepad.sh's first_license_row counts rows with awk, which reads all of main_rows). The GPU notice reads "Makepad relies on your GPU to draw its UI and implement AI functionality just like a videogame does. Old hardware and broken drivers can cause your computer to reboot unexpectedly." Admin 2026-09-26 22:06:13 +02:00
  • 6f6981b430 builder: an app's build page says "Your app is compiling from source, it will start when completed." Admin 2026-09-26 22:02:25 +02:00
  • 6c8fe91ad3 builder: an app's build page has no subtitle -- a build can take longer than a minute, and the step rows already say what happens Admin 2026-09-26 21:59:37 +02:00
  • 45284862d7 builder: an app's build page says "Your app is compiling, it will only take a minute." -- one subtitle for a first build and a rebuild, on Windows and in makepad.sh Admin 2026-09-26 21:55:42 +02:00
  • 33f1ae624d builder: the log-in page says it in one line -- "Enter the email address you bought your Makepad product with, or have beta access for. Leave it empty for the free apps.", on Windows and in makepad.sh Admin 2026-09-26 21:51:26 +02:00
  • 21cc12d851 builder: the menu starts with your apps and asks about local AI only when it matters -- YOUR APPS comes first (the menu opens on the first one), then MAKEPAD EXPERIMENTS (one row opening the list), CODING AGENTS, and SETUP last with only Account, Graphics, Agreements, Disk and Update. The Build tools, Rust, Xcode tools/System packages and CUDA rows are gone, and nothing is installed at the start: an app sets up what it needs when it is first built, as it already did. Windows has two modes, recorded in selected-compiler and never switched afterwards: no local AI with Rust's GNU toolchain, or local AI with Microsoft's Build Tools, the Windows SDK and CUDA. Only the first build of an app with CUDA features on a PC with an NVIDIA driver asks, on one "› Local AI" page: the NVIDIA, Microsoft Build Tools and Windows SDK agreements (Return opens one in the browser), then "Agree and enable local AI" (selected) and "No local AI"; Escape goes back to the menu without deciding. Without an NVIDIA driver, for other apps and on macOS/Linux nobody is asked. makepad.sh gets the same order; its first_license_row no longer pipes the menu into sed ...q, which with YOUR APPS on the first line closed the pipe under main_rows' printf and stopped the Builder. Checked: cargo check for the host and x86_64-pc-windows-gnu without warnings, the lib tests, and makepad.sh in a pty with a scratch HOME through log-in, folder, the menu and the experiments list Admin 2026-09-26 21:48:57 +02:00
  • 8c7a20c5b5 terminal: the shell starts without makepad-agents on macOS -- since 9 September ("no forks") the terminal spawned its shell with posix_spawn through the agents helper, which it looked for beside its own executable; a terminal the Builder built (Terminal.app, builder/terminal.bin) had none and opened no shell. macOS spawns the shell as Linux does again, and as it did before: Command::spawn with setsid and TIOCSCTTY in pre_exec (both async-signal-safe), so the pty is the shell's controlling terminal and the app needs no other binary. makepad-agents keeps its own posix_spawn helper for Director. Checked with a release build alone in a folder: the prompt comes up, tty reports the pty, a background job shows in jobs; makepad-terminal tests pass (336) Admin 2026-09-26 20:58:37 +02:00
  • 648b551d51 ci: an app checkout inside the CI's checkout takes its branch tip as it is -- the sync pulled apps/scope and apps/stage with --ff-only, and a build that regenerated Scope's tracked Cargo.lock there made every pull refuse: each run on the mini went red at sync from ecc82e8a2 on (19 runs, nothing built or tested). They are the CI's, so they are fetched and reset hard to their upstream Admin 2026-09-26 20:19:03 +02:00
  • c27ee1dccb tools, ci, docs, workspace: the Builder ships as source on Windows and is one shell script on macOS and Linux, the CI box, makepad-agents, cargo-makepad, and one workspace for every crate Admin 2026-09-26 20:11:20 +02:00
  • 036fa2fd86 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 Admin 2026-09-26 20:10:58 +02:00
  • f6a99a2721 libs: the AI stack, flowgraph, git, audio_route, win_resource and the other libraries; Flow, the asset library and VJ move to Stage Admin 2026-09-26 20:10:57 +02:00
  • e94e15f429 draw, widgets: the library is makepad-widgets-core plus a crate per widget family, eighty new widgets and the storybook, relief-lit skeuomorphic surfaces, the feedback panel, keyboard focus and tooltips clear of the cursor Admin 2026-09-26 20:10:50 +02:00
  • ea2b2942aa platform: web builds start and draw text again, every app builds the same windows crate, and apps read the clipboard and find their resource map in the Builder's folder Admin 2026-09-26 20:10:24 +02:00
  • fb84574715 platform: faster builds and sturdier runs -- #[derive(Script)] emits one helper call per field, studio-protocol no longer waits for script, an app's package dir, icons and bundle name rebuild only that app, MAKEPAD=gpusim builds again, and a contained panic on macOS no longer frees the windows under AppKit Admin 2026-09-26 20:10:03 +02:00
  • 588a19aae9 platform: Windows and macOS -- every window keeps animating with several open, half-float RGBA textures have four channels, a first-opened popup draws its rows, a texture pass before its window has a size is skipped, desktop apps open no console window, the macOS display link is kept until invalidated, and a hosted child redraws at its tile's new size Admin 2026-09-26 20:09:39 +02:00
  • d7ae76ae92 platform: hosted apps on Android -- every app its own process under the WM, frames handed over with GPU fences, a touch that is taken away is cancelled, hosted children ask the WM for what they cannot do, window crossfades and whole-frame presents, relief-lit textures Admin 2026-09-26 20:09:17 +02:00
  • 01a1c70b76 script: the Octoscript VM hardening -- execution caps, fuel and deadlines, heap/string/array/object limits, parser diagnostics and re-entrant dispatch, keeping a Makepad host's semantics and speed Admin 2026-09-26 20:08:33 +02:00
  • a185b868d1 platform: GPU passes store top-left rows on every backend, hosted apps get software frames as textures, the Android desk renders at 120 Hz, and the platform builds warning-free on every CI target Admin 2026-09-26 20:08:13 +02:00
  • 229057962a
    ScrollBar: fade out when idle, like macOS overlay scrollers (#1264) Kevin Boos 2026-09-26 08:23:58 -07:00
  • 33fbfd6733 remove big example media files Admin 2026-09-26 13:39:29 +02:00
  • 014bbc343c remove big example media files Admin 2026-09-26 13:32:23 +02:00
  • a3d8f521a9 fix(game/render): port EntityLocal particle anchors from libs/render nigig-traffic-camera-boom-fix andodeki 2026-09-26 11:17:02 +00:00
  • 1561856949 fix(game): pass filmed body to 5-arg camera_boom_limit andodeki 2026-09-26 11:15:34 +00:00
  • b580de105b fix(fork): refresh widgets from upstream work + re-apply sibling reexports andodeki 2026-09-26 03:20:34 +03:00
  • e3a1e72e53 fix(fork): refresh ai-hub from upstream work - HttpServerHandle API andodeki 2026-09-26 03:14:42 +03:00
  • 82c6ef3ab0 fix(fork): refresh draw from upstream work - font API skew andodeki 2026-09-26 03:11:40 +03:00
  • 562dfde5e3 fix(fork): add Touch protocol names to makepad-test studio_msg_name andodeki 2026-09-26 03:07:45 +03:00
  • ba69fc28bf fix(fork): refresh libs/regex from upstream work - ascii_word_boundary andodeki 2026-09-26 03:02:48 +03:00
  • b211a372d9 fix(fork): base platform+test on upstream work 5f99533 + re-apply nigig BeforeStartup, NIGIG_TEST_MODE, touch protocol andodeki 2026-09-25 23:19:08 +03:00
  • 4e8c0b5182 fix(fork): refresh libs/regex from upstream dev - add ascii_word_boundary andodeki 2026-09-25 23:02:43 +03:00
  • 8eaa075f1f fix(fork): refresh platform from upstream dev fda40f5 + re-apply nigig BeforeStartup, NIGIG_TEST_MODE, touch/long-press/paste/IME protocol andodeki 2026-09-25 22:55:32 +03:00
  • 91b6267f84 fix(fork): restore upstream metal.rs - fix merge delimiter artifact andodeki 2026-09-25 21:11:01 +03:00
  • ce45048baf fix(fork): restore upstream blocking_http streaming API + add RemotePinch alongside nigig touch/joystick protocol andodeki 2026-09-25 20:47:20 +03:00
  • afccda5445 fix(fork): restore nigig game-sim/math + workspace members, take upstream finance/route manifests - preserve game crates alongside dev/work split into scene/soft-body andodeki 2026-09-25 20:12:03 +03:00
  • 99ca24dbbc Merge upstream origin/work 5f99533 into nigig fork alongside dev andodeki 2026-09-25 17:32:26 +03:00
  • a0f46b7d83 Merge upstream origin/dev fda40f56 into nigig fork - preserve nigig hub/web_server, take upstream dev updates andodeki 2026-09-25 17:25:35 +03:00
  • 02d92e5cb9 Merge remote fork gitdab/nigig-makepad-test-android preserving local nigig android commits andodeki 2026-09-25 16:35:10 +03:00
  • cfb2a4b0ba Merge remote fork gitdab/nigig-makepad-test-android (66cc4f1) preserving local 10 nigig android commits andodeki 2026-09-25 16:24:43 +03:00
  • 5f99533505 Merge branch 'wm-fixes' into work Admin 2026-09-25 11:20:28 +02:00
  • 343de346b7 calendar: the Calendars sheet is an opaque panel, and the wide layout does not float one over its sidebar -- paper (sheets, pages, panels) was the theme's inset tint, 15% black in the desktop dark theme, so every sheet showed the content under it; it is now that tint over the window background, the colour the root already showed. A Calendars sheet or page carried from the phone or landscape layout into the wide one reopened as a 320 pt panel at the phone button's position, its Close floating over the sidebar's own calendar rows; the wide layout closes it, since the sidebar lists the calendars Admin 2026-09-25 11:14:14 +02:00
  • f82a3c2126 draw: glass of a view that stopped drawing leaves the screen -- a glass surface records into the window overlay and stays there while its parent list does not redraw (a cached view); a texture-cached view that went invisible never redraws, so its glass stayed where it last was. The calendar switching from its phone layout to the wide one kept the phone toolbar's glass capsule over the sidebar's mini month. The overlay now also drops a glass whose parent list renders into a pass that is no longer attached (Cx::pass_attachment_is_stale, walked up the texture-pass chain) Admin 2026-09-25 11:14:14 +02:00
  • abcb4c3445 platform (windows): a texture pass drawn before its window has a size is skipped, not a crash -- a hosted child can draw before the host's first WindowGeomChange, at dpi 0, so a texture-cached view's pass had a NaN size: the viewport check (< 1) let NaN through, CreateTexture2D failed and the unwrap of the missing render target killed the child (calendar in wm on .100: 'Websocket closed', 3 of 4 launches). setup_pass_render_targets now says whether there is a target to draw into (refuses NaN and a render target the device could not create) and draw_pass_to_texture skips the pass Admin 2026-09-25 11:14:14 +02:00
  • b9882bff16 platform + wm: a hosted child redraws at its tile's new size -- two ways a geometry change was lost, measured on Windows (.100) with wm hosting clock and calendar: after a split or a resize the child kept drawing at its old size and the tile showed that frame stretched or squeezed into the new rect (child logs: the WindowGeomChange never arrived, painting stayed at 2268x1428 against a 560-wide tile) Admin 2026-09-25 11:14:14 +02:00
  • d51069baea Merge branch 'win-deck' into work Admin 2026-09-25 10:53:36 +02:00
  • 3c56f0cf08 Merge branch 'd3d-first-draw' into work Admin 2026-09-25 10:53:36 +02:00
  • 2b05e260c1 Merge branch 'mcp-reverse' into work Admin 2026-09-25 10:53:35 +02:00
  • 641ef10a1f civil-time: one local wall clock for every app, and it knows the zone on Windows -- the Clock app said "UTC" on Windows because its localtime_r copy was Unix-only; clock, calendar, task, mail and wm each carried their own copy (mail's macOS-only, wm's with a separate GetLocalTime path). makepad_civil_time::local() now breaks an epoch second down by the OS's own zone rules (localtime_r on Unix, FileTimeToSystemTime + SystemTimeToTzSpecificLocalTime on Windows, so DST applies at that instant) with the UTC offset, and all five apps use it Admin 2026-09-25 10:22:13 +02:00
  • c023dbd28b builder: an app edited after its build shows as needing a compile -- besides a newer release, the Builder reads Cargo's dep-info for the built app (target/release/<binary>.d) and shows 'compile' when any source it lists is newer than the app or gone, so changes made by a coding agent or the person are visible in the menu after an update; the check is cached per app (rechecked when the app is rebuilt or after 5 s) Admin 2026-09-25 10:19:39 +02:00
  • 48f7eabac1 wm: opening an app rebuilds it when its binary is out of date; warm instances never build -- the rule is that pre-warmed ("hot") clients only start when nothing has to compile, not that nothing compiles: opening an app (a click, F10 for the pane) builds it when its binary is missing OR older than any source cargo's dep-info (<bin>.d) lists, on every platform, then runs it in the same tile. The warm pool, the pane at startup and previews run only built, up-to-date binaries; a stale one is not warmed (remembered by its build time, so the check runs once per build) until an open rebuilds it. So no build of wm's own ever holds cargo's lock ahead of the app the person opened. A build logs to wm-client-<id>-build.log, which the app's own log no longer overwrites. On .100 with the Builder's environment: startup ran no cargo and left the stale terminal cold; Photos opened 10 s after start built and drew in 9.9 s with no lock wait; the stale terminal rebuilt on open (4.1 s) and was warmed again after Admin 2026-09-25 02:08:06 +02:00
  • d4f8533e42 platform (windows): a popup opened for the first time draws its rows -- AI provider dropdown, Styles menu and every other first open showed only the menu's background Admin 2026-09-25 02:03:03 +02:00
  • 10cc3eb7dc wm: the clock and calendar know the date on Windows -- local_now() had only a POSIX (localtime_r) version and returned None on Windows, so the date view fell back to January 1 2026 and the bar's clock had no local time; Windows reads it from GetLocalTime Admin 2026-09-25 02:02:00 +02:00
  • 6c05f3d43d ai: Connect hands the .mcpb to Claude Desktop itself -- Windows associates no program with .mcpb, so opening it with the OS opener did nothing there; Claude Desktop takes the bundle's path as an argument, running or not, and shows its install dialog Admin 2026-09-25 02:01:34 +02:00
  • 8f4e447367 builder: CUDA crates build in an installation whose path has a space -- nvcc cannot create its intermediate files under a TMP with a space (Downloads\makepad-builder (2)) or in the verbatim \\?\ form canonicalize gives on Windows ("Could not open output file '\\?\...\tmp/tmpxft_...'"), so with CUDA installed every crate with CUDA kernels failed (aichat and files, built by wm, on .100). On Windows TEMP/TMP/TMPDIR are the tmp folder's plain short (8.3) path; measured on .100: the verbatim and spaced TMP fail, the short one compiles Admin 2026-09-25 01:54:08 +02:00
  • 8a7758947d wm: the whole deck out of a Builder's source, compiled only when the person opens an app -- the Builder starts wm in the source it downloaded (with its compiler environment), but wm took a checkout to need local/, which a download has not: it fell back to sibling binaries, listed only the apps already built next to it (calculator, calendar, mixer, route) and logged "binary not found: aichat / terminal / browser / files / task". A checkout is now the workspace with apps/wm in it. And wm compiles nothing behind the person's back: every child is its built binary (the checkout's release build in CARGO_TARGET_DIR, the Builder's shared target, or the installed sibling), started directly instead of through cargo run; the warm pool, the AI pane at startup and previews start only apps that are built (seven cargo runs at startup queued on one target lock while the clicked app said "Waiting to compile" behind them). The menu lists every deck app, "compiles when opened" under those not built; opening one runs a single hidden cargo build --release -p <pkg> --bin <bin> whose progress bar is read into the tile ("compiling 103/107 crates · makepad-widgets…"), and the app starts in that tile when it is built, or the tile says the build failed and names its log Admin 2026-09-25 01:54:08 +02:00
  • 482b2b1f56 wm: children open no console windows on Windows -- wm is a windowed program started detached by the Builder, so it has no console; every console program it started (the pre-ac1917d70 Builder linked every app as a console program: makepad-mixer.exe, wm.exe, calculator.exe are PE subsystem 3 in the user's install; and cargo whenever wm ran out of a checkout) got a console window of its own, which showed over the full-screen desk as "a terminal inside wm" and, with cargo, one per warm client. Every child wm starts (clients, curl for themes) and every sibling wm_api starts gets CREATE_NO_WINDOW; hosted children talk over pipes and the hub, never a console Admin 2026-09-25 01:53:58 +02:00
  • e8dae096f5 builder: menus wrap around -- Up on the first row goes to the last and Down on the last to the first, in the Rust TUI and the shell previews' lists Admin 2026-09-25 01:53:40 +02:00
  • e831c4520f Merge branch 'mcp-reverse' into work Admin 2026-09-25 01:39:16 +02:00
  • 7fdb4dd742 builder: the compile bar's total is the app's own crates -- the estimate takes the packages from cargo tree -p <app> (resolved for that package alone; cargo metadata resolved every workspace member's features and counted about twice as many, so an app whose other crates were already built showed 3 / 70), and after a successful build the exact count is kept beside the build output (<binary>.crates) for the next one; fresh crates still leave the total Admin 2026-09-25 01:35:44 +02:00
  • 01911e2374 builder: an incremental compile's bar follows what really compiles -- crates Cargo reports as fresh (already up to date) leave the total instead of adding to the count, so the bar no longer jumps to half at once and crawls through the rest Admin 2026-09-25 01:20:01 +02:00
  • 9305341f5b Merge branch 'ci-disk-space' into work Admin 2026-09-25 01:17:56 +02:00
  • ff61d1e8ef ci: a full disk empties the build output before the run, not every row after it -- the mini's wall went red on workspace ("check host": failed to write full.rmeta: No space left on device), apps/browser ("comes up": grab write: No space left on device) and apps/calculator on ac1917d70: the volume had 104 MB left, 207 GB of it the checkout's target (16 target triples, 59 GB host debug). Cargo never removes what it built for a feature set or dependency graph that is gone: each triple held 8 to 10 builds of makepad-widgets alone since 09-21, and tonight's makepad-widgets features added new ones for every crate above it on every triple. The sync step now counts the build output (stopping once it reaches the free space; 434k files on the mini) and, when it is as large as what the volume has left, removes it and the run builds from cold: the worst a run adds is one more copy of what is there. Admin 2026-09-25 01:16:22 +02:00
  • b6a99cb381 wm: starts on Windows -- the desk no longer overflows the 1 MB main stack Admin 2026-09-25 01:13:29 +02:00
  • fda40f5650
    PortalList: stop following the end when scrolling to an earlier item (#1261) Kevin Boos 2026-09-24 15:56:26 -07:00
  • 03705413e7
    Constrain Splash external I/O to the host service bridge (#1243) Kevin Boos 2026-09-24 15:56:09 -07:00
  • 0f39445982 ai: Claude Desktop drives any app with the F10 panel -- pick "Claude Desktop" in the panel's provider menu and the app serves its tools to it over MCP Admin 2026-09-25 00:43:05 +02:00
  • ac1917d70c windows: desktop apps open no console window, and still speak through pipes -- the Builder links apps as windowed programs (/SUBSYSTEM:WINDOWS, mainCRTStartup), so starting one from Explorer or the Builder shows no cmd window; app_main joins the parent terminal's console only when the process has no stdout (started from a terminal), so a pipe (an MCP client starting --mcp) and console builds keep their stdin/stdout untouched Admin 2026-09-25 00:26:00 +02:00
  • 952cdc8b12 builder: the Windows exe is built for size -- cross-windows.py compiles the Builder with fat LTO, one codegen unit and opt-level z (29.8 -> 21.8 MB measured before the widget trim) Admin 2026-09-25 00:14:18 +02:00
  • 971c90f47a ai hub: a local chat with no model says so once, plainly -- after 'no model' the worker handed the line that just failed back to itself and retried it forever ('listening for the fleet' in a loop); it now waits for the person's next line. The message reads 'No local AI model is installed yet. Put a model file (.gguf) in <weights>, or pick another AI above.' and the fleet routes that were tried go to the log Admin 2026-09-25 00:14:18 +02:00
  • fcdb8694d5 platform (macos): the display link is kept until it is invalidated -- the CADisplayLink from NSView displayLinkWithTarget: was stored without a reference of our own; closing the last window releases the view's link before the deferred WindowClosed retires the window, so invalidate hit a freed link and macOS 15.7 aborted on its unfair lock (EXC_BREAKPOINT in retire_cocoa_window) on every app exit. The link is retained when created and released after each invalidate. Admin 2026-09-25 00:14:18 +02:00
  • 9cd063cb3e Merge branch 'widget-features' into work Admin 2026-09-25 00:13:30 +02:00
  • 2e176aaea5 widgets, builder: the big widget families are features, all on by default, and the Builder takes none of them -- makepad-widgets gains tweaker (with reflect and the theme store; needs dock and data), charts (chart, chart shapes, waveform; needs color), color, data (data grid, tree view, file tree), dates (calendar, date and time pickers), chat, dock, rich_text (text flow, rich text, HTML, Markdown, LaTeX maths, log list; makepad-html, pulldown-cmark and latex-math become optional), dropzone, vector, glass and nav_menus (floating action, radial, pill-nav, line and hamburger menus) and command_palette. Each gates its modules, re-exports and registration; the core stays unconditional. Without the tweaker a Window's Tweaker is an empty hidden view, as the voice wave is without voice, and the window, widget tree and fab panel skip their tweaker and dock hooks. wm_theme and wm_api take no families; the terminal app keeps them all through a default all_widgets feature so shared target dirs build makepad-widgets once. The Builder (tools/makepad_builder) takes widgets and terminal without defaults: macOS release 30.04 MB -> 24.41 MB (stripped 24.39 -> 19.70 MB, __text 15.96 -> 12.62 MB), window and TUI unchanged (identical grab), no script errors in its log. Checked: cargo check --workspace, widgets with no features and with each feature alone, widget lib tests with and without defaults (1849 / 1100 pass), Builder on macOS, Windows and Linux targets. Admin 2026-09-25 00:10:52 +02:00
  • e1778776e9 audio_route example: print the samples that reached the processor each second -- a silent application gives no callbacks at all on macOS (0 samples, not silent buffers), which is what consumers idle on Admin 2026-09-25 00:04:41 +02:00
  • 6b22295eae builder: CUDA whenever the machine has NVIDIA -- on Windows with an NVIDIA driver, Install build tools includes the NVIDIA CUDA Toolkit as one more step (its agreement on the same consent screen), an installation that has the tools but not CUDA offers just that step at start, and every build and launch uses CUDA exactly when the driver and the private toolkit are there (cuda::build_with); the CUDA row's on/off switch and the installed-cuda record are gone Admin 2026-09-24 23:17:24 +02:00
  • 79ea9dc876 platform (windows): half-float RGBA textures have four channels -- TexturePixel::RGBAf16 was created as DXGI R16_FLOAT, one red channel, so on D3D11 the relief buffer lost its green, blue and height (a green display lit its neighbours red) and the gauss chain's blur levels lost everything but red; it is R16G16B16A16_FLOAT, as on Metal and Vulkan Admin 2026-09-24 23:15:27 +02:00
  • 1530e2818b builder: the menu opens on the first of YOUR APPS -- the start-up setup's work page left Build tools as the row to return to, so after a first install the cursor sat on Build tools; that is forgotten before the menu opens, while work started from the menu still returns to its row Admin 2026-09-24 23:11:29 +02:00
  • e6e18588c3 builder: wait out Windows security on fresh Rust -- moving the unpacked toolchain into place failed at once when a scanner still held files from the rustc check (Windows refuses to rename a folder with open files), which showed 'still scanning' to a new user; the rename now retries with the same bounded waits as the rustc check, both about 30 seconds in all, with a 'waiting for Windows security' status Admin 2026-09-24 23:08:00 +02:00
  • d02335e27b builder: no menu flash after log-in -- the log-in screen checked the email through refresh_licenses, which switched to the main menu for its busy line, so the menu showed between typing the email and the setup screens; that check now keeps the log-in page and shows its busy line there Admin 2026-09-24 22:55:29 +02:00
  • 706f8f295d builder: the menu waits for a choice -- after log-in, graphics, agreements and build tools the Builder stops at the menu with the first app selected instead of downloading, compiling and opening Scope by itself Admin 2026-09-24 19:56:17 +02:00
  • addc9e9c7e builder: a HEAD request is a HEAD -- fetch_method_progress sent every method but POST as GET, so asking the three Rust archives' sizes downloaded all of them (about 180 MB, no progress shown) before the real download started; HEAD now uses the HEAD method and an unknown method is an error. builder.log lines carry the seconds since start Admin 2026-09-24 19:27:33 +02:00
  • 563cf38a9e widgets: relief surfaces can swing their light toward a point -- set_relief_light_swing turns every surface's own light direction toward a given position (keeping its brightness), so a moving light re-shades bevels and shadows across a whole relief window; unswung windows pay one comparison per draw. glass and hello_world render pixel-identical Admin 2026-09-24 19:21:33 +02:00
  • dc1b8d193f builder: no Scope command -- the menu row that put a scope shim on the user PATH (registry on Windows, ~/.local/bin and a shell profile line on Unix) and its repair on every start are gone; the Builder never edits the user PATH or shell profiles Admin 2026-09-24 19:18:11 +02:00
  • 9f4c781444 builder: apps get the icon their package declares -- after the workspace's resources/icon.icns or icon_1024.png, the icon comes from icon = "…" under [package.metadata.makepad.desktop] in the package's Cargo.toml (as cargo makepad reads it), so Makepad Amp's exe and macOS bundle carry apps/music/resources/music-icon.png instead of the default Admin 2026-09-24 19:18:11 +02:00
  • f89ef3d4e2 builder: the compile line is the bar and n / total crates -- no crate names flickering past; the Builder's own rebuild (with Scope) counts its crates too, with the same --no-default-features it builds with, and an app's features are passed to the count Admin 2026-09-24 19:11:55 +02:00
  • c490c709cf builder: Compile shows a real bar -- the crates the build produces are counted beforehand from cargo metadata for this platform (packages reachable through normal and build dependencies, their build scripts, the app's binary) and the bar reads n / total crates; a component's package record ends with its bar, so Compile no longer showed the source download's 2 of 2 as a fixed 50% Admin 2026-09-24 19:10:42 +02:00
  • 6b6fbf003b platform, widgets, ai: a restyle recompiles nothing it already has, shows only complete frames, and a window can own its caption -- generated shader helpers were named after their module's heap position, which moves on every restyle, so the Metal source text changed and every style switch recompiled ~20 pipelines, even back to a loaded style; helpers are now numbered by first call order within the shader, so a warm switch compiles 0 and misses 0 draws (was 47 missing per frame for 0.5 s). A style switch holds the old frame until three frames in a row are complete (no draw skipped, no pipeline pending), then crossfades; cx.pipelines_pending() and per-reason skipped-draw counts back it. A window can hide its stock caption and name its own drag region (set_drag_region), enforced on every event and draw so no re-apply brings the stock bar back; app keys in that region answer the drag query as client. The audio analyzer keeps a stereo history (latest_stereo). The AI engine runs a CLI model's tool calls as they stream in and shows the text between them Admin 2026-09-24 18:47:36 +02:00
  • 5986d4f8ee audio_route: one API on macOS, Windows and Linux, monitoring by default and processing only when asked, plus shaders that discard a value compile to WGSL Admin 2026-09-24 18:45:23 +02:00
  • 6b199fddc7 builder: a first build resolves online, the Rust row and bars move when the work does, and the window fits the TUI -- cargo ran with --offline whenever a Cargo.lock existed, so a new private CARGO_HOME could not resolve the Android/OpenHarmony crates in the graph (hilog-sys) and Scope failed to build; Rust becomes the current step with its first package and its manifest downloads with a bar; unpacking source reports the pack import and file checkout with their totals instead of holding the bar at half; the window opens at 664 x 650, the TUI's 80 columns and menu height Admin 2026-09-24 18:40:46 +02:00
  • 6d9830e778 builder: long work runs on its own page -- installing build tools, CUDA, an app (download source, compile, open) and Update show a checklist of the steps that actually run, the current one carrying its bar (one forward-only bar over all source packs; compile counts crates), then return to where they started with the result; a failed step shows a red ✗ and its reason with ⏎ back; the Disk action reads clear build data Admin 2026-09-24 17:57:50 +02:00
  • 624c8e3bc3 builder previews: long work gets a page of its own (steps as a checklist, the current one carrying its bar, footer working · ctrl+c stops), Account shows ✓ email, and the Disk action reads clear build data Admin 2026-09-24 17:54:42 +02:00
  • 27a2bd09fa platform (windows): every window keeps animating with several windows open -- the per-window frame beat held back a window that was keeping a spare DXGI credit (it never presented again, which is why things only moved during a window drag), stepped animations only on the first-registered window (a move re-registers it last), and always served the first ready window; the wait now serves the least recently served window first, the animation clock steps once per refresh on whichever beat arrives first (wall-clock fallback), only windows actually waiting for a beat are held back and a held pass keeps its previous paint state, and a finished move/resize drains the extra credits it created (Present had been blocking the UI thread a frame deep). An instance upload with zero instances no longer asks D3D11 for a zero-byte buffer. Amp with its pop-out: 32/32 presents per second on the 32 Hz remote display with one or two windows and after moving either. Admin 2026-09-24 17:52:11 +02:00