Adds jey_theme.access_control with a single source of truth (BLOCKED_MODULES,
BLOCKED_DOCTYPES_EXTRA) and three Frappe hooks:
- before_request: HTTP-level block on /api/resource/<Doctype>, /app/<slug>
and any whitelisted method passing `doctype` in form_dict. Runs before the
Administrator bypass in frappe.permissions, so it blocks every user.
- extend_bootinfo: strips blocked modules/doctypes/workspaces from bootinfo
(workspaces.pages, module_wise_workspaces, app_data, desktop_icons,
user.can_read/...) so the client router never registers routes for them
and the sidebar/switcher hide them.
- has_permission wildcard: per-doc safety net for non-Administrator users.
shared.css gets desktop-icon[data-id] fallbacks for Quality/Subcontracting.
Reversal: clear BLOCKED_MODULES in access_control.py and run
`bench --site <site> clear-cache && bench restart`. No DB writes are made.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extended chrome theme from desktop icons only to the full ERPNext UI:
navbar, sidebar, buttons, inputs, forms, lists, tables, modals,
dropdowns, tabs, timeline, scrollbars. Uses 45° multi-stop reflective
gradients, beveled shadows, conic-gradient accents, and polished
metal body background.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>