[INFO] cloning repository https://github.com/dakom/awsm-audio
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dakom/awsm-audio" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdakom%2Fawsm-audio", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdakom%2Fawsm-audio'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0e49d69efc6ae662ae5cc5ab6068557d516284b5
[INFO] checking dakom/awsm-audio/0e49d69efc6ae662ae5cc5ab6068557d516284b5 against 22950ab9e29e11620a10905f027f141ea126966e for pr-160581
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdakom%2Fawsm-audio" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-2-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/dakom/awsm-audio
[INFO] finished tweaking git repo https://github.com/dakom/awsm-audio
[INFO] tweaked toml for git repo https://github.com/dakom/awsm-audio written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/dakom/awsm-audio on toolchain 22950ab9e29e11620a10905f027f141ea126966e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+22950ab9e29e11620a10905f027f141ea126966e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/dakom/awsm-audio already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+22950ab9e29e11620a10905f027f141ea126966e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating git repository `https://github.com/Pauan/rust-dominator`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded futures-signals v0.3.34
[INFO] [stderr]   Downloaded sse-stream v0.2.3
[INFO] [stderr]   Downloaded rmcp-macros v1.7.0
[INFO] [stderr]   Downloaded gensym v0.1.1
[INFO] [stderr]   Downloaded rmcp v1.7.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f
[INFO] running `Command { std: "docker" "start" "715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f" "/opt/rustwide/cargo-home/bin/cargo" "+22950ab9e29e11620a10905f027f141ea126966e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f" "/opt/rustwide/cargo-home/bin/cargo" "+22950ab9e29e11620a10905f027f141ea126966e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]     Checking pin-project-lite v0.2.17
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking memchr v2.8.1
[INFO] [stderr]     Checking itoa v1.0.18
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.122
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]     Checking log v0.4.32
[INFO] [stderr]    Compiling bumpalo v3.20.3
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]     Checking rand_core v0.10.1
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]    Compiling ref-cast v1.0.25
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking winnow v0.7.15
[INFO] [stderr]     Checking dyn-clone v1.0.20
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking midly v0.5.3
[INFO] [stderr]     Checking typenum v1.20.1
[INFO] [stderr]     Checking http v1.4.2
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking socket2 v0.6.4
[INFO] [stderr]     Checking mio v1.2.1
[INFO] [stderr]    Compiling wasm-bindgen v0.2.122
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking awsm-audio-worklet v2.5.0 (/opt/rustwide/workdir/packages/crates/worklet)
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking cpufeatures v0.2.17
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]     Checking fastrand v2.4.1
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]     Checking discard v1.0.4
[INFO] [stderr]     Checking anstyle-parse v1.0.0
[INFO] [stderr]     Checking httpdate v1.0.3
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.2
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking colorchoice v1.0.5
[INFO] [stderr]     Checking cpufeatures v0.3.0
[INFO] [stderr]     Checking anstyle v1.0.14
[INFO] [stderr]     Checking data-encoding v2.11.0
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]     Checking chacha20 v0.10.0
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]    Compiling rmcp v1.7.0
[INFO] [stderr]     Checking clap_lex v1.1.0
[INFO] [stderr]     Checking ryu v1.0.23
[INFO] [stderr]     Checking mime v0.3.17
[INFO] [stderr]     Checking matchit v0.8.4
[INFO] [stderr]     Checking rand v0.10.1
[INFO] [stderr]     Checking bitflags v2.12.1
[INFO] [stderr]    Compiling pastey v0.2.3
[INFO] [stderr]     Checking awsm-audio-worklet-ringmod v2.5.0 (/opt/rustwide/workdir/packages/worklets/ringmod)
[INFO] [stderr]     Checking awsm-audio-worklet-gain v2.5.0 (/opt/rustwide/workdir/packages/worklets/gain)
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]     Checking awsm-audio-worklet-drive v2.5.0 (/opt/rustwide/workdir/packages/worklets/drive)
[INFO] [stderr]     Checking awsm-audio-worklet-bitcrusher v2.5.0 (/opt/rustwide/workdir/packages/worklets/bitcrusher)
[INFO] [stderr]    Compiling uuid v1.23.2
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.122
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.13
[INFO] [stderr]    Compiling gensym v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling rmcp-macros v1.7.0
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking sse-stream v0.2.3
[INFO] [stderr]     Checking pin-project v1.1.13
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking axum-core v0.5.6
[INFO] [stderr]     Checking tungstenite v0.29.0
[INFO] [stderr]     Checking hyper v1.10.1
[INFO] [stderr]     Checking tokio-tungstenite v0.29.0
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking futures-signals v0.3.34
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking axum v0.8.9
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.122
[INFO] [stderr]     Checking schemars v1.2.1
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking awsm-audio-schema v2.5.0 (/opt/rustwide/workdir/packages/crates/schema)
[INFO] [stderr]     Checking js-sys v0.3.99
[INFO] [stderr]     Checking tracing-wasm v0.2.1
[INFO] [stderr]     Checking console_error_panic_hook v0.1.7
[INFO] [stderr]     Checking awsm-audio-editor-protocol v2.5.0 (/opt/rustwide/workdir/packages/crates/editor-protocol)
[INFO] [stderr]     Checking web-sys v0.3.99
[INFO] [stderr]     Checking wasm-bindgen-futures v0.4.72
[INFO] [stderr]     Checking gloo-timers v0.3.0
[INFO] [stderr]     Checking awsm-audio-mcp v2.5.0 (/opt/rustwide/workdir/packages/mcp)
[INFO] [stderr]     Checking gloo-events v0.1.2
[INFO] [stderr]     Checking awsm-audio-player v2.5.0 (/opt/rustwide/workdir/packages/crates/player)
[INFO] [stderr]     Checking gloo-utils v0.2.0
[INFO] [stderr]     Checking dominator v0.5.38 (https://github.com/Pauan/rust-dominator?rev=25597cd#25597cd8)
[INFO] [stderr]     Checking gloo-net v0.6.0
[INFO] [stderr]     Checking awsm-audio-example v2.5.0 (/opt/rustwide/workdir/packages/frontend/example)
[INFO] [stderr]     Checking awsm-audio-editor v2.5.0 (/opt/rustwide/workdir/packages/frontend/editor)
[INFO] [stdout] error[E0432]: unresolved imports `web_sys::DirectoryPickerOptions`, `web_sys::FileSystemHandlePermissionDescriptor`, `web_sys::FileSystemPermissionMode`
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     DirectoryPickerOptions, FileSystemDirectoryHandle, FileSystemFileHandle,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^ no `DirectoryPickerOptions` in the root
[INFO] [stdout] 17 |     FileSystemGetDirectoryOptions, FileSystemGetFileOptions, FileSystemHandle,
[INFO] [stdout] 18 |     FileSystemHandlePermissionDescriptor, FileSystemPermissionMode, FileSystemWritableFileStream,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^ no `FileSystemPermissionMode` in the root
[INFO] [stdout]    |     |
[INFO] [stdout]    |     no `FileSystemHandlePermissionDescriptor` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved imports `web_sys::DirectoryPickerOptions`, `web_sys::FileSystemHandlePermissionDescriptor`, `web_sys::FileSystemPermissionMode`
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     DirectoryPickerOptions, FileSystemDirectoryHandle, FileSystemFileHandle,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^ no `DirectoryPickerOptions` in the root
[INFO] [stdout] 17 |     FileSystemGetDirectoryOptions, FileSystemGetFileOptions, FileSystemHandle,
[INFO] [stdout] 18 |     FileSystemHandlePermissionDescriptor, FileSystemPermissionMode, FileSystemWritableFileStream,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^ no `FileSystemPermissionMode` in the root
[INFO] [stdout]    |     |
[INFO] [stdout]    |     no `FileSystemHandlePermissionDescriptor` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `show_directory_picker_with_options` found for struct `web_sys::Window` in the current scope
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:66:14
[INFO] [stdout]    |
[INFO] [stdout] 65 |           let promise = window
[INFO] [stdout]    |  _______________________-
[INFO] [stdout] 66 | |             .show_directory_picker_with_options(&options)
[INFO] [stdout]    | |             -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `web_sys::Window`
[INFO] [stdout]    | |_____________|
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `show_directory_picker_with_options` found for struct `web_sys::Window` in the current scope
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:66:14
[INFO] [stdout]    |
[INFO] [stdout] 65 |           let promise = window
[INFO] [stdout]    |  _______________________-
[INFO] [stdout] 66 | |             .show_directory_picker_with_options(&options)
[INFO] [stdout]    | |             -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `web_sys::Window`
[INFO] [stdout]    | |_____________|
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method call on a diverging inference variable
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:81:14
[INFO] [stdout]    |
[INFO] [stdout] 81 |             .dyn_into()
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider providing a type annotation
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #156047 <https://github.com/rust-lang/rust/issues/156047>
[INFO] [stdout]    = note: `#[warn(method_call_on_diverging_infer_var)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method call on a diverging inference variable
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:81:14
[INFO] [stdout]    |
[INFO] [stdout] 81 |             .dyn_into()
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider providing a type annotation
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #156047 <https://github.com/rust-lang/rust/issues/156047>
[INFO] [stdout]    = note: `#[warn(method_call_on_diverging_infer_var)]` (part of `#[warn(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `dyn_into` found for type `!` in the current scope
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:81:14
[INFO] [stdout]    |
[INFO] [stdout] 80 |           let root: FileSystemDirectoryHandle = handle_value
[INFO] [stdout]    |  _______________________________________________-
[INFO] [stdout] 81 | |             .dyn_into()
[INFO] [stdout]    | |_____________-^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `into` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 81 -             .dyn_into()
[INFO] [stdout] 81 +             .into()
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `dyn_into` found for type `!` in the current scope
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:81:14
[INFO] [stdout]    |
[INFO] [stdout] 80 |           let root: FileSystemDirectoryHandle = handle_value
[INFO] [stdout]    |  _______________________________________________-
[INFO] [stdout] 81 | |             .dyn_into()
[INFO] [stdout]    | |_____________-^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `into` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 81 -             .dyn_into()
[INFO] [stdout] 81 +             .into()
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `query_permission_with_descriptor` found for reference `&FileSystemHandle` in the current scope
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:97:43
[INFO] [stdout]    |
[INFO] [stdout] 97 |         let query = JsFuture::from(handle.query_permission_with_descriptor(&descriptor))
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `&FileSystemHandle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method call on a diverging inference variable
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:101:18
[INFO] [stdout]     |
[INFO] [stdout] 101 |         if query.as_string().as_deref() == Some("granted") {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider providing a type annotation
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #156047 <https://github.com/rust-lang/rust/issues/156047>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `query_permission_with_descriptor` found for reference `&FileSystemHandle` in the current scope
[INFO] [stdout]   --> packages/frontend/editor/src/fs.rs:97:43
[INFO] [stdout]    |
[INFO] [stdout] 97 |         let query = JsFuture::from(handle.query_permission_with_descriptor(&descriptor))
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `&FileSystemHandle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method call on a diverging inference variable
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:101:18
[INFO] [stdout]     |
[INFO] [stdout] 101 |         if query.as_string().as_deref() == Some("granted") {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider providing a type annotation
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #156047 <https://github.com/rust-lang/rust/issues/156047>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_string` found for type `!` in the current scope
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:101:18
[INFO] [stdout]     |
[INFO] [stdout] 101 |         if query.as_string().as_deref() == Some("granted") {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `to_string` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 101 -         if query.as_string().as_deref() == Some("granted") {
[INFO] [stdout] 101 +         if query.to_string().as_deref() == Some("granted") {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `request_permission_with_descriptor` found for reference `&FileSystemHandle` in the current scope
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:105:45
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let request = JsFuture::from(handle.request_permission_with_descriptor(&descriptor))
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `&FileSystemHandle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method call on a diverging inference variable
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:109:20
[INFO] [stdout]     |
[INFO] [stdout] 109 |         if request.as_string().as_deref() == Some("granted") {
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider providing a type annotation
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #156047 <https://github.com/rust-lang/rust/issues/156047>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_string` found for type `!` in the current scope
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:101:18
[INFO] [stdout]     |
[INFO] [stdout] 101 |         if query.as_string().as_deref() == Some("granted") {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `to_string` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 101 -         if query.as_string().as_deref() == Some("granted") {
[INFO] [stdout] 101 +         if query.to_string().as_deref() == Some("granted") {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_string` found for type `!` in the current scope
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:109:20
[INFO] [stdout]     |
[INFO] [stdout] 109 |         if request.as_string().as_deref() == Some("granted") {
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `to_string` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 109 -         if request.as_string().as_deref() == Some("granted") {
[INFO] [stdout] 109 +         if request.to_string().as_deref() == Some("granted") {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `request_permission_with_descriptor` found for reference `&FileSystemHandle` in the current scope
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:105:45
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let request = JsFuture::from(handle.request_permission_with_descriptor(&descriptor))
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `&FileSystemHandle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method call on a diverging inference variable
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:109:20
[INFO] [stdout]     |
[INFO] [stdout] 109 |         if request.as_string().as_deref() == Some("granted") {
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider providing a type annotation
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #156047 <https://github.com/rust-lang/rust/issues/156047>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_string` found for type `!` in the current scope
[INFO] [stdout]    --> packages/frontend/editor/src/fs.rs:109:20
[INFO] [stdout]     |
[INFO] [stdout] 109 |         if request.as_string().as_deref() == Some("granted") {
[INFO] [stdout]     |                    ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `to_string` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 109 -         if request.as_string().as_deref() == Some("granted") {
[INFO] [stdout] 109 +         if request.to_string().as_deref() == Some("granted") {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:625:49
[INFO] [stdout]     |
[INFO] [stdout] 625 |                         time: snap_secs(secs_at(e.x()), bpm).max(0.0),
[INFO] [stdout]     |                                         ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 625 |                         time: snap_secs(secs_at(e.x().into()), bpm).max(0.0),
[INFO] [stdout]     |                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:626:57
[INFO] [stdout]     |
[INFO] [stdout] 626 |                         gain: automation_gain_at(track, e.y()),
[INFO] [stdout]     |                               ------------------        ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:346:4
[INFO] [stdout]     |
[INFO] [stdout] 346 | fn automation_gain_at(track: usize, cy: f64) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^               -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 626 |                         gain: automation_gain_at(track, e.y().into()),
[INFO] [stdout]     |                                                              +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot subtract `f64` from `i32`
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:635:31
[INFO] [stdout]     |
[INFO] [stdout] 635 |                     && (e.x() - x0).abs() < 4.0
[INFO] [stdout]     |                               ^ no implementation for `i32 - f64`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sub<f64>` is not implemented for `i32`
[INFO] [stdout] help: the following other types implement trait `Sub<Rhs>`
[INFO] [stdout]    --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:22:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `&i32` implements `Sub<i32>`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:33:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `i32` implements `Sub<&i32>`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:44:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `&i32` implements `Sub`
[INFO] [stdout]    --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `i32` implements `Sub`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:225:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: in this macro invocation
[INFO] [stdout]     = note: this error originates in the macro `forward_ref_binop` which comes from the expansion of the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot subtract `f64` from `i32`
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:636:31
[INFO] [stdout]     |
[INFO] [stdout] 636 |                     && (e.y() - y0).abs() < 4.0
[INFO] [stdout]     |                               ^ no implementation for `i32 - f64`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sub<f64>` is not implemented for `i32`
[INFO] [stdout] help: the following other types implement trait `Sub<Rhs>`
[INFO] [stdout]    --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:22:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `&i32` implements `Sub<i32>`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:33:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `i32` implements `Sub<&i32>`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:44:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `&i32` implements `Sub`
[INFO] [stdout]    --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `i32` implements `Sub`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:225:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: in this macro invocation
[INFO] [stdout]     = note: this error originates in the macro `forward_ref_binop` which comes from the expansion of the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:640:54
[INFO] [stdout]     |
[INFO] [stdout] 640 |                 MARQUEE.with(|m| m.set(Some((x0, y0, e.x(), e.y()))));
[INFO] [stdout]     |                                                      ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 640 |                 MARQUEE.with(|m| m.set(Some((x0, y0, e.x().into(), e.y()))));
[INFO] [stdout]     |                                                           +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:640:61
[INFO] [stdout]     |
[INFO] [stdout] 640 |                 MARQUEE.with(|m| m.set(Some((x0, y0, e.x(), e.y()))));
[INFO] [stdout]     |                                                             ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 640 |                 MARQUEE.with(|m| m.set(Some((x0, y0, e.x(), e.y().into()))));
[INFO] [stdout]     |                                                                  +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:641:49
[INFO] [stdout]     |
[INFO] [stdout] 641 |                 controller().selected_clips.set(clips_in_rect(x0, y0, e.x(), e.y()));
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^         -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:162:4
[INFO] [stdout]     |
[INFO] [stdout] 162 | fn clips_in_rect(x0: f64, y0: f64, x1: f64, y1: f64) -> Vec<(usize, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^                   -------  -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 641 |                 controller().selected_clips.set(clips_in_rect(x0, y0, e.x().into(), e.y()));
[INFO] [stdout]     |                                                                            +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 641 |                 controller().selected_clips.set(clips_in_rect(x0, y0, e.x(), e.y().into()));
[INFO] [stdout]     |                                                                                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:647:49
[INFO] [stdout]     |
[INFO] [stdout] 647 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]     |                                                 ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 647 |                 DRAG_GHOST.with(|m| m.set(Some((e.x().into(), e.y()))));
[INFO] [stdout]     |                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:647:56
[INFO] [stdout]     |
[INFO] [stdout] 647 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]     |                                                        ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 647 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y().into()))));
[INFO] [stdout]     |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:648:28
[INFO] [stdout]     |
[INFO] [stdout] 648 |                 let drop = lane_at(e.x(), e.y()).map(|track| {
[INFO] [stdout]     |                            ^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:318:4
[INFO] [stdout]     |
[INFO] [stdout] 318 | fn lane_at(cx: f64, cy: f64) -> Option<usize> {
[INFO] [stdout]     |    ^^^^^^^ -------  -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 648 |                 let drop = lane_at(e.x().into(), e.y()).map(|track| {
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 648 |                 let drop = lane_at(e.x(), e.y().into()).map(|track| {
[INFO] [stdout]     |                                                +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:649:53
[INFO] [stdout]     |
[INFO] [stdout] 649 |                     let start = magnet_secs(secs_at(e.x()), bpm, &[]);
[INFO] [stdout]     |                                             ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 649 |                     let start = magnet_secs(secs_at(e.x().into()), bpm, &[]);
[INFO] [stdout]     |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:657:66
[INFO] [stdout]     |
[INFO] [stdout] 657 |                 controller().set_arrange_start(snap_secs(secs_at(e.x()), bpm));
[INFO] [stdout]     |                                                          ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 657 |                 controller().set_arrange_start(snap_secs(secs_at(e.x().into()), bpm));
[INFO] [stdout]     |                                                                       +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:661:29
[INFO] [stdout]     |
[INFO] [stdout] 661 |             let t = secs_at(e.x());
[INFO] [stdout]     |                     ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 661 |             let t = secs_at(e.x().into());
[INFO] [stdout]     |                                  +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:711:47
[INFO] [stdout]     |
[INFO] [stdout] 711 | ...                   snap_secs(secs_at(e.x()), bpm).max(0.0),
[INFO] [stdout]     |                                 ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 711 |                             snap_secs(secs_at(e.x().into()), bpm).max(0.0),
[INFO] [stdout]     |                                                    +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:712:57
[INFO] [stdout]     |
[INFO] [stdout] 712 | ...                   automation_gain_at(d.track, e.y()),
[INFO] [stdout]     |                       ------------------          ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:346:4
[INFO] [stdout]     |
[INFO] [stdout] 346 | fn automation_gain_at(track: usize, cy: f64) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^               -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 712 |                             automation_gain_at(d.track, e.y().into()),
[INFO] [stdout]     |                                                              +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:740:38
[INFO] [stdout]     |
[INFO] [stdout] 740 |                 if let Some(track) = lane_at(e.x(), e.y()) {
[INFO] [stdout]     |                                      ^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:318:4
[INFO] [stdout]     |
[INFO] [stdout] 318 | fn lane_at(cx: f64, cy: f64) -> Option<usize> {
[INFO] [stdout]     |    ^^^^^^^ -------  -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 740 |                 if let Some(track) = lane_at(e.x().into(), e.y()) {
[INFO] [stdout]     |                                                   +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 740 |                 if let Some(track) = lane_at(e.x(), e.y().into()) {
[INFO] [stdout]     |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:625:49
[INFO] [stdout]     |
[INFO] [stdout] 625 |                         time: snap_secs(secs_at(e.x()), bpm).max(0.0),
[INFO] [stdout]     |                                         ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 625 |                         time: snap_secs(secs_at(e.x().into()), bpm).max(0.0),
[INFO] [stdout]     |                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:742:53
[INFO] [stdout]     |
[INFO] [stdout] 742 |                     let start = magnet_secs(secs_at(e.x()), bpm, &[]);
[INFO] [stdout]     |                                             ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 742 |                     let start = magnet_secs(secs_at(e.x().into()), bpm, &[]);
[INFO] [stdout]     |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:626:57
[INFO] [stdout]     |
[INFO] [stdout] 626 |                         gain: automation_gain_at(track, e.y()),
[INFO] [stdout]     |                               ------------------        ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:346:4
[INFO] [stdout]     |
[INFO] [stdout] 346 | fn automation_gain_at(track: usize, cy: f64) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^               -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 626 |                         gain: automation_gain_at(track, e.y().into()),
[INFO] [stdout]     |                                                              +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:770:42
[INFO] [stdout]     |
[INFO] [stdout] 770 |                 let new_track = track_at(e.y()).unwrap_or(d.origin);
[INFO] [stdout]     |                                 -------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:328:4
[INFO] [stdout]     |
[INFO] [stdout] 328 | fn track_at(cy: f64) -> Option<usize> {
[INFO] [stdout]     |    ^^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 770 |                 let new_track = track_at(e.y().into()).unwrap_or(d.origin);
[INFO] [stdout]     |                                               +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot subtract `f64` from `i32`
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:635:31
[INFO] [stdout]     |
[INFO] [stdout] 635 |                     && (e.x() - x0).abs() < 4.0
[INFO] [stdout]     |                               ^ no implementation for `i32 - f64`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sub<f64>` is not implemented for `i32`
[INFO] [stdout] help: the following other types implement trait `Sub<Rhs>`
[INFO] [stdout]    --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:22:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `&i32` implements `Sub<i32>`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:33:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `i32` implements `Sub<&i32>`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:44:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `&i32` implements `Sub`
[INFO] [stdout]    --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `i32` implements `Sub`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:225:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: in this macro invocation
[INFO] [stdout]     = note: this error originates in the macro `forward_ref_binop` which comes from the expansion of the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot subtract `f64` from `i32`
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:636:31
[INFO] [stdout]     |
[INFO] [stdout] 636 |                     && (e.y() - y0).abs() < 4.0
[INFO] [stdout]     |                               ^ no implementation for `i32 - f64`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sub<f64>` is not implemented for `i32`
[INFO] [stdout] help: the following other types implement trait `Sub<Rhs>`
[INFO] [stdout]    --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:22:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `&i32` implements `Sub<i32>`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:33:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `i32` implements `Sub<&i32>`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:44:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `&i32` implements `Sub`
[INFO] [stdout]    --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:210:8
[INFO] [stdout]     |
[INFO] [stdout]     = note: `i32` implements `Sub`
[INFO] [stdout]    ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:225:0
[INFO] [stdout]     |
[INFO] [stdout]     = note: in this macro invocation
[INFO] [stdout]     = note: this error originates in the macro `forward_ref_binop` which comes from the expansion of the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:640:54
[INFO] [stdout]     |
[INFO] [stdout] 640 |                 MARQUEE.with(|m| m.set(Some((x0, y0, e.x(), e.y()))));
[INFO] [stdout]     |                                                      ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 640 |                 MARQUEE.with(|m| m.set(Some((x0, y0, e.x().into(), e.y()))));
[INFO] [stdout]     |                                                           +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:640:61
[INFO] [stdout]     |
[INFO] [stdout] 640 |                 MARQUEE.with(|m| m.set(Some((x0, y0, e.x(), e.y()))));
[INFO] [stdout]     |                                                             ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 640 |                 MARQUEE.with(|m| m.set(Some((x0, y0, e.x(), e.y().into()))));
[INFO] [stdout]     |                                                                  +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:641:49
[INFO] [stdout]     |
[INFO] [stdout] 641 |                 controller().selected_clips.set(clips_in_rect(x0, y0, e.x(), e.y()));
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^         -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                                                       |
[INFO] [stdout]     |                                                                       expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:162:4
[INFO] [stdout]     |
[INFO] [stdout] 162 | fn clips_in_rect(x0: f64, y0: f64, x1: f64, y1: f64) -> Vec<(usize, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^                   -------  -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 641 |                 controller().selected_clips.set(clips_in_rect(x0, y0, e.x().into(), e.y()));
[INFO] [stdout]     |                                                                            +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 641 |                 controller().selected_clips.set(clips_in_rect(x0, y0, e.x(), e.y().into()));
[INFO] [stdout]     |                                                                                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:647:49
[INFO] [stdout]     |
[INFO] [stdout] 647 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]     |                                                 ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 647 |                 DRAG_GHOST.with(|m| m.set(Some((e.x().into(), e.y()))));
[INFO] [stdout]     |                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:647:56
[INFO] [stdout]     |
[INFO] [stdout] 647 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]     |                                                        ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 647 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y().into()))));
[INFO] [stdout]     |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:648:28
[INFO] [stdout]     |
[INFO] [stdout] 648 |                 let drop = lane_at(e.x(), e.y()).map(|track| {
[INFO] [stdout]     |                            ^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:318:4
[INFO] [stdout]     |
[INFO] [stdout] 318 | fn lane_at(cx: f64, cy: f64) -> Option<usize> {
[INFO] [stdout]     |    ^^^^^^^ -------  -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 648 |                 let drop = lane_at(e.x().into(), e.y()).map(|track| {
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 648 |                 let drop = lane_at(e.x(), e.y().into()).map(|track| {
[INFO] [stdout]     |                                                +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:649:53
[INFO] [stdout]     |
[INFO] [stdout] 649 |                     let start = magnet_secs(secs_at(e.x()), bpm, &[]);
[INFO] [stdout]     |                                             ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 649 |                     let start = magnet_secs(secs_at(e.x().into()), bpm, &[]);
[INFO] [stdout]     |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:657:66
[INFO] [stdout]     |
[INFO] [stdout] 657 |                 controller().set_arrange_start(snap_secs(secs_at(e.x()), bpm));
[INFO] [stdout]     |                                                          ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 657 |                 controller().set_arrange_start(snap_secs(secs_at(e.x().into()), bpm));
[INFO] [stdout]     |                                                                       +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1071:49
[INFO] [stdout]      |
[INFO] [stdout] 1071 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]      |                                                 ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1071 |                 DRAG_GHOST.with(|m| m.set(Some((e.x().into(), e.y()))));
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:661:29
[INFO] [stdout]     |
[INFO] [stdout] 661 |             let t = secs_at(e.x());
[INFO] [stdout]     |                     ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 661 |             let t = secs_at(e.x().into());
[INFO] [stdout]     |                                  +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1071:56
[INFO] [stdout]      |
[INFO] [stdout] 1071 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]      |                                                        ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1071 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y().into()))));
[INFO] [stdout]      |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:711:47
[INFO] [stdout]     |
[INFO] [stdout] 711 | ...                   snap_secs(secs_at(e.x()), bpm).max(0.0),
[INFO] [stdout]     |                                 ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 711 |                             snap_secs(secs_at(e.x().into()), bpm).max(0.0),
[INFO] [stdout]     |                                                    +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:712:57
[INFO] [stdout]     |
[INFO] [stdout] 712 | ...                   automation_gain_at(d.track, e.y()),
[INFO] [stdout]     |                       ------------------          ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:346:4
[INFO] [stdout]     |
[INFO] [stdout] 346 | fn automation_gain_at(track: usize, cy: f64) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^               -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 712 |                             automation_gain_at(d.track, e.y().into()),
[INFO] [stdout]     |                                                              +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1079:26
[INFO] [stdout]      |
[INFO] [stdout] 1079 |             controller().open_sound_menu(id, e.x(), e.y());
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5048:12
[INFO] [stdout]      |
[INFO] [stdout] 5048 |     pub fn open_sound_menu(&self, id: awsm_audio_schema::SampleId, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^                                         ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1079 |             controller().open_sound_menu(id, e.x().into(), e.y());
[INFO] [stdout]      |                                                   +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1079 |             controller().open_sound_menu(id, e.x(), e.y().into());
[INFO] [stdout]      |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:740:38
[INFO] [stdout]     |
[INFO] [stdout] 740 |                 if let Some(track) = lane_at(e.x(), e.y()) {
[INFO] [stdout]     |                                      ^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:318:4
[INFO] [stdout]     |
[INFO] [stdout] 318 | fn lane_at(cx: f64, cy: f64) -> Option<usize> {
[INFO] [stdout]     |    ^^^^^^^ -------  -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 740 |                 if let Some(track) = lane_at(e.x().into(), e.y()) {
[INFO] [stdout]     |                                                   +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 740 |                 if let Some(track) = lane_at(e.x(), e.y().into()) {
[INFO] [stdout]     |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:742:53
[INFO] [stdout]     |
[INFO] [stdout] 742 |                     let start = magnet_secs(secs_at(e.x()), bpm, &[]);
[INFO] [stdout]     |                                             ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]     |
[INFO] [stdout] 307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]     |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 742 |                     let start = magnet_secs(secs_at(e.x().into()), bpm, &[]);
[INFO] [stdout]     |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:770:42
[INFO] [stdout]     |
[INFO] [stdout] 770 |                 let new_track = track_at(e.y()).unwrap_or(d.origin);
[INFO] [stdout]     |                                 -------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this function are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: function defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/arrange.rs:328:4
[INFO] [stdout]     |
[INFO] [stdout] 328 | fn track_at(cy: f64) -> Option<usize> {
[INFO] [stdout]     |    ^^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 770 |                 let new_track = track_at(e.y().into()).unwrap_or(d.origin);
[INFO] [stdout]     |                                               +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1259:66
[INFO] [stdout]      |
[INFO] [stdout] 1259 |                 controller().set_arrange_start(snap_secs(secs_at(e.x()), bpm));
[INFO] [stdout]      |                                                          ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |                                                          |
[INFO] [stdout]      |                                                          arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]      |
[INFO] [stdout]  307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1259 |                 controller().set_arrange_start(snap_secs(secs_at(e.x().into()), bpm));
[INFO] [stdout]      |                                                                       +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1071:49
[INFO] [stdout]      |
[INFO] [stdout] 1071 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]      |                                                 ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1071 |                 DRAG_GHOST.with(|m| m.set(Some((e.x().into(), e.y()))));
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1071:56
[INFO] [stdout]      |
[INFO] [stdout] 1071 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]      |                                                        ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1071 |                 DRAG_GHOST.with(|m| m.set(Some((e.x(), e.y().into()))));
[INFO] [stdout]      |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1493:65
[INFO] [stdout]      |
[INFO] [stdout] 1493 |             BLADE.with(|m| m.set(over_clip.then(|| (ti, secs_at(e.x())))));
[INFO] [stdout]      |                                                         ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]      |
[INFO] [stdout]  307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1493 |             BLADE.with(|m| m.set(over_clip.then(|| (ti, secs_at(e.x().into())))));
[INFO] [stdout]      |                                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1079:26
[INFO] [stdout]      |
[INFO] [stdout] 1079 |             controller().open_sound_menu(id, e.x(), e.y());
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^^     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5048:12
[INFO] [stdout]      |
[INFO] [stdout] 5048 |     pub fn open_sound_menu(&self, id: awsm_audio_schema::SampleId, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^                                         ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1079 |             controller().open_sound_menu(id, e.x().into(), e.y());
[INFO] [stdout]      |                                                   +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1079 |             controller().open_sound_menu(id, e.x(), e.y().into());
[INFO] [stdout]      |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1509:29
[INFO] [stdout]      |
[INFO] [stdout] 1509 |             let t = secs_at(e.x());
[INFO] [stdout]      |                     ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]      |
[INFO] [stdout]  307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1509 |             let t = secs_at(e.x().into());
[INFO] [stdout]      |                                  +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1565:60
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                         MARQUEE_START.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]      |                                                            ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                         MARQUEE_START.with(|m| m.set(Some((e.x().into(), e.y()))));
[INFO] [stdout]      |                                                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1565:67
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                         MARQUEE_START.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]      |                                                                   ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                         MARQUEE_START.with(|m| m.set(Some((e.x(), e.y().into()))));
[INFO] [stdout]      |                                                                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1584:63
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x()), bpm), e.x(), e.y());
[INFO] [stdout]      |                                                       ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |                                                       |
[INFO] [stdout]      |                                                       arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]      |
[INFO] [stdout]  307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x().into()), bpm), e.x(), e.y());
[INFO] [stdout]      |                                                                    +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1259:66
[INFO] [stdout]      |
[INFO] [stdout] 1259 |                 controller().set_arrange_start(snap_secs(secs_at(e.x()), bpm));
[INFO] [stdout]      |                                                          ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |                                                          |
[INFO] [stdout]      |                                                          arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]      |
[INFO] [stdout]  307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1259 |                 controller().set_arrange_start(snap_secs(secs_at(e.x().into()), bpm));
[INFO] [stdout]      |                                                                       +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1584:26
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x()), bpm), e.x(), e.y());
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^                                     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                                             |
[INFO] [stdout]      |                                                                             expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5053:12
[INFO] [stdout]      |
[INFO] [stdout] 5053 |     pub fn open_lane_menu(&self, track: usize, secs: f64, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^                                 ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x()), bpm), e.x().into(), e.y());
[INFO] [stdout]      |                                                                                  +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x()), bpm), e.x(), e.y().into());
[INFO] [stdout]      |                                                                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1691:34
[INFO] [stdout]      |
[INFO] [stdout] 1691 |                     controller().open_track_gain_point_menu(ti, i, e.x(), e.y());
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^        -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                                    |
[INFO] [stdout]      |                                                                    expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5058:12
[INFO] [stdout]      |
[INFO] [stdout] 5058 |     pub fn open_track_gain_point_menu(&self, track: usize, index: usize, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^                                    ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1691 |                     controller().open_track_gain_point_menu(ti, i, e.x().into(), e.y());
[INFO] [stdout]      |                                                                         +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1691 |                     controller().open_track_gain_point_menu(ti, i, e.x(), e.y().into());
[INFO] [stdout]      |                                                                                +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1493:65
[INFO] [stdout]      |
[INFO] [stdout] 1493 |             BLADE.with(|m| m.set(over_clip.then(|| (ti, secs_at(e.x())))));
[INFO] [stdout]      |                                                         ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]      |
[INFO] [stdout]  307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1493 |             BLADE.with(|m| m.set(over_clip.then(|| (ti, secs_at(e.x().into())))));
[INFO] [stdout]      |                                                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1509:29
[INFO] [stdout]      |
[INFO] [stdout] 1509 |             let t = secs_at(e.x());
[INFO] [stdout]      |                     ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]      |
[INFO] [stdout]  307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1509 |             let t = secs_at(e.x().into());
[INFO] [stdout]      |                                  +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1565:60
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                         MARQUEE_START.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]      |                                                            ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                         MARQUEE_START.with(|m| m.set(Some((e.x().into(), e.y()))));
[INFO] [stdout]      |                                                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1565:67
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                         MARQUEE_START.with(|m| m.set(Some((e.x(), e.y()))));
[INFO] [stdout]      |                                                                   ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1565 |                         MARQUEE_START.with(|m| m.set(Some((e.x(), e.y().into()))));
[INFO] [stdout]      |                                                                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1584:63
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x()), bpm), e.x(), e.y());
[INFO] [stdout]      |                                                       ------- ^^^^^ expected `f64`, found `i32`
[INFO] [stdout]      |                                                       |
[INFO] [stdout]      |                                                       arguments to this function are incorrect
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:307:4
[INFO] [stdout]      |
[INFO] [stdout]  307 | fn secs_at(cx: f64) -> f64 {
[INFO] [stdout]      |    ^^^^^^^ -------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x().into()), bpm), e.x(), e.y());
[INFO] [stdout]      |                                                                    +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1912:26
[INFO] [stdout]      |
[INFO] [stdout] 1912 |             controller().open_clip_menu(ti, ci, e.x(), e.y());
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^         -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                 |
[INFO] [stdout]      |                                                 expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5043:12
[INFO] [stdout]      |
[INFO] [stdout] 5043 |     pub fn open_clip_menu(&self, track: usize, clip: usize, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^                                   ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1912 |             controller().open_clip_menu(ti, ci, e.x().into(), e.y());
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1912 |             controller().open_clip_menu(ti, ci, e.x(), e.y().into());
[INFO] [stdout]      |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1584:26
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x()), bpm), e.x(), e.y());
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^                                     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                                             |
[INFO] [stdout]      |                                                                             expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5053:12
[INFO] [stdout]      |
[INFO] [stdout] 5053 |     pub fn open_lane_menu(&self, track: usize, secs: f64, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^                                 ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x()), bpm), e.x().into(), e.y());
[INFO] [stdout]      |                                                                                  +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1584 |             controller().open_lane_menu(ti, snap_secs(secs_at(e.x()), bpm), e.x(), e.y().into());
[INFO] [stdout]      |                                                                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:56:37
[INFO] [stdout]      |
[INFO] [stdout]   56 |                 let (wx, wy) = ctrl.client_to_world(e.x(), e.y());
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   56 |                 let (wx, wy) = ctrl.client_to_world(e.x().into(), e.y());
[INFO] [stdout]      |                                                          +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   56 |                 let (wx, wy) = ctrl.client_to_world(e.x(), e.y().into());
[INFO] [stdout]      |                                                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> packages/frontend/editor/src/ui/canvas.rs:64:31
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     start_cx: e.x(),
[INFO] [stdout]    |                               ^^^^^ expected `f64`, found `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> packages/frontend/editor/src/ui/canvas.rs:65:31
[INFO] [stdout]    |
[INFO] [stdout] 65 |                     start_cy: e.y(),
[INFO] [stdout]    |                               ^^^^^ expected `f64`, found `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot subtract `f64` from `i32`
[INFO] [stdout]   --> packages/frontend/editor/src/ui/canvas.rs:78:47
[INFO] [stdout]    |
[INFO] [stdout] 78 |                         pan_x: start_px + (cx - start_cx),
[INFO] [stdout]    |                                               ^ no implementation for `i32 - f64`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sub<f64>` is not implemented for `i32`
[INFO] [stdout] help: the following other types implement trait `Sub<Rhs>`
[INFO] [stdout]   --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `&i32` implements `Sub<i32>`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `i32` implements `Sub<&i32>`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `&i32` implements `Sub`
[INFO] [stdout]   --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:210:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `i32` implements `Sub`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:225:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: in this macro invocation
[INFO] [stdout]    = note: this error originates in the macro `forward_ref_binop` which comes from the expansion of the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot subtract `f64` from `i32`
[INFO] [stdout]   --> packages/frontend/editor/src/ui/canvas.rs:79:47
[INFO] [stdout]    |
[INFO] [stdout] 79 |                         pan_y: start_py + (cy - start_cy),
[INFO] [stdout]    |                                               ^ no implementation for `i32 - f64`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sub<f64>` is not implemented for `i32`
[INFO] [stdout] help: the following other types implement trait `Sub<Rhs>`
[INFO] [stdout]   --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `&i32` implements `Sub<i32>`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `i32` implements `Sub<&i32>`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `&i32` implements `Sub`
[INFO] [stdout]   --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:210:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `i32` implements `Sub`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:225:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: in this macro invocation
[INFO] [stdout]    = note: this error originates in the macro `forward_ref_binop` which comes from the expansion of the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1691:34
[INFO] [stdout]      |
[INFO] [stdout] 1691 |                     controller().open_track_gain_point_menu(ti, i, e.x(), e.y());
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^        -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                                    |
[INFO] [stdout]      |                                                                    expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5058:12
[INFO] [stdout]      |
[INFO] [stdout] 5058 |     pub fn open_track_gain_point_menu(&self, track: usize, index: usize, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^                                    ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1691 |                     controller().open_track_gain_point_menu(ti, i, e.x().into(), e.y());
[INFO] [stdout]      |                                                                         +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1691 |                     controller().open_track_gain_point_menu(ti, i, e.x(), e.y().into());
[INFO] [stdout]      |                                                                                +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:84:41
[INFO] [stdout]      |
[INFO] [stdout]   84 |                     let (wx, wy) = ctrl.client_to_world(cx, cy);
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^ --  -- expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   84 |                     let (wx, wy) = ctrl.client_to_world(cx.into(), cy);
[INFO] [stdout]      |                                                           +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   84 |                     let (wx, wy) = ctrl.client_to_world(cx, cy.into());
[INFO] [stdout]      |                                                               +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:90:41
[INFO] [stdout]      |
[INFO] [stdout]   90 |                     let (wx, wy) = ctrl.client_to_world(cx, cy);
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^ --  -- expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   90 |                     let (wx, wy) = ctrl.client_to_world(cx.into(), cy);
[INFO] [stdout]      |                                                           +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   90 |                     let (wx, wy) = ctrl.client_to_world(cx, cy.into());
[INFO] [stdout]      |                                                               +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:96:30
[INFO] [stdout]      |
[INFO] [stdout]   96 |                 let w = ctrl.client_to_world(cx, cy);
[INFO] [stdout]      |                              ^^^^^^^^^^^^^^^ --  -- expected `f64`, found `i32`
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   96 |                 let w = ctrl.client_to_world(cx.into(), cy);
[INFO] [stdout]      |                                                +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   96 |                 let w = ctrl.client_to_world(cx, cy.into());
[INFO] [stdout]      |                                                    +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:119:18
[INFO] [stdout]      |
[INFO] [stdout]  119 |             ctrl.zoom_at(e.x(), e.y(), factor);
[INFO] [stdout]      |                  ^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1743:12
[INFO] [stdout]      |
[INFO] [stdout] 1743 |     pub fn zoom_at(&self, client_x: f64, client_y: f64, factor: f64) {
[INFO] [stdout]      |            ^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  119 |             ctrl.zoom_at(e.x().into(), e.y(), factor);
[INFO] [stdout]      |                               +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  119 |             ctrl.zoom_at(e.x(), e.y().into(), factor);
[INFO] [stdout]      |                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/arrange.rs:1912:26
[INFO] [stdout]      |
[INFO] [stdout] 1912 |             controller().open_clip_menu(ti, ci, e.x(), e.y());
[INFO] [stdout]      |                          ^^^^^^^^^^^^^^         -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                 |
[INFO] [stdout]      |                                                 expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5043:12
[INFO] [stdout]      |
[INFO] [stdout] 5043 |     pub fn open_clip_menu(&self, track: usize, clip: usize, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^                                   ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1912 |             controller().open_clip_menu(ti, ci, e.x().into(), e.y());
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1912 |             controller().open_clip_menu(ti, ci, e.x(), e.y().into());
[INFO] [stdout]      |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/canvas.rs:128:18
[INFO] [stdout]     |
[INFO] [stdout] 128 |             ctrl.drop_palette_item(e.x(), e.y());
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> packages/frontend/editor/src/controller/mod.rs:760:12
[INFO] [stdout]     |
[INFO] [stdout] 760 |     pub fn drop_palette_item(&self, client_x: f64, client_y: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 128 |             ctrl.drop_palette_item(e.x().into(), e.y());
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 128 |             ctrl.drop_palette_item(e.x(), e.y().into());
[INFO] [stdout]     |                                                +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:56:37
[INFO] [stdout]      |
[INFO] [stdout]   56 |                 let (wx, wy) = ctrl.client_to_world(e.x(), e.y());
[INFO] [stdout]      |                                     ^^^^^^^^^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                     |
[INFO] [stdout]      |                                                     expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   56 |                 let (wx, wy) = ctrl.client_to_world(e.x().into(), e.y());
[INFO] [stdout]      |                                                          +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   56 |                 let (wx, wy) = ctrl.client_to_world(e.x(), e.y().into());
[INFO] [stdout]      |                                                                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> packages/frontend/editor/src/ui/canvas.rs:64:31
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     start_cx: e.x(),
[INFO] [stdout]    |                               ^^^^^ expected `f64`, found `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> packages/frontend/editor/src/ui/canvas.rs:65:31
[INFO] [stdout]    |
[INFO] [stdout] 65 |                     start_cy: e.y(),
[INFO] [stdout]    |                               ^^^^^ expected `f64`, found `i32`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot subtract `f64` from `i32`
[INFO] [stdout]   --> packages/frontend/editor/src/ui/canvas.rs:78:47
[INFO] [stdout]    |
[INFO] [stdout] 78 |                         pan_x: start_px + (cx - start_cx),
[INFO] [stdout]    |                                               ^ no implementation for `i32 - f64`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sub<f64>` is not implemented for `i32`
[INFO] [stdout] help: the following other types implement trait `Sub<Rhs>`
[INFO] [stdout]   --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `&i32` implements `Sub<i32>`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `i32` implements `Sub<&i32>`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `&i32` implements `Sub`
[INFO] [stdout]   --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:210:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `i32` implements `Sub`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:225:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: in this macro invocation
[INFO] [stdout]    = note: this error originates in the macro `forward_ref_binop` which comes from the expansion of the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot subtract `f64` from `i32`
[INFO] [stdout]   --> packages/frontend/editor/src/ui/canvas.rs:79:47
[INFO] [stdout]    |
[INFO] [stdout] 79 |                         pan_y: start_py + (cy - start_cy),
[INFO] [stdout]    |                                               ^ no implementation for `i32 - f64`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sub<f64>` is not implemented for `i32`
[INFO] [stdout] help: the following other types implement trait `Sub<Rhs>`
[INFO] [stdout]   --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `&i32` implements `Sub<i32>`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `i32` implements `Sub<&i32>`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/internal_macros.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `&i32` implements `Sub`
[INFO] [stdout]   --> /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:210:8
[INFO] [stdout]    |
[INFO] [stdout]    = note: `i32` implements `Sub`
[INFO] [stdout]   ::: /rustc/22950ab9e29e11620a10905f027f141ea126966e/library/core/src/ops/arith.rs:225:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: in this macro invocation
[INFO] [stdout]    = note: this error originates in the macro `forward_ref_binop` which comes from the expansion of the macro `sub_impl` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:84:41
[INFO] [stdout]      |
[INFO] [stdout]   84 |                     let (wx, wy) = ctrl.client_to_world(cx, cy);
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^ --  -- expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   84 |                     let (wx, wy) = ctrl.client_to_world(cx.into(), cy);
[INFO] [stdout]      |                                                           +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   84 |                     let (wx, wy) = ctrl.client_to_world(cx, cy.into());
[INFO] [stdout]      |                                                               +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:90:41
[INFO] [stdout]      |
[INFO] [stdout]   90 |                     let (wx, wy) = ctrl.client_to_world(cx, cy);
[INFO] [stdout]      |                                         ^^^^^^^^^^^^^^^ --  -- expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   90 |                     let (wx, wy) = ctrl.client_to_world(cx.into(), cy);
[INFO] [stdout]      |                                                           +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   90 |                     let (wx, wy) = ctrl.client_to_world(cx, cy.into());
[INFO] [stdout]      |                                                               +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:96:30
[INFO] [stdout]      |
[INFO] [stdout]   96 |                 let w = ctrl.client_to_world(cx, cy);
[INFO] [stdout]      |                              ^^^^^^^^^^^^^^^ --  -- expected `f64`, found `i32`
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   96 |                 let w = ctrl.client_to_world(cx.into(), cy);
[INFO] [stdout]      |                                                +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   96 |                 let w = ctrl.client_to_world(cx, cy.into());
[INFO] [stdout]      |                                                    +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/canvas.rs:119:18
[INFO] [stdout]      |
[INFO] [stdout]  119 |             ctrl.zoom_at(e.x(), e.y(), factor);
[INFO] [stdout]      |                  ^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                          |
[INFO] [stdout]      |                          expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1743:12
[INFO] [stdout]      |
[INFO] [stdout] 1743 |     pub fn zoom_at(&self, client_x: f64, client_y: f64, factor: f64) {
[INFO] [stdout]      |            ^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  119 |             ctrl.zoom_at(e.x().into(), e.y(), factor);
[INFO] [stdout]      |                               +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  119 |             ctrl.zoom_at(e.x(), e.y().into(), factor);
[INFO] [stdout]      |                                      +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/canvas.rs:128:18
[INFO] [stdout]     |
[INFO] [stdout] 128 |             ctrl.drop_palette_item(e.x(), e.y());
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> packages/frontend/editor/src/controller/mod.rs:760:12
[INFO] [stdout]     |
[INFO] [stdout] 760 |     pub fn drop_palette_item(&self, client_x: f64, client_y: f64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 128 |             ctrl.drop_palette_item(e.x().into(), e.y());
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 128 |             ctrl.drop_palette_item(e.x(), e.y().into());
[INFO] [stdout]     |                                                +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:402:47
[INFO] [stdout]      |
[INFO] [stdout]  402 |                         if let Some((t, v)) = unmap(el, e.x(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                               ^^^^^     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1089:4
[INFO] [stdout]      |
[INFO] [stdout] 1089 | fn unmap(
[INFO] [stdout]      |    ^^^^^
[INFO] [stdout] 1090 |     el: &web_sys::HtmlElement,
[INFO] [stdout] 1091 |     client_x: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] 1092 |     client_y: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  402 |                         if let Some((t, v)) = unmap(el, e.x().into(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                              +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  402 |                         if let Some((t, v)) = unmap(el, e.x(), e.y().into(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1276:17
[INFO] [stdout]      |
[INFO] [stdout] 1276 |                 paint(e.x(), e.y());
[INFO] [stdout]      |                 ^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1239:38
[INFO] [stdout]      |
[INFO] [stdout] 1239 |     let paint = clone!(live, host => move |cx: f64, cy: f64| {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1276 |                 paint(e.x().into(), e.y());
[INFO] [stdout]      |                            +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1276 |                 paint(e.x(), e.y().into());
[INFO] [stdout]      |                                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1279:40
[INFO] [stdout]      |
[INFO] [stdout] 1279 |                 if *drawing.borrow() { paint(e.x(), e.y()); }
[INFO] [stdout]      |                                        ^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1239:38
[INFO] [stdout]      |
[INFO] [stdout] 1239 |     let paint = clone!(live, host => move |cx: f64, cy: f64| {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1279 |                 if *drawing.borrow() { paint(e.x().into(), e.y()); }
[INFO] [stdout]      |                                                   +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1279 |                 if *drawing.borrow() { paint(e.x(), e.y().into()); }
[INFO] [stdout]      |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:402:47
[INFO] [stdout]      |
[INFO] [stdout]  402 |                         if let Some((t, v)) = unmap(el, e.x(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                               ^^^^^     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1089:4
[INFO] [stdout]      |
[INFO] [stdout] 1089 | fn unmap(
[INFO] [stdout]      |    ^^^^^
[INFO] [stdout] 1090 |     el: &web_sys::HtmlElement,
[INFO] [stdout] 1091 |     client_x: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] 1092 |     client_y: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  402 |                         if let Some((t, v)) = unmap(el, e.x().into(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                              +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  402 |                         if let Some((t, v)) = unmap(el, e.x(), e.y().into(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1371:17
[INFO] [stdout]      |
[INFO] [stdout] 1371 |                 paint(e.x(), e.y());
[INFO] [stdout]      |                 ^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1338:38
[INFO] [stdout]      |
[INFO] [stdout] 1338 |     let paint = clone!(live, host => move |cx: f64, cy: f64| {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1371 |                 paint(e.x().into(), e.y());
[INFO] [stdout]      |                            +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1371 |                 paint(e.x(), e.y().into());
[INFO] [stdout]      |                                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1374:40
[INFO] [stdout]      |
[INFO] [stdout] 1374 |                 if *drawing.borrow() { paint(e.x(), e.y()); }
[INFO] [stdout]      |                                        ^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1338:38
[INFO] [stdout]      |
[INFO] [stdout] 1338 |     let paint = clone!(live, host => move |cx: f64, cy: f64| {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1374 |                 if *drawing.borrow() { paint(e.x().into(), e.y()); }
[INFO] [stdout]      |                                                   +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1374 |                 if *drawing.borrow() { paint(e.x(), e.y().into()); }
[INFO] [stdout]      |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1523:39
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 if let Some((t, v)) = unmap(el, e.x(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                       ^^^^^     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                 |
[INFO] [stdout]      |                                                 expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1089:4
[INFO] [stdout]      |
[INFO] [stdout] 1089 | fn unmap(
[INFO] [stdout]      |    ^^^^^
[INFO] [stdout] 1090 |     el: &web_sys::HtmlElement,
[INFO] [stdout] 1091 |     client_x: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] 1092 |     client_y: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 if let Some((t, v)) = unmap(el, e.x().into(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 if let Some((t, v)) = unmap(el, e.x(), e.y().into(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1543:47
[INFO] [stdout]      |
[INFO] [stdout] 1543 |                         if let Some((t, v)) = unmap(el, e.x(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                               ^^^^^     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1089:4
[INFO] [stdout]      |
[INFO] [stdout] 1089 | fn unmap(
[INFO] [stdout]      |    ^^^^^
[INFO] [stdout] 1090 |     el: &web_sys::HtmlElement,
[INFO] [stdout] 1091 |     client_x: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] 1092 |     client_y: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1543 |                         if let Some((t, v)) = unmap(el, e.x().into(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                              +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1543 |                         if let Some((t, v)) = unmap(el, e.x(), e.y().into(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1276:17
[INFO] [stdout]      |
[INFO] [stdout] 1276 |                 paint(e.x(), e.y());
[INFO] [stdout]      |                 ^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1239:38
[INFO] [stdout]      |
[INFO] [stdout] 1239 |     let paint = clone!(live, host => move |cx: f64, cy: f64| {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1276 |                 paint(e.x().into(), e.y());
[INFO] [stdout]      |                            +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1276 |                 paint(e.x(), e.y().into());
[INFO] [stdout]      |                                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1279:40
[INFO] [stdout]      |
[INFO] [stdout] 1279 |                 if *drawing.borrow() { paint(e.x(), e.y()); }
[INFO] [stdout]      |                                        ^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1239:38
[INFO] [stdout]      |
[INFO] [stdout] 1239 |     let paint = clone!(live, host => move |cx: f64, cy: f64| {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1279 |                 if *drawing.borrow() { paint(e.x().into(), e.y()); }
[INFO] [stdout]      |                                                   +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1279 |                 if *drawing.borrow() { paint(e.x(), e.y().into()); }
[INFO] [stdout]      |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1371:17
[INFO] [stdout]      |
[INFO] [stdout] 1371 |                 paint(e.x(), e.y());
[INFO] [stdout]      |                 ^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1338:38
[INFO] [stdout]      |
[INFO] [stdout] 1338 |     let paint = clone!(live, host => move |cx: f64, cy: f64| {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1371 |                 paint(e.x().into(), e.y());
[INFO] [stdout]      |                            +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1371 |                 paint(e.x(), e.y().into());
[INFO] [stdout]      |                                   +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1374:40
[INFO] [stdout]      |
[INFO] [stdout] 1374 |                 if *drawing.borrow() { paint(e.x(), e.y()); }
[INFO] [stdout]      |                                        ^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                              |
[INFO] [stdout]      |                                              expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1338:38
[INFO] [stdout]      |
[INFO] [stdout] 1338 |     let paint = clone!(live, host => move |cx: f64, cy: f64| {
[INFO] [stdout]      |                                      ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1374 |                 if *drawing.borrow() { paint(e.x().into(), e.y()); }
[INFO] [stdout]      |                                                   +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1374 |                 if *drawing.borrow() { paint(e.x(), e.y().into()); }
[INFO] [stdout]      |                                                          +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/node.rs:138:33
[INFO] [stdout]      |
[INFO] [stdout]  138 |             let (wx, wy) = ctrl.client_to_world(e.x(), e.y());
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                 |
[INFO] [stdout]      |                                                 expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  138 |             let (wx, wy) = ctrl.client_to_world(e.x().into(), e.y());
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  138 |             let (wx, wy) = ctrl.client_to_world(e.x(), e.y().into());
[INFO] [stdout]      |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1523:39
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 if let Some((t, v)) = unmap(el, e.x(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                       ^^^^^     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                 |
[INFO] [stdout]      |                                                 expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1089:4
[INFO] [stdout]      |
[INFO] [stdout] 1089 | fn unmap(
[INFO] [stdout]      |    ^^^^^
[INFO] [stdout] 1090 |     el: &web_sys::HtmlElement,
[INFO] [stdout] 1091 |     client_x: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] 1092 |     client_y: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 if let Some((t, v)) = unmap(el, e.x().into(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1523 |                 if let Some((t, v)) = unmap(el, e.x(), e.y().into(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1543:47
[INFO] [stdout]      |
[INFO] [stdout] 1543 |                         if let Some((t, v)) = unmap(el, e.x(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                               ^^^^^     -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                         |
[INFO] [stdout]      |                                                         expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: function defined here
[INFO] [stdout]     --> packages/frontend/editor/src/ui/inspector.rs:1089:4
[INFO] [stdout]      |
[INFO] [stdout] 1089 | fn unmap(
[INFO] [stdout]      |    ^^^^^
[INFO] [stdout] 1090 |     el: &web_sys::HtmlElement,
[INFO] [stdout] 1091 |     client_x: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] 1092 |     client_y: f64,
[INFO] [stdout]      |     -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1543 |                         if let Some((t, v)) = unmap(el, e.x().into(), e.y(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                              +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout] 1543 |                         if let Some((t, v)) = unmap(el, e.x(), e.y().into(), tmax, vmin, vmax) {
[INFO] [stdout]      |                                                                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/node.rs:158:18
[INFO] [stdout]      |
[INFO] [stdout]  158 |             ctrl.open_context_menu(node.id, e.x(), e.y());
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^          -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                             |
[INFO] [stdout]      |                                             expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5033:12
[INFO] [stdout]      |
[INFO] [stdout] 5033 |     pub fn open_context_menu(&self, node: NodeId, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^                      ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  158 |             ctrl.open_context_menu(node.id, e.x().into(), e.y());
[INFO] [stdout]      |                                                  +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  158 |             ctrl.open_context_menu(node.id, e.x(), e.y().into());
[INFO] [stdout]      |                                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/node.rs:603:34
[INFO] [stdout]      |
[INFO] [stdout]  603 |                 let world = ctrl.client_to_world(e.x(), e.y());
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                  |
[INFO] [stdout]      |                                                  expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  603 |                 let world = ctrl.client_to_world(e.x().into(), e.y());
[INFO] [stdout]      |                                                       +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  603 |                 let world = ctrl.client_to_world(e.x(), e.y().into());
[INFO] [stdout]      |                                                              +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/node.rs:138:33
[INFO] [stdout]      |
[INFO] [stdout]  138 |             let (wx, wy) = ctrl.client_to_world(e.x(), e.y());
[INFO] [stdout]      |                                 ^^^^^^^^^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                 |
[INFO] [stdout]      |                                                 expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  138 |             let (wx, wy) = ctrl.client_to_world(e.x().into(), e.y());
[INFO] [stdout]      |                                                      +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  138 |             let (wx, wy) = ctrl.client_to_world(e.x(), e.y().into());
[INFO] [stdout]      |                                                             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:352:43
[INFO] [stdout]     |
[INFO] [stdout] 352 |                         el.set_scroll_top(target);
[INFO] [stdout]     |                            -------------- ^^^^^^ expected `i32`, found `f64`
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.99/src/features/gen_HtmlElement.rs:65:12
[INFO] [stdout]     |
[INFO] [stdout]  65 |     pub fn set_scroll_top(this: &HtmlElement, value: i32);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/node.rs:158:18
[INFO] [stdout]      |
[INFO] [stdout]  158 |             ctrl.open_context_menu(node.id, e.x(), e.y());
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^          -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                             |
[INFO] [stdout]      |                                             expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5033:12
[INFO] [stdout]      |
[INFO] [stdout] 5033 |     pub fn open_context_menu(&self, node: NodeId, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^                      ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  158 |             ctrl.open_context_menu(node.id, e.x().into(), e.y());
[INFO] [stdout]      |                                                  +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  158 |             ctrl.open_context_menu(node.id, e.x(), e.y().into());
[INFO] [stdout]      |                                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:491:55
[INFO] [stdout]     |
[INFO] [stdout] 491 | ...                   let Some((beat, pitch)) = cell(e.x(), e.y()) else { return };
[INFO] [stdout]     |                                                 ^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:168:31
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let cell = clone!(host => move |cx: f64, cy: f64| -> Option<(f64, u8)> {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 491 |                             let Some((beat, pitch)) = cell(e.x().into(), e.y()) else { return };
[INFO] [stdout]     |                                                                 +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 491 |                             let Some((beat, pitch)) = cell(e.x(), e.y().into()) else { return };
[INFO] [stdout]     |                                                                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:525:55
[INFO] [stdout]     |
[INFO] [stdout] 525 | ...                   let Some((beat, pitch)) = cell(e.x(), e.y()) else { return };
[INFO] [stdout]     |                                                 ^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:168:31
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let cell = clone!(host => move |cx: f64, cy: f64| -> Option<(f64, u8)> {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 525 |                             let Some((beat, pitch)) = cell(e.x().into(), e.y()) else { return };
[INFO] [stdout]     |                                                                 +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 525 |                             let Some((beat, pitch)) = cell(e.x(), e.y().into()) else { return };
[INFO] [stdout]     |                                                                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/node.rs:603:34
[INFO] [stdout]      |
[INFO] [stdout]  603 |                 let world = ctrl.client_to_world(e.x(), e.y());
[INFO] [stdout]      |                                  ^^^^^^^^^^^^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                  |
[INFO] [stdout]      |                                                  expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:1735:12
[INFO] [stdout]      |
[INFO] [stdout] 1735 |     pub fn client_to_world(&self, client_x: f64, client_y: f64) -> (f64, f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^        -------------  -------------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  603 |                 let world = ctrl.client_to_world(e.x().into(), e.y());
[INFO] [stdout]      |                                                       +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]  603 |                 let world = ctrl.client_to_world(e.x(), e.y().into());
[INFO] [stdout]      |                                                              +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/wire.rs:97:30
[INFO] [stdout]      |
[INFO] [stdout]   97 |                 controller().open_wire_menu(conn_id, e.x(), e.y());
[INFO] [stdout]      |                              ^^^^^^^^^^^^^^          -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                      |
[INFO] [stdout]      |                                                      expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5038:12
[INFO] [stdout]      |
[INFO] [stdout] 5038 |     pub fn open_wire_menu(&self, wire: ConnId, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^                      ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   97 |                 controller().open_wire_menu(conn_id, e.x().into(), e.y());
[INFO] [stdout]      |                                                           +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   97 |                 controller().open_wire_menu(conn_id, e.x(), e.y().into());
[INFO] [stdout]      |                                                                  +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:352:43
[INFO] [stdout]     |
[INFO] [stdout] 352 |                         el.set_scroll_top(target);
[INFO] [stdout]     |                            -------------- ^^^^^^ expected `i32`, found `f64`
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/web-sys-0.3.99/src/features/gen_HtmlElement.rs:65:12
[INFO] [stdout]     |
[INFO] [stdout]  65 |     pub fn set_scroll_top(this: &HtmlElement, value: i32);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:491:55
[INFO] [stdout]     |
[INFO] [stdout] 491 | ...                   let Some((beat, pitch)) = cell(e.x(), e.y()) else { return };
[INFO] [stdout]     |                                                 ^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:168:31
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let cell = clone!(host => move |cx: f64, cy: f64| -> Option<(f64, u8)> {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 491 |                             let Some((beat, pitch)) = cell(e.x().into(), e.y()) else { return };
[INFO] [stdout]     |                                                                 +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 491 |                             let Some((beat, pitch)) = cell(e.x(), e.y().into()) else { return };
[INFO] [stdout]     |                                                                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this function are incorrect
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:525:55
[INFO] [stdout]     |
[INFO] [stdout] 525 | ...                   let Some((beat, pitch)) = cell(e.x(), e.y()) else { return };
[INFO] [stdout]     |                                                 ^^^^ -----  ----- expected `f64`, found `i32`
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      expected `f64`, found `i32`
[INFO] [stdout]     |
[INFO] [stdout] note: closure defined here
[INFO] [stdout]    --> packages/frontend/editor/src/ui/piano_roll.rs:168:31
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let cell = clone!(host => move |cx: f64, cy: f64| -> Option<(f64, u8)> {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 525 |                             let Some((beat, pitch)) = cell(e.x().into(), e.y()) else { return };
[INFO] [stdout]     |                                                                 +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]     |
[INFO] [stdout] 525 |                             let Some((beat, pitch)) = cell(e.x(), e.y().into()) else { return };
[INFO] [stdout]     |                                                                        +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]     --> packages/frontend/editor/src/ui/wire.rs:97:30
[INFO] [stdout]      |
[INFO] [stdout]   97 |                 controller().open_wire_menu(conn_id, e.x(), e.y());
[INFO] [stdout]      |                              ^^^^^^^^^^^^^^          -----  ----- expected `f64`, found `i32`
[INFO] [stdout]      |                                                      |
[INFO] [stdout]      |                                                      expected `f64`, found `i32`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> packages/frontend/editor/src/controller/mod.rs:5038:12
[INFO] [stdout]      |
[INFO] [stdout] 5038 |     pub fn open_wire_menu(&self, wire: ConnId, x: f64, y: f64) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^                      ------  ------
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   97 |                 controller().open_wire_menu(conn_id, e.x().into(), e.y());
[INFO] [stdout]      |                                                           +++++++
[INFO] [stdout] help: you can convert an `i32` to an `f64`, producing the floating point representation of the integer
[INFO] [stdout]      |
[INFO] [stdout]   97 |                 controller().open_wire_menu(conn_id, e.x(), e.y().into());
[INFO] [stdout]      |                                                                  +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308, E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `awsm-audio-editor` (bin "awsm-audio-editor" test) due to 61 previous errors; 6 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308, E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `awsm-audio-editor` (bin "awsm-audio-editor") due to 61 previous errors; 6 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f", kill_on_drop: false }`
[INFO] [stdout] 715c70278bb032fcb05c0aacd4a203b64b7c6d58826a37ed424dfbb8f03bfb9f
