Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
57d3ca2
feat!: v2.0.0 — zero-config chrome染色 with smart edge detection
chodaict May 26, 2026
9ae9ef6
feat: smooth 400ms transition on html/body/body::before bg overwrite
chodaict May 26, 2026
3b10201
docs(demo): rewrite demo for v2 — hero + despair + belt + footer
chodaict May 26, 2026
00255f7
docs(demo): bring back the iPhone simulator, now side-by-side ON vs OFF
chodaict May 26, 2026
e29ee41
docs(demo): restore v1 iPhone simulator, transform interactions for v2
chodaict May 26, 2026
3004718
fix(demo): translate UI to English + inline utils so deployed demo works
chodaict May 26, 2026
80f6611
docs(demo): replicate full cver.net homepage inside the phone
chodaict May 26, 2026
6085618
fix: untrack HANDOFF.md (internal doc) + use real cver assets in demo
chodaict May 26, 2026
558bad4
docs(demo): integrate v1 banner-mode story into v2 simulator
chodaict May 26, 2026
adc2acd
chore: trigger Pages rebuild after history rewrite
chodaict May 26, 2026
ad4b636
chore(demo): force rebuild after history rewrite
chodaict May 26, 2026
9765354
ci: re-trigger Pages deploy
chodaict May 26, 2026
0a073f8
docs: translate remaining 染色 / 進場 / 退場 in README to English
chodaict May 26, 2026
cac7624
chore: scrub remaining Chinese from src + demo comments + package.json
chodaict May 26, 2026
be4fa85
fix: add .nojekyll to skip Jekyll build (jekyll-build-pages action do…
chodaict May 26, 2026
977e8fe
fix(demo): align simulated Safari capsule positions with real iOS lay…
chodaict May 26, 2026
2c35af2
fix(demo): simulate translucent SAFE_NATURAL chrome (Safari's native …
chodaict May 26, 2026
2b34ddb
fix(demo): consistent status-bar icon position + auto-contrast text +…
chodaict May 26, 2026
30057fd
docs(demo): swap hero logo to animated cver.net logo.gif
chodaict May 26, 2026
e6555c4
fix(demo): tidy control-panel buttons — equal widths, no wrapping, 2x…
chodaict May 26, 2026
146d364
fix(demo): drop translucent chrome alpha 0.55 → 0.12 so SAFE_NATURAL
chodaict May 26, 2026
c3ee160
fix(demo): solid chrome sampling + viewport-anchored gradient + hue-d…
chodaict May 26, 2026
750425f
fix(demo): restore neutral template footer (Terms / Privacy / Contact)
chodaict May 26, 2026
3dfa82e
chore(demo): remove Live diagnostics panel
chodaict May 26, 2026
70c4bfb
chore(demo): remove home indicator pill (not shown by iOS 26 Safari)
chodaict May 26, 2026
0d6bfab
fix(demo): hero fills the full phone screen on initial load
chodaict May 26, 2026
685d921
fix(demo): align status bar items with dynamic island + bump size
chodaict May 26, 2026
906c3a8
fix(demo): iPhone 15/16/17 squircle corner geometry
chodaict May 26, 2026
dc535cc
fix(demo): tighten status-bar line-height so time aligns with icons
chodaict May 26, 2026
60f0d56
fix(demo): move all overlays inside phone-screen so squircle clips them
chodaict May 26, 2026
22cd008
chore: rename package to bleedblend and keep version at 2.0.1
chodaict May 26, 2026
6647f2a
fix(demo): wrap simulator overlays in viewport wrapper and add iPhone…
chodaict May 27, 2026
186d120
fix(demo): remove Device Model + white theme, transparent status bar …
chodaict May 27, 2026
f9f1b53
fix(demo): update status bar natural scrolled-solid fallback and page…
chodaict May 27, 2026
bb6746d
fix(demo): set default view to buggy/off and simulate natural solid f…
chodaict May 27, 2026
ff1b21e
fix(demo): synchronize auto-tint toggle state with Top/Bottom banner …
chodaict May 27, 2026
ab6bd21
Update index.html
chodaict May 27, 2026
7da0947
fix(demo): set theme preset swatches gradient stops to 0% and 100%
chodaict May 27, 2026
6573b91
Copy CVER official footer structure and borderless style to demo page
chodaict May 27, 2026
3536b16
Replace footer Language link with MIT License link
chodaict May 27, 2026
cc8c75e
Fix circular color buttons repeating gradient border lines using back…
chodaict May 27, 2026
210c78d
Add Live State Monitor, Interactive Bug Hotspots, Scroll Prompt, and …
chodaict May 27, 2026
244e62a
Refactor simulator layouts, fix overscroll chaining, remove hotspots,…
chodaict May 28, 2026
fbf586e
Implement Option C text-free scroll icon and Option 3 developer drawe…
chodaict May 28, 2026
1b272eb
Restore Developer Console and Integration Code to left control panel
chodaict May 28, 2026
b123f62
Reposition color swatches to headers, update layout select to option-…
chodaict May 28, 2026
3baf828
Reposition text input customizers next to headings inside headers
chodaict May 28, 2026
ca3cfdf
feat: implement compact edit popovers for top/bottom banner customizers
chodaict May 28, 2026
50e2bf2
style: consolidate live-console description into window title
chodaict May 28, 2026
98c11d5
feat: implement mockup settings theme edit popover with custom gradients
chodaict May 28, 2026
d751221
clean: remove theme presets from mockup popover, simplify applyTheme …
chodaict May 28, 2026
eafc816
style: set CVER default theme colors precisely to #aceace and #0a8c8e
chodaict May 28, 2026
723aef2
feat: add favicon and apple-touch-icon links to demo page
chodaict May 28, 2026
269a073
feat: simplify Mockup Settings panel by integrating layout descriptio…
chodaict May 28, 2026
b996535
feat: redesign mockup shell as high-fidelity iPhone 16 Pro and add Ti…
chodaict May 28, 2026
6ed45c9
refine: pixel-perfect iPhone 16 Pro proportions — thinner bezel (5.5p…
chodaict May 28, 2026
44ef35a
fix: remove earpiece, reposition buttons outside frame, add 3-capsule…
chodaict May 28, 2026
bccdc4f
fix: add margin gap between side buttons and screen, use monitor icon…
chodaict May 28, 2026
06b71df
Update simulator.css
chodaict May 28, 2026
e81b67d
Update index.html
chodaict May 28, 2026
ba09ff9
style: position home-indicator-area as a background layer so content …
chodaict May 28, 2026
80895c7
style: remove camera control button and lengthen other buttons to mat…
chodaict May 28, 2026
cf5f0a8
feat: add CVER logo and pipe separators to simulated phone footer mat…
chodaict May 28, 2026
ffc1fa4
chore: gitignore OSS-EXTRACTION-HANDOFF.md (session handoff, not for …
chodaict May 28, 2026
28b0a5d
refactor(demo): run the demo on liquidframe instead of bundled simula…
chodaict May 28, 2026
e1bef4d
refactor(demo): run the control panel on demodeck instead of bundled …
chodaict May 28, 2026
9380ec3
refactor(demo): drop panel glow overrides now that demodeck derives t…
chodaict May 28, 2026
90acfb0
test: add zero-dependency harness verifying zero-config auto-tint acr…
chodaict May 28, 2026
153d7ce
feat: resolve any CSS color (oklch/lab/lch/hwb/color()) via canvas re…
chodaict May 28, 2026
f145c9e
chore: bump version to 2.1.0
chodaict May 28, 2026
dfba59a
Merge pull request #1 from CVERInc/test/auto-verification
mixflavor May 28, 2026
5eff9ec
fix(demo): point header logo back to the cver.net OSS page
chodaict May 29, 2026
33a9abc
docs: clarify bleedblend tames Safari's native tinting (whole Safari …
chodaict May 30, 2026
583d03c
docs: reframe .bleedblend-top as the recipe that MAKES a sticky bar t…
mixflavor May 30, 2026
3c862d0
fix(auto): stop footer-flooding flat content pages
chodaict May 31, 2026
662131d
2.2.0-rc.0
chodaict May 31, 2026
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
1 change: 1 addition & 0 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,4 @@ jobs:
with:
folder: demo
branch: gh-pages
# touched to trigger rebuild Tue May 26 21:14:45 JST 2026
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,16 @@
node_modules/
.DS_Store

# Generated test pages (written at test runtime)
test/__generated__/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json
pnpm-lock.yaml

# Internal session handoff docs — do not publish.
HANDOFF.md
RENAME-HANDOFF.md
DEMO-HANDOFF.md
OSS-EXTRACTION-HANDOFF.md
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2026 bleed contributors
Copyright (c) 2026 bleedblend contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
739 changes: 175 additions & 564 deletions README.md

Large diffs are not rendered by default.

Empty file added demo/.nojekyll
Empty file.
320 changes: 320 additions & 0 deletions demo/bleedblend-demo.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,320 @@
/* bleedblend demo overlay — the demo-only layer that sits ON TOP of liquidframe.css.
liquidframe.css provides the phone frame (.phone-frame / .chrome-* / status bar /
Safari chrome / titanium). Everything here is bleedblend's own demo surface that
liquidframe deliberately does not ship: the fake page content inside the screen,
the top/bottom banner modes (none/buggy/bleedblend), the inner-blur demo box, and
the control-panel titanium swatch. Load AFTER liquidframe.css. */

/* ── Phone viewport backdrop ──────────────────────────────────────────────
liquidframe paints a flat var(--screen-bg); the bleedblend demo uses a teal
gradient backdrop driven by --demo-grad-top/--demo-grad-bot (set from JS). */
.phone-viewport {
background-image: linear-gradient(
180deg,
var(--demo-grad-top, #aceace) 10%,
var(--demo-grad-bot, #0a8c8e) 70%
);
background-color: var(--demo-grad-top, #aceace);
}

/* ── Control-panel titanium swatch (active state) ─────────────────────────
Base swatch styling is inline in index.html; this is just the selected ring. */
.titanium-color-btn.active {
border-color: #ffffff !important;
transform: scale(1.15);
box-shadow: 0 0 6px rgba(255, 255, 255, 0.5);
}

/* ── Fake page content inside .phone-screen ───────────────────────────────
Mirrors cver.net's shape (hero / intro / belt / footer) so the simulator
behaves like the production page. Gradient backdrop lives on .phone-viewport. */
.demo-page {
position: relative;
min-height: 100%;
display: flex;
flex-direction: column;
color: #fff;
font-family: 'Nunito', system-ui, -apple-system, sans-serif;
}

.demo-hero {
position: relative;
z-index: 1;
min-height: 100cqh;
padding: 80px 24px 40px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
}
.demo-logo {
width: min(180px, 60%);
height: auto;
display: block;
margin: 0 auto 1.4rem;
user-select: none;
}
.demo-title {
font-family: 'Comfortaa', sans-serif;
font-size: 1.35rem;
font-weight: 700;
color: #fff;
margin: 0;
line-height: 1.2;
letter-spacing: -0.01em;
}

/* Intro paragraph (transparent — gradient continues behind it). */
.demo-intro {
position: relative;
z-index: 1;
padding: 60px 28px 80px;
text-align: center;
}
.demo-intro p {
margin: 0;
font-size: 0.85rem;
line-height: 1.55;
color: rgba(255, 255, 255, 0.88);
font-weight: 400;
}

.demo-belt {
position: relative;
z-index: 1;
background-color: var(--demo-belt, #084a4c);
padding: 56px 22px 64px;
color: #fff;
}
.demo-belt-tag {
font-size: 0.62rem;
letter-spacing: 0.25em;
color: var(--demo-grad-top, #aceace);
margin: 0 0 1.6rem;
font-weight: 600;
}
.demo-card {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.08);
border-radius: 18px;
padding: 18px 18px 16px;
margin-bottom: 12px;
}
.demo-card:last-child { margin-bottom: 0; }
.demo-card h4 {
font-family: 'Comfortaa', sans-serif;
font-weight: 700;
font-size: 1.05rem;
letter-spacing: -0.01em;
margin: 0 0 6px;
color: #fff;
}
.demo-card-tag {
font-size: 0.82rem;
font-weight: 700;
margin: 0 0 8px;
color: #fff;
line-height: 1.3;
}
.demo-card p {
font-size: 0.74rem;
color: rgba(255, 255, 255, 0.78);
margin: 0 0 12px;
line-height: 1.45;
font-weight: 300;
}
.demo-card-cta {
margin: 0;
font-size: 0.78rem;
font-weight: 600;
color: var(--demo-grad-top, #aceace);
text-align: right;
}

.demo-footer {
position: relative;
z-index: 1;
background-color: var(--demo-footer, #0a8c8e);
padding: 56px 22px calc(56px + var(--sim-safe-bottom));
display: flex;
flex-direction: column;
align-items: center;
gap: 24px;
color: rgba(255, 255, 255, 0.9);
text-align: center;
}
.demo-footer-links {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
gap: 12px;
font-size: 0.78rem;
font-weight: 600;
color: rgba(255, 255, 255, 0.78);
}
.demo-footer-links.secondary {
font-size: 0.68rem;
color: rgba(255, 255, 255, 0.55);
font-weight: 400;
}
.demo-footer-sep {
opacity: 0.3;
font-weight: normal;
}
.demo-footer-logo {
display: inline-block;
opacity: 0.9;
transition: opacity 0.2s ease;
}
.demo-footer-logo:hover {
opacity: 1;
}
.demo-footer-logo img {
display: block;
width: 44px;
height: 44px;
}

/* ── Simulated banners (bleedblend's tinting targets) ─────────────────────
The sticky header/footer the demo paints. Modes: none / buggy / bleedblend. */
.sim-header {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 900;
color: white;
font-size: 0.85rem;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.sim-footer {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
z-index: 900;
color: white;
font-size: 0.85rem;
box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.15);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

/* HEADER MODES */
/* Mode: Buggy — backdrop-filter blur on the outer wrapper hits iOS Safari's
safe-area clip bug. clip-path simulates the chopped-off blur region: the
status-bar slice goes back to the page bg, leaving a sharp line. */
.header-buggy {
position: absolute;
top: 0;
left: 0;
width: 100%;
padding-top: var(--sim-safe-top);
-webkit-backdrop-filter: blur(12px) saturate(140%) !important;
backdrop-filter: blur(12px) saturate(140%) !important;
background: rgba(239, 68, 68, 0.55); /* translucent crimson — the actual banner color */
color: #fff;
clip-path: inset(var(--sim-safe-top) 0 0 0);
}

/* Mode: Bleedblend Fix — opaque outer wrapper bleeds into safe-area cleanly.
The blur lives on an inner element instead (.bleedblend-inner-blur-demo). */
.header-bleedblend {
position: absolute;
top: 0;
left: 0;
width: 100%;
padding-top: calc(8px + var(--sim-safe-top));
background: #b91c1c; /* solid crimson */
color: #fff;
-webkit-backdrop-filter: none !important;
backdrop-filter: none !important;
}

.header-none { display: none; }

/* FOOTER MODES — symmetric, but emerald CTA color */
.footer-buggy {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding-bottom: var(--sim-safe-bottom);
-webkit-backdrop-filter: blur(12px) saturate(140%) !important;
backdrop-filter: blur(12px) saturate(140%) !important;
background: rgba(5, 150, 105, 0.55); /* translucent emerald */
color: #fff;
clip-path: inset(0 0 var(--sim-safe-bottom) 0);
}

.footer-bleedblend {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding-bottom: calc(8px + var(--sim-safe-bottom));
background: #047857; /* solid emerald */
color: #fff;
-webkit-backdrop-filter: none !important;
backdrop-filter: none !important;
}

.footer-none { display: none; }

/* Inner blur element for the bleedblend "Fix" demo. */
.bleedblend-inner-blur-demo {
-webkit-backdrop-filter: blur(10px) saturate(140%);
backdrop-filter: blur(10px) saturate(140%);
background: rgba(255, 255, 255, 0.1);
border-radius: 8px;
margin: 8px;
padding: 8px;
font-size: 0.75rem;
border: 1px solid rgba(255, 255, 255, 0.1);
}

/* Header/Footer internal padding. */
.nav-content {
padding: 0.75rem 1.25rem;
display: flex;
justify-content: space-between;
align-items: center;
font-weight: 600;
}

/* Generic dummy screen content (alternate to .demo-* page). */
.dummy-content {
padding: calc(80px + var(--sim-safe-top)) 1.5rem calc(80px + var(--sim-safe-bottom));
display: flex;
flex-direction: column;
gap: 1.5rem;
}

.dummy-card {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 16px;
padding: 1.25rem;
}

.dummy-card h4 {
font-size: 0.95rem;
margin-bottom: 0.5rem;
color: white;
display: flex;
align-items: center;
gap: 0.4rem;
}

.dummy-card h4 svg {
color: var(--dd-accent);
}

.dummy-card p {
font-size: 0.8rem;
color: rgba(255, 255, 255, 0.6);
line-height: 1.5;
}
Loading