Commit graph

134 commits

Author SHA1 Message Date
Admin
771141ced9 slow voxels 2026-03-15 15:36:30 +01:00
Admin
98bc76b705 vulkan back 2026-03-15 13:20:49 +01:00
Admin
bc735b20d2 fixup 2026-03-15 08:49:21 +01:00
Sabin Regmi
747d04c898 ft floating panel on macos (#945) 2026-03-14 12:12:35 +01:00
offline-ant
164ba8ee72 compositor: add projected quad and offscreen surface primitives (#947)
* draw: add draw-list transform helpers for projected composition

* draw: unroll rounded box shadow sampling in SDF shader

* platform: honor per-draw depth_write across backends

* compositor: add projected quad and offscreen surface primitives

---------

Co-authored-by: ant <ant@offline.click>
2026-03-14 12:12:05 +01:00
Admin
695403ef72 xr otw 2026-03-12 15:51:30 +01:00
Sabin Regmi
f3a149446b Windows Blur, System Composition (#940)
* Initial plan

* feat(platform): add window visuals API and M1 backdrop wiring

Co-authored-by: wheregmis <26774729+wheregmis@users.noreply.github.com>

* feat(uizoo): add M2 GlassPanel widget and demo tab

Co-authored-by: wheregmis <26774729+wheregmis@users.noreply.github.com>

* blue example

* Apply backdrop intensity and transparency

macOS: apply visuals.backdrop_intensity to the NSVisualEffectView alpha (clamped) so backdrop intensity affects the effect view.

Windows: honor visuals.backdrop_intensity by computing an alpha-packed accent color, toggle WS_EX_LAYERED for transparent windows, call SetLayeredWindowAttributes and DwmExtendFrameIntoClientArea when needed, and set the AccentPolicy accordingly (enable blur for transparent or non-none backdrops, set gradient_color based on intensity, and set accent_flags depending on DWM attribute result).

Tests: update expected backdrop_intensity in a unit test from 4.0/1.0 to 0.25 and assert a platform op is emitted. These changes ensure backdrop intensity and transparency settings are respected across platforms.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: wheregmis <26774729+wheregmis@users.noreply.github.com>
2026-03-12 14:57:09 +01:00
Admin
c2e6b29f39 fixup 2026-03-12 09:39:16 +01:00
Admin
6679035b4a hiccup 2026-03-11 10:19:58 +01:00
Sabin Regmi
d0d45be323 Hotreloading Nits (#936)
* Add wasm server_manager and ownership guard

Introduce a new wasm server_manager module that implements WasmServerOwnershipGuard to manage per-workspace lock files, PID/port ownership, and safe replacement of stale or live servers. Integrate the guard into compile::run by preparing and activating the guard before starting the HTTP server; start_wasm_server now accepts the guard, returns a Result, checks bind success, activates the guard, and propagates thread join errors. The server manager includes platform-specific PID handling, port-probing, lock read/write/remove helpers, and unit tests exercising startup scenarios and lock lifecycle. Also add mod declaration and apply minor formatting/refactor cleanups across compile.rs (error formatting, whitespace, and logging improvements).

* Add startup mutex and port occupant diagnostics

Rename server_manager into top-level module and add startup mutex handling and improved diagnostics. Introduces atomic lock writes (write_file_atomically), a StartupMutexGuard with configurable timeouts/polling, and logic to detect/recover stale startup locks to prevent concurrent wasm run startups. Extends ServerManagerProbes with describe_port_occupant and implements platform-specific detection (lsof on Unix, netstat/tasklist on Windows) to provide clearer errors when ports are occupied. Updates imports (main.rs, compile.rs, mod.rs) and adds unit tests covering startup lock behavior and unknown-occupant error text.

* Improve hot-reload logging and delivery

Add clearer logging and error handling for wasm hot-reload events. Introduces hot_reload_display_name to extract a user-friendly file name, logs when a hotreload is detected, and checks tx.send result to avoid panics when the watcher channel is closed. broadcast_hot_reload_event now logs whether events were skipped (no /$watch clients) or sent and includes the delivered client count with proper pluralization.

* Check lock PID owns port and add startup timestamp

Require that a lock's PID both be alive and actually own the server port to be considered a live lock (classify_lock_state now takes listen_addr). Add parsing of a started_at timestamp in startup locks and use now_unix_millis to age out stale startup locks even if the PID is alive. Extend ServerManagerProbes with now_unix_millis and pid_owns_port, implement port_occupant_info and PortOccupant to centralize occupant detection/refinement for unix and windows, and refactor describe_port_occupant to use it. Update tests and MockProbes to exercise PID ownership checks and startup-lock aging; add tests for PID reuse (treated as stale if it doesn't own the port) and for startup lock aging.

* Hot reload: dedupe sites, add logging

Avoid duplicate ScriptMod sites during hot reload and improve diagnostics. collect_compiled_sites_for_file now tracks seen ScriptModKey values to prevent pushing duplicates. handle_cx_live_edit counts processed files and logs how many overrides were applied and from how many changed files. forward_hot_reload_fs_event logs each detected file and reports if the watcher channel is closed. Minor import cleanup and a helper hot_reload_display_name were added for nicer log output.

* shared core for reload

* Warn and fallback to unminified JS on write error

When writing the minified JS file fails, log a warning and fall back to copying the original JS file instead of returning an error. This avoids failing the build on IO/write errors (e.g. permissions or disk issues) while preserving the previous behavior of using the unminified copy when reading fails. No change to successful minification path.
2026-03-10 12:47:38 +01:00
offline-ant
642a929e5f platform: video/camera subsystem with media plugin architecture (#929)
Video playback: extended API with volume, playback rate, seek ranges,
buffered ranges, can_play_type, audio-only mode. Unified player wrapping
native backend (AVPlayer/GStreamer/MediaFoundation) with software fallback.
YUV shader pipeline (BT.601/709/2020, NV12 biplanar, rotation).

Camera: V4L2 backend (Linux), expanded NDK Camera2 (Android), AVCapture
stream refactor (iOS/macOS) with shared session architecture. NV12
zero-copy paths on iOS (CVMetalTextureCache) and Android (AImage planes).
Camera preview modes (texture/native/auto).

Video encoding: H264 hardware encode on Apple (VideoToolbox) and Android
(MediaCodec). Camera-to-encoder pipeline with pixel buffer passthrough.

Media plugin system: externalized codec implementation via MediaPlugin
trait. MsePlayer, VideoFrameDecoder, MediaVideoEncoder, SoftwareVideoPlayer
interfaces. Runtime codec capability query and merge.

Includes camera example app.

Co-authored-by: ant <ant@offline.click>
2026-03-08 13:10:58 +01:00
offline-ant
744f45db3e platform: native mobile selection handles (#930)
* platform: popup window API with X11/Wayland support

- Add popup window type for context menus and dropdowns
- Wayland: xdg_popup with grab for compositor-driven dismiss
- X11: override-redirect windows with pointer grab
- Explicit-close semantics: app must handle PopupDismissed
- Fix Wayland crash on repeated context menu open/close
- Emit WindowClosed before PopupDismissed in PopupDone

* platform: native mobile selection handles

iOS: custom UIView selection handles with UIPanGestureRecognizer (all versions),
UITextSelectionDisplayInteraction for native highlights (iOS 16+),
MakepadSelectionRect for UITextInput protocol.

Android: custom SelectionHandleView with GradientDrawable oval, touch drag
listeners, JNI bridge for handle drag events.

Widgets: TextFlow clipboard action integration (show on touch up with selection,
hide on touch down/focus lost, TextCut handler), PortalList select-all and
clipboard actions, selection bounding rect computation for popup positioning.

Includes text_selection example app.

---------

Co-authored-by: ant <ant@offline.click>
2026-03-08 12:15:31 +01:00
Admin
af3995b33b remove apprs 2026-03-08 10:28:40 +01:00
Admin
c8412703b0 oops. uids 2026-03-08 08:42:49 +01:00
Admin
8d73f700e6 exr 2026-03-07 15:01:34 +01:00
Admin
b30abb351e oops 2026-03-06 19:15:09 +01:00
Admin
3ed6de6cac fix 2026-03-06 09:26:02 +01:00
Admin
1f2c52acad cleanup 2026-03-05 23:45:21 +01:00
Admin
590e0f0ad8 mb3d experiment 2026-03-05 23:45:21 +01:00
Admin
324f22863b terminal otw 2026-03-03 17:47:24 +01:00
Admin
521b31d132 y flip webgl rendertartet 2026-03-03 09:42:54 +01:00
Admin
106de2274f rename network 2026-03-03 09:18:19 +01:00
Admin
11859b7a44 makepad studio old 2026-02-28 22:42:57 +01:00
Admin
d0d781bd10 studio2 otw 2026-02-28 21:27:26 +01:00
Admin
25a1c8f22b add get_color to draw_glyph 2026-02-27 09:39:21 +01:00
Admin
1da22b1537 studio2 otw 2026-02-26 21:07:27 +01:00
Admin
956471c1a6 counter splash example 2026-02-26 10:08:25 +01:00
Admin
582af4b271 splice out a makepad-network crate 2026-02-23 23:21:31 +01:00
Admin
e5cc73cfe6 splats without sort yet 2026-02-21 08:43:52 +01:00
Admin
dbbdadbe34 fix 2026-02-20 23:58:48 +01:00
Admin
9d86689d07 drawcall ordering and git ui 2026-02-20 15:47:56 +01:00
Julián Montes de Oca
40cad5dd37 Restore IME support (#860)
* Restore IME support

* Remove unused voice handling methods from Window
2026-02-20 14:06:02 +01:00
Admin
a120c8567e voice input 2026-02-19 14:13:07 +01:00
Admin
f31f7f1530 fix 2026-02-19 08:35:09 +01:00
Admin
f4fcf17274 git dots 2026-02-19 08:03:39 +01:00
Admin
393ad66d27 ui proto 2026-02-18 21:10:25 +01:00
Admin
037d288a72 optimize inflate/deflate 2026-02-18 13:28:39 +01:00
Admin
5f5ffb902f fast deflate 2026-02-18 11:24:00 +01:00
Admin
0891a298c3 git lib added 2026-02-18 10:04:26 +01:00
Admin
4a01708767 fix 2026-02-17 20:39:08 +01:00
Admin
9d9b03b72d terminal work/ webp 2026-02-17 18:11:36 +01:00
Admin
6eacc7e132 physics 2026-02-16 18:06:57 +01:00
Admin
548506cd9c gltf example! 2026-02-16 15:51:24 +01:00
Admin
612defab66 fix warnings 2026-02-16 11:58:51 +01:00
Admin
8fb6cdff83 vulkan vendoring completed 2026-02-16 09:10:27 +01:00
Admin
991284058f clean 2026-02-15 19:21:10 +01:00
Admin
05941f8a05 clean build 2026-02-15 18:43:19 +01:00
Admin
4d2ca6d5d1 otw 2026-02-14 22:14:54 +01:00
Admin
a58686a4e9 otw 2026-02-14 22:14:26 +01:00
Admin
663c621203 webGL2 2026-02-14 22:07:26 +01:00