diff --git a/solvronix_desk/hooks.py b/solvronix_desk/hooks.py index 4f792c9..8292cbb 100644 --- a/solvronix_desk/hooks.py +++ b/solvronix_desk/hooks.py @@ -18,7 +18,7 @@ # ── AUTHENTICATED DESK ASSETS ────────────────────────────────────────────────── # Query versions are bumped whenever an asset changes to invalidate browser cache. app_include_css = [ - "/assets/solvronix_desk/css/solvronix_desk.css?v=51", + "/assets/solvronix_desk/css/solvronix_desk.css?v=52", "/assets/solvronix_desk/css/sidebar.css?v=21", "/assets/solvronix_desk/css/command_palette.css?v=4", "/assets/solvronix_desk/css/smart_home.css?v=7", diff --git a/solvronix_desk/public/css/solvronix_desk.css b/solvronix_desk/public/css/solvronix_desk.css index 52c7a06..277976f 100644 --- a/solvronix_desk/public/css/solvronix_desk.css +++ b/solvronix_desk/public/css/solvronix_desk.css @@ -2460,3 +2460,21 @@ html[dir="rtl"] #st-lang-dropdown { background: var(--st-brand); color: white; } + +/* ── DASHBOARD CHART GRID OVERFLOW FIX ─────────────────────────────────────── + Frappe's own .widget-group .grid-col-2 uses bare `1fr 1fr` tracks, which + default to minmax(auto, 1fr) — the track's minimum is its content's + max-content size, not 0. Frappe Charts' own ResizeObserver reads the + rendered chart container width to redraw responsively; because the track + can grow to fit content instead of being capped at the container, each + redraw can nudge the track wider, which nudges the chart wider next time — + a feedback loop that pushes the second column further right on every + resize cycle until it's cut off past the viewport edge. minmax(0, 1fr) + hard-caps the track at its fair share of the container, breaking the + loop; min-width: 0 does the same for the grid item itself. */ +.widget-group .grid-col-2 { + grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; +} +.widget-group .grid-col-2 > .widget.dashboard-widget-box { + min-width: 0; +} diff --git a/solvronix_desk/solvronix_desk/page/smart_home/smart_home.js b/solvronix_desk/solvronix_desk/page/smart_home/smart_home.js index 032baa5..83591ae 100644 --- a/solvronix_desk/solvronix_desk/page/smart_home/smart_home.js +++ b/solvronix_desk/solvronix_desk/page/smart_home/smart_home.js @@ -108,7 +108,7 @@ solvronix_desk.SmartHome = class SmartHome { this._icon("edit", "sm") + '' + __("Customize layout") + '' + '' + - '' + + '' + __("All Workspaces") + ' ' + '' + '' + diff --git a/tests/test_workspace_editorjs_popover_css.py b/tests/test_workspace_editorjs_popover_css.py index 5fbd91a..6e68fa6 100644 --- a/tests/test_workspace_editorjs_popover_css.py +++ b/tests/test_workspace_editorjs_popover_css.py @@ -39,7 +39,7 @@ def test_block_with_open_editorjs_popover_is_promoted_before_focus(self): def test_workspace_css_cache_is_bumped(self): hooks = HOOKS.read_text(encoding="utf-8") - self.assertIn("/assets/solvronix_desk/css/solvronix_desk.css?v=51", hooks) + self.assertIn("/assets/solvronix_desk/css/solvronix_desk.css?v=52", hooks) self.assertIn("/assets/solvronix_desk/js/solvronix_desk.js?v=51", hooks)