Add on-demand CSS: registry, pre-computed component classes, header compression
- Parse tw.css into per-class lookup registry at startup
- Pre-scan component CSS classes at registration time (avoid per-request regex)
- Compress SX-Css header: 8-char hash replaces full class list (LRU cache)
- Add ;@css comment annotation for dynamically constructed class names
- Safelist bg-sky-{100..400} in Tailwind config for menu-row-sx dynamic shades
- Client sends/receives hash, falls back gracefully on cache miss
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -117,6 +117,24 @@ def create_base_app(
|
||||
load_shared_components()
|
||||
load_relation_registry()
|
||||
|
||||
# Load CSS registry (tw.css → class-to-rule lookup for on-demand CSS)
|
||||
from shared.sx.css_registry import load_css_registry, registry_loaded
|
||||
_styles = BASE_DIR / "static" / "styles"
|
||||
_fa_css = BASE_DIR / "static" / "fontawesome" / "css"
|
||||
if (_styles / "tw.css").exists() and not registry_loaded():
|
||||
load_css_registry(
|
||||
_styles / "tw.css",
|
||||
extra_css=[
|
||||
_styles / "basics.css",
|
||||
_styles / "cards.css",
|
||||
_styles / "blog-content.css",
|
||||
_styles / "prism.css",
|
||||
_fa_css / "all.min.css",
|
||||
_fa_css / "v4-shims.min.css",
|
||||
],
|
||||
url_rewrites={"../webfonts/": "/static/fontawesome/webfonts/"},
|
||||
)
|
||||
|
||||
# Dev-mode: auto-reload sx templates when files change on disk
|
||||
if os.getenv("RELOAD") == "true":
|
||||
from shared.sx.jinja_bridge import reload_if_changed
|
||||
@@ -298,7 +316,7 @@ def create_base_app(
|
||||
response.headers["Access-Control-Allow-Origin"] = origin
|
||||
response.headers["Access-Control-Allow-Credentials"] = "true"
|
||||
response.headers["Access-Control-Allow-Headers"] = (
|
||||
"SX-Request, SX-Target, SX-Current-URL, SX-Components, "
|
||||
"SX-Request, SX-Target, SX-Current-URL, SX-Components, SX-Css, "
|
||||
"HX-Request, HX-Target, HX-Current-URL, HX-Trigger, "
|
||||
"Content-Type, X-CSRFToken"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user