Repository navigation
Releases
Releases · iluluyu/dsh-ui-outline
dsh-ui-outline v0.2.0 — ⌘F search, wheel stepping, new glass materials
What's new in 0.2.0
- ⌘F / Ctrl+F conversation search — Spotlight-style overlay: space-separated AND matching across Chinese/English text, highlighted context snippets, fully keyboard-driven (↑↓ · ↵ jump with flash · Esc), sliced background indexing that never blocks typing.
- Wheel-stepped turn preview — roll the wheel on the rail to walk a live preview through turns; the conversation stays put, a click commits the shown turn.
- Current liquid glass material — 25% veil, 4px backdrop blur, saturate boost, uniform hairline rim; frost and opaque also selectable, live-switchable for both preview card and search overlay.
- macOS-fidelity morph — empty search is a 52px stadium capsule; the first keystroke grows it into the results card with a constant 26px radius.
- Rail placement & density — dock left or right, loose or compact ticks; narrow-column visibility toggle.
Requires dsh >= 0.2.0-rc.1. Install: dsh plugin --profile web add dsh-ui-outline
Full README with diagrams: https://github.com/iluluyu/dsh-ui-outline
0.0.3 — glass, tuned by eye
English
0.0.3 is a taste pass over the preview card's glass, driven by multi-model visual review (blind ballots on rendered pixels, not opinions) and two rounds of live user feedback.
Liquid glass, actually liquid
- Edge lens retuned. The displacement rim now bends backdrop content 1–2px with structure intact — perceptible, not jelly. (Scale 18 / rim 16, chosen over stronger candidates that showed jelly edges and dark-theme moiré.)
- Neutral surface. The old warm corner light read as a tea stain and the rim's backlight as a neon filament; both replaced with a small neutral cool-white glint at the conversation-facing corner plus a strict one-way Fresnel rim (.30 peak in light, gone by 45% of the edge). Dither stays: without it the veil banded.
- Readability first. Liquid·airy's veil is the knob that makes subtitles readable over saturated backdrops (blur barely touches low-frequency bands) — two rounds walked it to 75/4, with the ladder re-spaced so airy and standard differ on both axes.
Presets re-tuned toward beauty
| Preset | frost t / blur | liquid t / blur |
|---|---|---|
| airy 清透 | 85% / 3px | 75% / 4px |
| standard 标准 | 80% / 6px | 65% / 6px |
| misty 朦胧 | 55% / 18px | 50% / 10px |
- Standard steps off the reverse-engineered iOS
regularanchor toward airier glass — background color temperature shows through while text stays planted. - Misty is real fog that glows (18px blur dissolves color bands into light), never a milk wall; all values sit on the slider lattice.
- Defaults follow the standard presets; existing personal settings are untouched.
Docs & diagrams
- All five diagrams redrawn against the real client parameters: the materials strip now shows the corner glint, Fresnel rim, and the thick-lens fold; the hero and side-mirror scenes match.
- READMEs (en/zh) refreshed for accuracy (preset semantics, neutral light) and lightly polished.
中文
0.0.3 是对预览卡玻璃的品相轮:多模型盲投票(对渲染像素、不对观点)+ 两轮真实使用反馈驱动。
- 边缘透镜重调:折射带弯折 1–2px、结构完整——恰好可感、不果冻;暖角光(茶渍感)与背光反弹(霓虹灯丝)换成中性冷白小光斑 + 严格单向菲涅尔边缘光,dither 保留(否则面纱出现色带)。
- 可读性优先:液态清透档以面纱为可读性旋钮(模糊对低频色带几乎无效),两轮走到 75/4;阶梯双轴重排,清透与标准一眼可辨。
- 预设整体向美观靠拢:标准档脱离 iOS regular 锚点走向更透的玻璃;朦胧是会发光的真雾,不再是乳白墙;所有取值落在滑杆格点上。默认值跟随标准档,个人已有设置不受影响。
- 文档与示意图:五张示意图按真实参数重绘(角光斑、菲涅尔边缘光、厚透镜折叠带),双语 README 事实修正与轻度润色。
0.0.2 — official design language, first-class settings, glass
English
0.0.2 is a ground-up rework around the official TurnNavigator design language. Same mission — a turn rail for the conversation — now native to dsh, deeply configurable, and measurably cheap.
The rail
- Official geometry & tokens. Hugs the conversation column edge (details-panel safe), centers on the live reading band, hides below a 900px column. All colors/radii/shadows/motion resolve live from
--dsw-alias-*tokens with official fallbacks. - Takeover handshake. While this rail is up, the official navigator stands down; below two turns (the official minimum) this one stands down and the official returns. Never two rails.
- A living mark language. Idle ticks rest aligned; the current turn is color-highlighted only; hover/focus sweeps a neighbor wave (1 / .7 / .4 / .2 → 20 / 14 / 8 px). One language, two densities:
compact— 14px pitch, official proportional compression, cappedmin(natural, band − 64px, 420px).loose— one real 30px row per turn (a 44×30px target), cappedmin(natural, band − 64px, 70vh, 640px), internal scroll with edge fade.
Input you don't have to aim
- 44px hit strip: any click snaps to the nearest visible turn — the 2px line is never the target.
- Drag anywhere in the strip to scrub the conversation (5px threshold separates click from scrub; pointer capture keeps it through fast moves; touch drags are owned via
touch-action: none). - Click-arrivals get a quiet landing flash; scrubs stay animation-free.
- Full keyboard path: tab to a mark, Enter to jump, focus drives the same wave.
Preview card, in glass
- Hover/focus/scrub shows that turn's prompt + response (two short lines each), centered on the mark, clamped inside the rail.
- Three materials —
none(official opaque tokens),frost(default: 45% token tint +blur(6px)),liquid(42% tint +blur(5px)+ a soft light from the conversation-facing corner; pure CSS, no SVG filters, never overflows). - G2 corners where supported:
corner-shape: squircleat 18.4px, measured diagonal-equivalent to the official 10px G1 arc; uniform 1px ring (a stroked border rasterizes unevenly on superellipse diagonals).
First-class settings
- New settings card under Settings → Plugins → Plugin configuration: Side (right/left, mirrored automatically), Preview material (none/frost/liquid), Mark layout (compact/loose). Bilingual zh/en, applies live.
- Preferences persist in the host's settings document (
outlinenamespace) — they follow you across browsers and machines. Requires dsh ≥0.1.0-rc.7. Not localStorage. - The plugin's
cordis.ymlrow now carries aconfig:block, registered as the namespace's composition (base) layer — profile owners can pin fleet-wide defaults that personal settings always override (the layered shape the settings cookbook prescribes).
Performance (measured, not promised)
- Scroll tracking: one rect read + binary search per frame; offsets refill only on conversation DOM change.
- Every animation is compositor-only (
transform/opacity) — including the preview card's glide. - Pointer moves coalesce to one read-then-write job per animation frame: scrubbing costs O(1) layouts at any pointer frequency.
- Streaming: unchanged rows reuse objects; per-turn snippets read
textContent(neverinnerText), newest step only. - The rail is
position: fixedin the click-through overlay — cannot stretch the page or add a scrollbar.
Fixed since 0.0.1
- Loose-mode marks rendering invisible (missing
background-color: currentColor). - Liquid material dropping a leaked 300×150 default box into the host — the SVG machinery is gone; liquid is pure CSS now.
- Minimum-turns parity between layouts; preview re-placement on layout/geometry changes; response text legibility (secondary token, separate font declarations).
Docs
- Theme-adaptive SVG illustrations (light/dark via
prefers-color-schemeinside the SVG), English-primary README with a Chinese mirror (README.zh-CN.md).
中文
0.0.2 围绕官方 TurnNavigator 设计语言全面重写:
- 官方几何与 token:贴会话列边缘、居中阅读带、<900px 隐藏;颜色/圆角/阴影/动效实时读取
--dsw-alias-*,官方兜底。 - 接管握手:本轨道启用时官方退位;少于 2 轮本轨道退位。绝不双轨。
- 会呼吸的刻度:静息齐平、当前轮纯颜色高亮、悬停邻近波浪;紧凑 14px / 宽松 30px 两种密度。
- 宽容输入:44px 点击条吸附最近轮次;拖拽擦洗整个会话;点击落点轻闪、擦洗无残留;完整键盘路径。
- 玻璃预览卡:无/毛玻璃/液态三材质,光从朝向会话的角落射入;G2 squircle 圆角(18.4px 与官方 10px 对角线等效)+ 均匀 1px 外环;纯 CSS 不溢出。
- 一等公民设置:设置 → 插件 → 插件配置,位置/材质/刻度分布三项,实时生效、持久化到宿主设置文档(跟随跨机器),需 dsh ≥ rc.7。
- 性能:滚动每帧 1 次矩形 + 二分;全动画仅合成器;指针合帧(擦洗 O(1) 布局);流式零泛涟漪;
position: fixed不可能撑出页面。 - 修复:宽松刻度不可见、液态 SVG 宿主泄漏、双布局最小轮次不一致、预览布局变化不重排、回答小字可读性。
- 文档:明暗自适应 SVG 插图;英文主 README + 中文镜像。