Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 32 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,37 @@
# Changelog

## [2.1.0] — 2026-08-07 — Icon Rail Sidebar

### Added
- Icon Rail sidebar layout (Theme Studio → Navbar & Sidebar → Sidebar Layout), on by default: a slim, always-visible column topped with the company logo, with one compact icon per installed app (e.g. ERPNext, CRM, Frappe HR) below it, each using that app's own icon in a theme-colored tile that follows the site's brand/accent color automatically. Beside it, Frappe's own workspace sidebar list still renders normally. New apps/workspaces appear automatically; the rail can also collapse to icon-only. Administrators can switch back to the classic single-column Tree layout at any time.
- Theme Studio Chart System with schema-driven global defaults and permission-filtered individual editors for Dashboard Charts, Dashboard Graphs, Query/Script Report charts, and Number Card sparklines
- Visual, structural, and behavioral chart controls for surfaces, palettes, individual series, axes, legends, labels, tooltips, animation, interaction, and safe advanced options
- Layered chart reset behavior: property and chart resets inherit global values, while the global reset restores built-in system defaults

### Changed
- Theme Studio is now the single user-facing configuration experience for visual themes, branding, Smart Home, and Command Palette settings
- Opening Theme Settings redirects to Theme Studio; administrators retain an explicit raw-settings maintenance action
- Branding image controls in Theme Studio now use Frappe attachment fields instead of requiring manually entered URLs
- Theme Studio now uses a readable control and preview typography scale instead of 6–10px interface text
- Theme Studio's login scene now mirrors the public login card, branding, image background, fields, links, and light/dark token behavior
- Dashboard, Form, Table, and Login previews now support click-to-select property editing in a floating inspector beside the selected item
- Published profile and realtime theme refreshes now update chart configuration atomically without changing chart data or callbacks

### Fixed
- The classic sidebar's own branding header (`#st-company-header`, shown beside the Icon Rail) no longer shows the company logo a second time next to the company name — it's text-only by design now, since the Icon Rail's own brand tile is the logo's one dedicated home in the sidebar chrome
- Icon Rail app tiles and the collapse chevron are now actually visible — `frappe.utils.icon()`'s svg renders via the `--icon-fill`/`--icon-stroke` custom properties Frappe's own CSS declares, not `color`/currentColor, so setting `color` on the tile had no effect: every icon silently rendered with whichever `--icon-stroke` happened to be ambient on the page, invisible against the tile's own accent-colored background — every tile appeared as a blank color swatch
- `publish_theme_config` (the whitelisted API Theme Studio's Publish action calls) now also protects the site's company logo/name/favicon/tagline when switching profiles, independent of the editor's own safeguard above — closing the same class of bug for any direct API call, script, or future code path that doesn't go through Theme Studio's UI, without overriding a deliberate clear on an already-active profile
- The Icon Rail's own logo tile no longer goes stale after a live theme update — publishing a new company logo/name previously refreshed the classic sidebar's header on every open Desk tab but left the rail showing the old logo until a full reload
- The Icon Rail's list column no longer gets forced open on mobile (≤767px) on every page change — that forced Frappe's own `.expanded` class into a full-screen overlay with a dimming scrim that reappeared immediately after being tapped shut, permanently covering Desk content; mobile now keeps its native collapsed/overlay toggle untouched
- Icon Rail background/active-color field descriptions in Theme Settings now correctly describe the automatic fallback (the site's accent color) instead of a color that was never actually used
- Loading a theme profile (built-in or custom) in Theme Studio no longer silently erases the site's company logo/name/favicon/tagline when published - every profile's stored config carries these as blank unless it explicitly sets them, since a profile is a reusable visual theme, not a site's identity; they're now always preserved from the current site config unless the profile deliberately overrides them
- The active workspace's label in the Icon Rail no longer appears blank; padding is tighter throughout, and the rail can now collapse to dots-only via a toggle at its base, matching the classic sidebar's own collapse behavior
- The classic sidebar's own "Workspaces" quick-list no longer duplicates the new Icon Rail column — it now only shows when Sidebar Layout is Tree, and updates immediately if the layout is changed live
- Icon Rail's list column no longer renders broken (item labels bleeding out of a zero-width collapsed container) — it now stays fully expanded via Frappe's own `.expanded` sidebar state instead of a custom collapse/hide CSS rule
- Sidebar layout changes (Tree ↔ Icon Rail) now apply live to every open Desk tab the moment a theme is published, matching every other Theme Studio setting — previously this required a full page reload, since it's the only setting read from boot data rather than applied via CSS variables
- Icon rail no longer renders partly underneath the fixed top toolbar
- Icon rail width no longer shows "undefined" or silently clamps to its minimum after a Theme Settings document is saved for the first time — Frappe's Int-field save serialization writes an unset field as 0 (not None), which was previously misread as a deliberate override

## [2.0.1] — 2026-08-03

### Fixed
Expand All @@ -10,9 +42,6 @@
## [2.0.0] — 2026-07-29 — Complete Theme Studio

### Added
- Theme Studio Chart System with schema-driven global defaults and permission-filtered individual editors for Dashboard Charts, Dashboard Graphs, Query/Script Report charts, and Number Card sparklines
- Visual, structural, and behavioral chart controls for surfaces, palettes, individual series, axes, legends, labels, tooltips, animation, interaction, and safe advanced options
- Layered chart reset behavior: property and chart resets inherit global values, while the global reset restores built-in system defaults
- A complete searchable visual editor spanning colours, navigation, form controls, typography, cards, tables, dashboards, login branding, layout, accessibility, and advanced overrides
- Frappe Default, Light, Dark, High Contrast, Solvronix, and Forest profiles, plus custom profile create, update, duplicate, rename, delete, import, and export workflows
- Live Dashboard, Form, Table, and Login preview scenes with desktop/tablet/mobile modes, Frappe comparison, drag-and-drop layout, undo/redo, draft saving, and section reset
Expand Down
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ Four one-click starting points appear in Theme Studio. Pick one and the brand an
### Auto Color System
You set one brand color. The system automatically generates your complete color palette — backgrounds, hover states, borders, shadows — using CSS `color-mix()`. Change your brand color and everything updates instantly. No developer needed.

### Slim Icon Sidebar
A 64px icon rail instead of the default wide sidebar. Expands to 240px on click. Saves screen space, reduces visual clutter. State is saved per user.
### Icon Rail Sidebar
A slim, always-visible app-icon column sits beside the classic workspace list — one compact tile per installed app (ERPNext, CRM, Frappe HR, and so on), each using that app's own icon in a theme-colored tile that follows your brand/accent color automatically. New apps and workspaces appear on the rail automatically. Collapses to icon-only via its own toggle, independent of the classic sidebar. Switch back to the classic single-column Tree layout at any time from Theme Studio → Navbar & Sidebar → Sidebar Layout.

### Dark Mode — Light / Dark / Auto
One click cycles between light, dark, and auto. Auto follows your operating system theme and switches live when the OS does. Both modes respect your brand colors. Works on every page.
Expand Down Expand Up @@ -133,13 +133,15 @@ On first launch, a checklist banner guides System Manager users through the init
|:---:|:---:|
| ![Login Page](docs/screenshots/login.png) | ![Today's View](docs/screenshots/smart-home.png) |

| Theme Studio / Settings | Dark Mode |
| Theme Studio | Dark Mode |
|:---:|:---:|
| ![Theme Settings](docs/screenshots/theme-settings.png) | ![Dark Mode](docs/screenshots/dark-mode.png) |
| ![Theme Studio](docs/screenshots/theme-studio.png) | ![Dark Mode](docs/screenshots/dark-mode.png) |

| Command Palette | Slim Sidebar |
| Command Palette | Icon Rail Sidebar |
|:---:|:---:|
| ![Command Palette](docs/screenshots/command-palette.png) | ![Slim Sidebar](docs/screenshots/sidebar.png) |
| ![Command Palette](docs/screenshots/command-palette.png) | ![Icon Rail Sidebar](docs/screenshots/sidebar.png) |

![All Apps](docs/screenshots/All-apps.png)

---

Expand Down
Binary file added docs/screenshots/All-apps.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/command-palette.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/dark-mode.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/screenshots/hero.png
Binary file not shown.
Binary file removed docs/screenshots/login-2.png
Binary file not shown.
Binary file modified docs/screenshots/login.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/sidebar.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/screenshots/smart-home.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/screenshots/theme-settings.png
Binary file not shown.
Binary file added docs/screenshots/theme-studio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/screenshots/todays-view.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion solvronix_desk/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "2.0.1"
__version__ = "2.1.0"
8 changes: 4 additions & 4 deletions solvronix_desk/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
app_license = "MIT"
app_color = "#E8610A"
app_icon = "octicon octicon-paintcan"
app_version = "2.0.1"
app_version = "2.1.0"

required_apps = []

Expand All @@ -19,7 +19,7 @@
# Query versions are bumped whenever an asset changes to invalidate browser cache.
app_include_css = [
"/assets/solvronix_desk/css/solvronix_desk.css?v=52",
"/assets/solvronix_desk/css/sidebar.css?v=21",
"/assets/solvronix_desk/css/sidebar.css?v=31",
"/assets/solvronix_desk/css/command_palette.css?v=4",
"/assets/solvronix_desk/css/smart_home.css?v=7",
"/assets/solvronix_desk/css/progressive_forms.css?v=3",
Expand All @@ -28,12 +28,12 @@
"/assets/solvronix_desk/css/dark_mode.css?v=14",
"/assets/solvronix_desk/css/module_cards.css?v=2",
"/assets/solvronix_desk/css/density.css?v=2",
"/assets/solvronix_desk/css/theme_studio.css?v=16",
"/assets/solvronix_desk/css/theme_studio.css?v=19",
]
app_include_js = [
"/assets/solvronix_desk/js/dark_mode.js?v=12",
"/assets/solvronix_desk/js/personalization.js?v=1",
"/assets/solvronix_desk/js/solvronix_desk.js?v=51",
"/assets/solvronix_desk/js/solvronix_desk.js?v=63",
"/assets/solvronix_desk/js/sidebar.js?v=3",
"/assets/solvronix_desk/js/command_palette.js?v=9",
"/assets/solvronix_desk/js/progressive_forms.js?v=4",
Expand Down
Loading