Commit Graph

37 Commits

Author SHA1 Message Date
Timon
c51967384f Desktop: Fix keyboard shortcuts on windows (#3139)
* Try to fix shortcuts on windows

* Fix
2025-09-10 10:51:15 +00:00
Timon
50be13522b Desktop: Move preferences persistence to native (#3138)
* Move preference persistence to native

* Pass preferences as struct instead of serialized to string
2025-09-09 16:22:25 +00:00
Timon
4261b7dad1 Desktop: Move autosave persistence to native (#3134)
* Move autosave persistence to native 1

* Move autosave persistence to native 2

* Reimplement quirky behavior of the web frontend

* Code revew

* Use select_after_open

* fix fmt

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-09 11:27:54 +00:00
Dennis Kobert
acd7ba38cc Graphene: Fine-grained context caching (#2500)
* RFC: Fine Grained Context Caching

* Fix typos

* Fix label

* Add description of inject traits

* Explicitly support context modification

* Start implementation of context invalidation

* Add inject trait variants
* Route Extract / Inject traits to the proto nodes

* Implement context dependency analysis

* Implement context modification node insertion

* Fix erronous force graph run message

* Fix Extract* Inject* annotations in the nodes

* Require Hash implementation for VarArgs

* Fix nullification node insertion

* Cross of done items unresolved questions section

* Update Cargo.lock

* Fix context features propagation

* Update demo artwork

* Remove BondlessFootprint and FreezeRealTime nodes

* Fix migration

* Add migrations for adding context features to old networks

* Always update real time regardless of animation state

* Cargo fmt

* Fix tests

* Readd sed command to hopefully fix profile result parsing

* Add debug output to profiling pr

* Use new totals instead of summaries for for iai results

* Even more debugging

* Use correct debug metrics (hopefully)

* Add more MemoNode implementations

* Add context features annotation to shader node macro

* Cleanup

* Time -> RealTime

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-05 11:44:26 +00:00
Firestar99
be3de511f2 Desktop: Pin CEF version (#3113)
Fixed CEF cargo dependency so `cargo update` does not update it
2025-08-31 10:22:34 +00:00
Firestar99
ce1cd1706b Disable proc-macros crate from being tested due to cargo bug (#3103)
* cargo: remove unused `editor/ron` feature

* cargo: add wgpu-executor as a member, sort list

* cargo: test every crate by default

* cargo: disable testing of `graphite-proc-macros`
2025-08-29 12:25:35 +02:00
Timon
1d4d1026d4 Desktop: Make embedded resources optional (#3094)
* Make embedding resources optional

* Move remaining cef rc to internal module

* Move embedded resources to separate crate

* Review fixup

* Fix

* Fix read

* Add read error
2025-08-28 17:18:18 +00:00
Timon
c5991c6f61 Desktop: show platform specific window buttons (#3078)
Implement app window button functionality and set platform
2025-08-25 14:15:31 +00:00
Timon
508606cdba Desktop: add missing txt file mime type mapping (#3091)
add missing txt file extension to mime type mapping

missing mapping caused license dialog that loads txt file to fail and report no network connection
2025-08-25 15:51:59 +02:00
Timon
c6ec3a27ca Desktop: Buffer web messages until connection is initialized (#3082)
Buffer web messages until connection is initialized
2025-08-22 15:15:17 +00:00
Dennis Kobert
e4dd3ce806 Desktop: Use multithreaded CEF event loop on Windows and Linux (#3076)
* Prototype multi threaded event loop

* Fix input event dispatch

* Remove dead code

* Reenable do_message_loop_work for macos targets

* Cleanup

* Review cleanup

* Remove outdated comment

* Attempt to fix texture import errors

---------

Co-authored-by: Timon Schelling <me@timon.zip>
2025-08-21 19:46:13 +00:00
Dennis Kobert
e56f858ced Desktop: Implement GPU accelerated offscreen rendering and improve rendering efficency (#3056)
* WIP accelerade offscreen canvas implementation

* Implement vulkan dmabuf import

* Add fps printing

* Add feature gates

* Forgot to add file

* Experimental windows support

* Cast ptr to isize

* Remove testing chrome://flags url

* Experimental macos support for texture import

* Cleanup code and improve latency / frame pacing

* Add path for importing textures on windows through dx12

* Update doc comment

* Import textures through metal on macos

* Review cleanup

---------

Co-authored-by: Timon Schelling <me@timon.zip>
2025-08-21 10:09:38 -07:00
Dennis Kobert
97978c2491 Desktop: Change feature guard to Linux instead of Unix for Wayland 2025-08-21 10:08:29 -07:00
Timon
2c8913416d Desktop: Move wrapper to separate crate (#3073)
Move desktop wrapper to separate crate
2025-08-20 15:41:34 +00:00
Timon
30e5d66105 Desktop: Implement desktop wrapper module (#3039)
* Prototyping desktop wrapper api

* Separate into multiple modules

* Some fixup

* Reimplement most functionality with editor api

* Fix texture life time crashes

* Fix scale

* Implement editor wrapper message queue

* Improve performance

* Handle native messages directly without submitting to event loop

* Fix overlay latency

* Move editor message execution to executor allows no shared state in editor wrapper

* Small clean up

* Small cleanup

* Some renames

* Cleaning up desktop wrapper interface

* Fix formatting

* Fix naming

* Move node graph execution result handling to app

* Fix FrontendMessage RenderOverlays usage

* Reimplement file drop and clean up file import and open messages

* Remove dbg

* Post merge fix

* Review changes
2025-08-20 13:27:36 +00:00
Timon
e70862b399 Desktop: Add File > Save As… (#3034)
* Make file name and document name identical

* Add save as action

* Fix test errors

* Add missing save as action

* Desktop fix drop file open document file message

* Address review comments

* Replace file save suffix with file extension

* Add comment specifying that the upload function takes a html input accept string

* Fix remove file extension in web

* Use let

* Don't show save as menu entry in web

* Don't add SaveDocumentAs in web

* Remove file extension on all open document file calls

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-08-20 10:09:01 +00:00
Mohd Mohsin
17d70dc60e Add struct field visualization to the editor message hierarchy tree visualization on the website (#2917)
* Fix Message Tree: Enforce Structure and Visibility

* Code review

* fix the erroreous ouputs

* error handling for MessageHandler

* Fix website visualization HTML generation

* error handling for tuple-style message enum variant

* cleanup

* Update messages

* Normalize BroadcastEvent

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-18 21:04:29 -07:00
Timon
67a7b98f4f Desktop: Fix UI and viewport blending (#3052)
* Tell the GPU that the UI texture is in sRGB format so that it is converted to linear before sampling

* Do blending in srgb

* Revert "Tell the GPU that the UI texture is in sRGB format so that it is converted to linear before sampling"

* Remove unnecessary srgb linear conversions

* Blend overlays and viewport in linear and return early when ui is fully transparent
2025-08-14 11:42:55 +00:00
Timon
fa2167dd7f Desktop: Drag and drop file to open/import functionality (#3035)
* Desktop app add drop file functionality

* Add x11 libs to flake

* Restructure extension matching to remove nesting

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-08-11 11:48:10 +00:00
Timon
96a1b12a05 Desktop: Unify save file handling and add file dialog for export (#3008)
* Prepare save file unification

* Desktop add save file dialog
2025-08-06 16:07:53 +00:00
Timon
5f2432cacf Desktop: Open links in default browser and prevent popups (#3006)
* Deny all browser popups

* Open links with default browser

* Fix review comments
2025-08-06 15:28:10 +00:00
Timon
0462d0ea2f Desktop: Linux improve desktop integration (#3003)
* Move consts to extra module

* Add desktop icons

* Add xdg desktop file

* Improve window attributes

* Make icon background white
2025-08-06 15:05:38 +00:00
Timon
1742e6000a Desktop: Add some missing key codes (#3011)
Add some missing key codes
2025-08-06 15:33:13 +02:00
Dennis Kobert
8b4adf4330 Desktop: Fix Vello rendering colors with doubly-applied gamma by converting to linear in the shader (#2998)
* Fix gamma issue by applying tone mapping in the shader

Vello renders it's values to an RgbaUnorm texture
but if we try to use this in the main rendering
pipeline which renders to an Srgb surface gamma
mapping is applied twice.

* Add comment explaining why we do this to the shader

* Rename variables
2025-08-05 10:08:14 +00:00
Timon
7cb42b9523 Desktop: Add native file dialogs (#2939)
* Add native open file dialog

* Add native save file dialog

* Fix integer underflow in defer message handler

* Update nix flake

* Cleanup

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-08-04 13:58:33 +00:00
Timon
853c26cbc1 Desktop: Viewport bounds from viewport container (#2989)
* Remove build script because it created more issues that it solved

* Get viewport bounds from viewport container
2025-08-04 11:14:34 +00:00
Timon
34a8b9b6f1 Desktop: Render overlays with vello (#2965)
* Render overlays with vello

* Fix nix flake comments

* Rendering refactor with better names and code location

* Remove unnecessary overlay renders

* Post rebase fix
2025-08-02 14:27:24 +00:00
Dennis Kobert
08ec1d08f6 Desktop: Execute editor and node graph natively (#2955)
* Desktop: Execute editor and node graph natively

* Remove decouple execution feature

* Disable feature gate for native communication functions

* Avoid ininite message loop on an infinite canvas

* Add any lint exception

* Build evaluation loop

* Fix texture passing message

* Cleanup

* More cleanup

---------

Co-authored-by: Timon Schelling <me@timon.zip>
2025-07-31 10:26:36 +00:00
Timon
6119dea58c Desktop add viewport texture (#2953)
* Allow rendering viewport texture beneath ui texture

* Add viewport scale

* Update desktop/src/render/fullscreen_texture.wgsl

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-07-28 17:10:27 +00:00
Timon
83d39fb320 Desktop: Cleaner CEF bidirectional message implementation (#2950)
* Rename CEF implementations to match the process they are called in

* Rename CEF implementations to match the process they are called in

* Implement ipc abstraction

* Call js function `receiveNativeMessage` for all SendToJS ipc messages

* Allow js to call `sendNativeMessage` for sending messages to the browser process

Co-authored-by: Adam <adamgerhant@gmail.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>

* Fix missing safety consideration

---------

Co-authored-by: Adam <adamgerhant@gmail.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-07-28 13:04:15 +00:00
Timon
7bdf1670b5 Desktop: Have CEF use Wayland if available (#2945)
tell cef to use wayland if available

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-28 10:30:36 +00:00
Timon
91156d295c Desktop: Handle another instance is already running (#2938)
Handle another instance is already running
2025-07-25 21:38:54 +00:00
Dennis Kobert
a52ee70e4c Desktop: Directly upload frame buffer (#2930)
* Upload frame buffer directly to gpu texture

* Disable cef GPU acceleration to prevent crashes

* Cleanup code

* Address review comments

---------

Co-authored-by: Timon Schelling <me@timon.zip>
2025-07-25 14:04:46 +02:00
Adam Gerhant
735d58a647 Desktop: Remove unnecessary dependencies in the desktop crate (#2934)
* remove unnecessary dependencies

* Add start-desktop
2025-07-25 01:20:27 -07:00
Dennis Kobert
f184e4aab2 Desktop: Refactor window state to not require locking (#2928)
* Replace window state with channels and improve resize performance

* Move Cef Handler into the cef module

* Reuse textures

* Test cef scheduling

* Schedule self render if texture is outdated

* Address review comments
2025-07-24 17:51:55 +00:00
Timon
9f4f3681c3 Desktop set cef data and cache directory (#2927) 2025-07-24 16:56:57 +00:00
Timon
30abc92900 Implement basic desktop app with chromium embeded framework (#2874)
* Remove tauri based desktop app

* Allow bzip-1.0.6 license

* Implement basic cef based desktop app

* Cleanup build setup

* Use wait until and execute cef loop more frequently

* Remove custom do browser work event

* Move WinitApp into its own module

* Cleanup event handling

* Cleanup + Scheudule cef message loop work

* Fix cpu overheating on idle: https://xkcd.com/1172/

* Use tracing crate for logging instead of println

* Rebase to main

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-07-23 20:27:55 +02:00