Solvronix Desk v1.1.0 — 8 Bug Fixes, Full i18n & RTL Support

Hey Frappe community :waving_hand:

We just shipped Solvronix Desk v1.1.0 — our open-source white-label theme for Frappe/ERPNext v16.

For those who haven’t seen it: Solvronix Desk transforms the default Frappe interface into a branded, modern SaaS-looking product — command palette (Ctrl+K), slim icon sidebar, auto color system from two brand colors, dark mode, progressive forms, language switcher, and more.

What’s fixed in v1.1.0:

Bug Fixes

  1. Sidebar active text going black — Root cause was CSS specificity. Frappe’s compiled bundle was winning. Fixed by upgrading all sidebar selectors from 3-class to 4-class chains so our rules always win.

  2. Sidebar dropdown sub-items not styled — Same specificity issue. Added explicit .nested-container selectors to cover collapsed sub-items.

  3. Frappe’s search/bell appearing in sidebar (RTL mode) — Added display: none !important on .standard-items-sections, .navbar-search-bar, .sidebar-notification — permanently hidden.

  4. Language switching required hard refresh — Frappe embeds the entire boot data including translations inside desk.html. A normal reload served cached HTML with the old language. Fixed by navigating to /desk?_lang_reload=timestamp so the unique URL forces a fresh fetch every time.

  5. Language not working at all — Frappe v16 uses .po/.mo files, not CSV. The MO binary files were never compiled. Ran bench compile-po-to-mo --force — all 25+ languages now work.

  6. Redis boot cache not cleared on language change — Added frappe.cache.hdel("bootinfo", user) to set_user_language() in api.py so the new language takes effect immediately without manual cache flush.

  7. RTL user dropdown appearing on wrong side — Fixed openUserDrop(), openLangDrop(), and openDropdown() in solvronix_desk.js to detect document.documentElement.dir === "rtl" and flip anchor side accordingly. Toolbar itself left untouched — Frappe handles that natively.

  8. i18n — custom UI strings not translating — All hardcoded strings in notification_center.js and command_palette.js wrapped in __(). Strings like “You’re all caught up!”, “Quick Actions”, “Create document”, “No results found” now fully translatable.

Marketplace Audit Fixes

  1. Added room=frappe.local.site to frappe.publish_realtime() in events.py per Semgrep frappe-realtime-pick-room rule.

  2. Removed deployment instructions from README per Marketplace long description policy.

Release Tags

Tag Contents
v1.0.0 Original release
v1.1.0 All bug fixes + i18n + RTL

Install:

bench get-app https://github.com/Solvronix/Solvronix-Desk
bench --site your-site.com install-app solvronix_desk

GitHub: https://github.com/Solvronix/Solvronix-Desk

Would love feedback from anyone running it on v16. If you hit any issues, open a GitHub issue or reply here.