From 399feec032b463aae98b7fb596bc671a691e94e1 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 3 Nov 2025 09:10:40 +0100 Subject: [PATCH 1/4] :arrow_up: Update rust to 1.91 --- docker/devenv/Dockerfile | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile index 2b43f31e93..b23a481817 100644 --- a/docker/devenv/Dockerfile +++ b/docker/devenv/Dockerfile @@ -149,18 +149,24 @@ FROM base AS setup-rust ENV PATH=/opt/cargo/bin:$PATH \ RUSTUP_HOME=/opt/rustup \ CARGO_HOME=/opt/cargo \ - RUSTUP_VERSION=1.27.1 \ - RUST_VERSION=1.85.0 \ + RUSTUP_VERSION=1.28.2 \ + RUST_VERSION=1.91.0 \ EMSCRIPTEN_VERSION=4.0.6 WORKDIR /opt RUN set -eux; \ # Same steps as in Rust official Docker image https://github.com/rust-lang/docker-rust/blob/9f287282d513a84cb7c7f38f197838f15d37b6a9/1.81.0/bookworm/Dockerfile - dpkgArch="$(dpkg --print-architecture)"; \ - case "${dpkgArch##*-}" in \ - amd64) rustArch='x86_64-unknown-linux-gnu'; rustupSha256='6aeece6993e902708983b209d04c0d1dbb14ebb405ddb87def578d41f920f56d' ;; \ - arm64) rustArch='aarch64-unknown-linux-gnu'; rustupSha256='1cffbf51e63e634c746f741de50649bbbcbd9dbe1de363c9ecef64e278dba2b2' ;; \ + arch="$(dpkg --print-architecture)"; \ + case "$arch" in \ + 'amd64') \ + rustArch='x86_64-unknown-linux-gnu'; \ + rustupSha256='20a06e644b0d9bd2fbdbfd52d42540bdde820ea7df86e92e533c073da0cdd43c'; \ + ;; \ + 'arm64') \ + rustArch='aarch64-unknown-linux-gnu'; \ + rustupSha256='e3853c5a252fca15252d07cb23a1bdd9377a8c6f3efa01531109281ae47f841c'; \ + ;; \ *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ esac; \ wget "https://static.rust-lang.org/rustup/archive/${RUSTUP_VERSION}/${rustArch}/rustup-init"; \ From 83cd9c3db6b647ee6138da6e6c4f3bacbe682792 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bel=C3=A9n=20Albeza?= Date: Mon, 3 Nov 2025 10:43:35 +0100 Subject: [PATCH 2/4] :wrench: Fix rust linter errors --- render-wasm/src/math/bools.rs | 2 +- render-wasm/src/render/text.rs | 4 ++-- render-wasm/src/shapes.rs | 2 +- render-wasm/src/shapes/bools.rs | 20 +++----------------- render-wasm/src/shapes/shadows.rs | 9 ++------- render-wasm/src/wasm/paths.rs | 2 +- 6 files changed, 10 insertions(+), 29 deletions(-) diff --git a/render-wasm/src/math/bools.rs b/render-wasm/src/math/bools.rs index 5e43764826..4ada56d8a5 100644 --- a/render-wasm/src/math/bools.rs +++ b/render-wasm/src/math/bools.rs @@ -300,7 +300,7 @@ impl Ord for BezierStart { type BM<'a> = BTreeMap>; -fn init_bm(beziers: &[(BezierSource, Bezier)]) -> BM { +fn init_bm(beziers: &[(BezierSource, Bezier)]) -> BM<'_> { let mut bm = BM::default(); for entry @ (source, bezier) in beziers.iter() { let value = *entry; diff --git a/render-wasm/src/render/text.rs b/render-wasm/src/render/text.rs index 4f69d38926..5ce58ac533 100644 --- a/render-wasm/src/render/text.rs +++ b/render-wasm/src/render/text.rs @@ -83,8 +83,8 @@ fn get_text_stroke_paints( let shader = text_paint.shader(); let mut is_opaque = true; - if shader.is_some() { - is_opaque = shader.unwrap().is_opaque(); + if let Some(shader) = shader { + is_opaque = shader.is_opaque(); } if is_opaque && count_inner_strokes == 1 { diff --git a/render-wasm/src/shapes.rs b/render-wasm/src/shapes.rs index c8c6c96b34..5b421ad3e6 100644 --- a/render-wasm/src/shapes.rs +++ b/render-wasm/src/shapes.rs @@ -504,7 +504,7 @@ impl Shape { (added, removed) } - pub fn fills(&self) -> std::slice::Iter { + pub fn fills(&self) -> std::slice::Iter<'_, Fill> { self.fills.iter() } diff --git a/render-wasm/src/shapes/bools.rs b/render-wasm/src/shapes/bools.rs index 9fa6610887..644c4108d2 100644 --- a/render-wasm/src/shapes/bools.rs +++ b/render-wasm/src/shapes/bools.rs @@ -1,30 +1,16 @@ use super::Path; -#[derive(Debug, Clone, PartialEq)] +#[derive(Debug, Default, Clone, PartialEq)] pub struct Bool { pub bool_type: BoolType, pub path: Path, } -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Default, Clone, Copy, PartialEq)] pub enum BoolType { + #[default] Union, Difference, Intersection, Exclusion, } - -impl Default for Bool { - fn default() -> Self { - Bool { - bool_type: BoolType::Union, - path: Path::default(), - } - } -} - -impl Default for BoolType { - fn default() -> Self { - Self::Union - } -} diff --git a/render-wasm/src/shapes/shadows.rs b/render-wasm/src/shapes/shadows.rs index 28d940eddd..71e09a493c 100644 --- a/render-wasm/src/shapes/shadows.rs +++ b/render-wasm/src/shapes/shadows.rs @@ -3,18 +3,13 @@ use skia_safe::{self as skia, image_filters, ImageFilter, Paint}; use super::Color; use crate::render::filters::compose_filters; -#[derive(Debug, Clone, Copy, PartialEq)] +#[derive(Debug, Default, Clone, Copy, PartialEq)] pub enum ShadowStyle { + #[default] Drop, Inner, } -impl Default for ShadowStyle { - fn default() -> Self { - Self::Drop - } -} - #[derive(Debug, Clone, Copy, PartialEq)] pub struct Shadow { pub color: Color, diff --git a/render-wasm/src/wasm/paths.rs b/render-wasm/src/wasm/paths.rs index aa70cbe3a2..5fb9bc7c28 100644 --- a/render-wasm/src/wasm/paths.rs +++ b/render-wasm/src/wasm/paths.rs @@ -180,7 +180,7 @@ pub extern "C" fn set_shape_path_buffer() { let buffer = get_path_upload_buffer(); let mut buffer = buffer.lock().unwrap(); let chunk_size = size_of::(); - if buffer.len() % chunk_size != 0 { + if !buffer.len().is_multiple_of(chunk_size) { // FIXME println!("Warning: buffer length is not a multiple of chunk size!"); } From 88493f680553f93ef780663133818b1401a10b92 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Mon, 3 Nov 2025 16:14:24 +0100 Subject: [PATCH 3/4] :bug: Fix incorrect query for subscription editors (#7672) Default teams should be present on the query results --- backend/src/app/rpc/commands/profile.clj | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/app/rpc/commands/profile.clj b/backend/src/app/rpc/commands/profile.clj index 38e86f5043..4207db2d22 100644 --- a/backend/src/app/rpc/commands/profile.clj +++ b/backend/src/app/rpc/commands/profile.clj @@ -484,7 +484,6 @@ WHERE tpr1.profile_id = ? AND tpr1.is_owner IS true AND tpr2.can_edit IS true - AND NOT t.is_default AND t.deleted_at IS NULL") (sv/defmethod ::get-subscription-usage From 37aa59b164ca8e1080d06f73ebc6f495e892388d Mon Sep 17 00:00:00 2001 From: Luis de Dios Date: Tue, 4 Nov 2025 11:57:52 +0100 Subject: [PATCH 4/4] :bug: Fix hidden advanced frame grid options menu (#7681) --- .../app/main/ui/workspace/sidebar/options/menus/frame_grid.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.scss b/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.scss index f19955d198..e7caff9882 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/options/menus/frame_grid.scss @@ -23,6 +23,7 @@ .element-set-content { @include deprecated.flexColumn; + grid-column: span 8; margin: deprecated.$s-4 0 deprecated.$s-8 0; }