perf(assets): bundle theme CSS into one hashed bundle

The 3 theme stylesheets were separate raw entries in both app_include_css
and web_include_css — 3 lines each in the preload header (edge proxy has a
~4 KB buffer; overflow → 502) and hashless /assets paths under nginx's
1-year cache. Merged into jey_theme.bundle.css (order preserved: shared →
theme_chrome → theme_modern); 3 → 1, now hashed → automatic cache-busting.
JS left as-is (theme logic, kept out of scope).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ali 2026-06-24 10:28:30 +00:00
parent 712d54b6e7
commit 2e03ec2e91
8 changed files with 5463 additions and 1084 deletions

View File

@ -11,9 +11,7 @@ app_license = "unlicense"
# include js, css files in header of desk.html # include js, css files in header of desk.html
app_include_css = [ app_include_css = [
"/assets/jey_theme/css/shared.css", "jey_theme.bundle.css",
"/assets/jey_theme/css/theme_chrome.css",
"/assets/jey_theme/css/theme_modern.css",
] ]
app_include_js = "/assets/jey_theme/js/jey_theme.js" app_include_js = "/assets/jey_theme/js/jey_theme.js"
@ -55,9 +53,7 @@ after_migrate = [
# include js, css files in header of web template # include js, css files in header of web template
web_include_css = [ web_include_css = [
"/assets/jey_theme/css/shared.css", "jey_theme.bundle.css",
"/assets/jey_theme/css/theme_chrome.css",
"/assets/jey_theme/css/theme_modern.css",
] ]
web_include_js = "/assets/jey_theme/js/jey_theme.js" web_include_js = "/assets/jey_theme/js/jey_theme.js"

File diff suppressed because it is too large Load Diff

View File

@ -1,69 +0,0 @@
/* ==========================================================================
THEME: Modern [data-jey-theme="modern"]
Frosted glass rounded squares with indigo accents.
========================================================================== */
@keyframes jey-modern-glow {
0%, 100% { opacity: 0.4; }
50% { opacity: 0.7; }
}
/* Outer shell — frosted glass rounded square */
[data-jey-theme="modern"] .jey-chrome {
width: 72px; height: 72px; border-radius: 22px; position: relative;
background: rgba(255, 255, 255, 0.45);
backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.6);
box-shadow: 0 4px 16px rgba(0,0,0,0.06), 0 1px 3px rgba(0,0,0,0.04), inset 0 1px 0 rgba(255,255,255,0.8);
transition: all 0.3s ease;
}
[data-jey-theme="modern"] .desktop-icon:hover .jey-chrome {
box-shadow: 0 8px 24px rgba(0,0,0,0.1), 0 2px 6px rgba(0,0,0,0.06), inset 0 1px 0 rgba(255,255,255,0.9);
transform: translateY(-2px);
}
/* Hide chrome ring layers */
[data-jey-theme="modern"] .jey-chrome-ring,
[data-jey-theme="modern"] .jey-chrome-gap,
[data-jey-theme="modern"] .jey-chrome-ring-inner {
display: none;
}
/* Face fills rounded square */
[data-jey-theme="modern"] .jey-chrome-face {
position: absolute; inset: 0; border-radius: 22px; overflow: hidden;
background: transparent; box-shadow: none;
display: flex; align-items: center; justify-content: center;
}
/* Bottom glow accent */
[data-jey-theme="modern"] .jey-face-glow {
position: absolute; bottom: -4px; left: 16px; right: 16px; height: 20px;
border-radius: 50%;
background: radial-gradient(ellipse, rgba(99, 102, 241, 0.35) 0%, transparent 70%);
animation: jey-modern-glow 4s ease-in-out infinite;
pointer-events: none; z-index: 0;
}
/* Top glass highlight */
[data-jey-theme="modern"] .jey-face-reflection {
position: absolute; top: 0; left: 0; right: 0; height: 50%;
border-radius: 22px 22px 0 0;
background: linear-gradient(180deg, rgba(255,255,255,0.5) 0%, transparent 100%);
pointer-events: none; z-index: 1; animation: none;
}
/* Icon — indigo accent */
[data-jey-theme="modern"] .jey-chrome-face .jey-icon {
width: 26px !important; height: 26px !important;
stroke: #4f46e5 !important; fill: none !important;
stroke-width: 1.6 !important; stroke-linecap: round !important; stroke-linejoin: round !important;
filter: drop-shadow(0 1px 2px rgba(79, 70, 229, 0.2)) !important;
position: relative; z-index: 2;
}
/* Rounded square container */
[data-jey-theme="modern"] .icon-container.jey-chrome-done {
border-radius: 22px !important;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long