데스크톱 T3 잔여 완성 + 스타일 폴리시: 도메인 라우팅(WorkspaceRoutingRules 자동 워크스페이스 전환), 탭 아카이브(TabArchive 영속·팔레트 복구), 페이지 액션(흑백/세피아 필터), 노트 패널(NotesStore+플라이아웃), 컴팩트 모드(크롬 숨김+엣지 호버). 스타일: 한국어 폰트 폴백, 암시 폰트 통일, 다크 툴팁, 텍스트 대비 상향. UpdateNavState dispose 가드. 164/164 GREEN + 실창 스크린샷 검증
This commit is contained in:
parent
04ff0ff93d
commit
f380518919
12 changed files with 594 additions and 24 deletions
|
|
@ -48,8 +48,11 @@ public sealed class CommandPalette
|
|||
public void Execute(PaletteCommand command) => command.Execute();
|
||||
}
|
||||
|
||||
/// <summary>사이트별 부스트 설정(T2-7, Zen/Arc Boosts 패턴).</summary>
|
||||
public sealed record BoostSettings(bool ForceDark, string CustomCss);
|
||||
/// <summary>페이지 액션 필터(T3-6, Vivaldi Page Actions — Boost 통합).</summary>
|
||||
public enum PageFilter { None, Grayscale, Sepia }
|
||||
|
||||
/// <summary>사이트별 부스트 설정(T2-7, Zen/Arc Boosts 패턴) + 페이지 액션 필터(T3-6).</summary>
|
||||
public sealed record BoostSettings(bool ForceDark, string CustomCss, PageFilter Filter = PageFilter.None);
|
||||
|
||||
/// <summary>도메인별 부스트 영속 저장.</summary>
|
||||
public sealed class BoostStore
|
||||
|
|
@ -77,11 +80,11 @@ public sealed class BoostStore
|
|||
return host != null && _map.TryGetValue(host, out var v) ? v : new BoostSettings(false, "");
|
||||
}
|
||||
|
||||
public void Set(string? url, bool forceDark, string css)
|
||||
public void Set(string? url, bool forceDark, string css, PageFilter filter = PageFilter.None)
|
||||
{
|
||||
var host = Normalize(url);
|
||||
if (host == null) return;
|
||||
_map[host] = new BoostSettings(forceDark, css);
|
||||
_map[host] = new BoostSettings(forceDark, css, filter);
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(_path)!);
|
||||
|
|
@ -110,7 +113,7 @@ public static class BoostCssBuilder
|
|||
{
|
||||
public static string BuildScript(string? url, BoostSettings settings)
|
||||
{
|
||||
if (!settings.ForceDark && string.IsNullOrWhiteSpace(settings.CustomCss)) return "";
|
||||
if (!settings.ForceDark && settings.Filter == PageFilter.None && string.IsNullOrWhiteSpace(settings.CustomCss)) return "";
|
||||
var css = "";
|
||||
if (settings.ForceDark)
|
||||
{
|
||||
|
|
@ -119,6 +122,14 @@ html { filter: invert(1) hue-rotate(180deg); background: #fff; }
|
|||
img, video, picture, canvas, svg, iframe, embed, object { filter: invert(1) hue-rotate(180deg); }
|
||||
""";
|
||||
}
|
||||
else if (settings.Filter == PageFilter.Grayscale) // T3-6 페이지 액션
|
||||
{
|
||||
css += "html { filter: grayscale(1); }";
|
||||
}
|
||||
else if (settings.Filter == PageFilter.Sepia)
|
||||
{
|
||||
css += "html { filter: sepia(0.7); }";
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(settings.CustomCss)) css += settings.CustomCss + "\n";
|
||||
var js = $$"""
|
||||
(function(){ try { var s = document.createElement('style'); s.id = 'vd-boost'; s.textContent = {{JsonSerializer.Serialize(css)}}; (document.head || document.documentElement).appendChild(s); } catch(e){} })();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue