06609f3696a8
refactor: Remove unreachable popup states and styles (v4.10.36)
- time
- 2026-08-29 12:44 UTC · 1 month ago
- machine
- koh2
- parent
- f284ee4f084d
↓ peach-browser-06609f36.tar.gzatlas at this save
files changed8 files
manifest.firefox.json+1 −1manifest.json+1 −1package.json+1 −1src/content/inject.ts+1 −4src/popup/App.tsx+3 −12src/popup/components/NoteRow.tsx+0 −10src/popup/styles/popup.css+14 −59src/popup/styles/vars.css+0 −2manifest.firefox.json+1 −1
@@ -1,7 +1,7 @@11 {22 "manifest_version": 3,33 "name": "Peach Password Manager",4- "version": "4.10.35",4+ "version": "4.10.36",55 "description": "Zero-knowledge password manager",66 "browser_specific_settings": {77 "gecko": {manifest.json+1 −1
@@ -2,7 +2,7 @@22 "manifest_version": 3,33 "minimum_chrome_version": "116",44 "name": "Peach Password Manager",5- "version": "4.10.35",5+ "version": "4.10.36",66 "description": "Zero-knowledge password manager",77 "action": {88 "default_popup": "src/popup/index.html",package.json+1 −1
@@ -1,6 +1,6 @@11 {22 "name": "peach",3- "version": "4.10.35",3+ "version": "4.10.36",44 "description": "Zero-knowledge password manager",55 "license": "GPL-3.0-only",66 "type": "module",src/content/inject.ts+1 −4
@@ -604,7 +604,7 @@604604 605605 // All theme-dependent values resolve through tokens scoped to606606 // .peach-inline-popup[data-theme="dark|light"]. Accent variables607-// (--peach-accent, --peach-accent-dim, --peach-glow, --peach-border-accent)607+// (--peach-accent, --peach-glow, --peach-border-accent)608608 // are identical in both themes — only surface tokens differ. See609609 // Projects.md §4.14: hardcoded hex inside this stylesheet breaks the610610 // theme switch — only literal brand-peach in peachIconSvg may stay raw.@@ -1473,7 +1473,6 @@14731473 );14741474 host.style.cssText = `position: fixed; z-index: 2147483647;`;14751475 host.style.setProperty("--peach-accent", accentHex);1476- host.style.setProperty("--peach-accent-dim", withAlpha(accentHex, "28"));14771476 host.style.setProperty("--peach-glow", withAlpha(accentHex, "18"));14781477 host.style.setProperty("--peach-border-accent", withAlpha(accentHex, "30"));14791478 // Hint the compositor that top/left animate during scroll repositioning so the@@ -3473,7 +3472,6 @@34733472 const host = document.createElement("div");34743473 host.style.cssText = "position: absolute; z-index: 2147483647;";34753474 host.style.setProperty("--peach-accent", accentHex);3476- host.style.setProperty("--peach-accent-dim", withAlpha(accentHex, "28"));34773475 host.style.setProperty("--peach-glow", withAlpha(accentHex, "18"));34783476 host.style.setProperty("--peach-border-accent", withAlpha(accentHex, "30"));34793477 const shadow = host.attachShadow({ mode: "closed" });@@ -4246,7 +4244,6 @@42464244 const host = document.createElement("div");42474245 host.style.cssText = "position: absolute; z-index: 2147483647;";42484246 host.style.setProperty("--peach-accent", accentHex);4249- host.style.setProperty("--peach-accent-dim", withAlpha(accentHex, "28"));42504247 host.style.setProperty("--peach-glow", withAlpha(accentHex, "18"));42514248 host.style.setProperty("--peach-border-accent", withAlpha(accentHex, "30"));42524249 const shadow = host.attachShadow({ mode: "closed" });src/popup/App.tsx+3 −12
@@ -126,12 +126,7 @@126126 export default function App() {127127 const [bootState, setBootState] = createSignal<BootState>("loading");128128 const [view, setView] = createSignal<View>("lock");129- // Mobile bottom-sheet live drag offset in px (null = not actively dragging,130- // CSS transition takes over for snap animation).131- const [contentPhase, setContentPhase] = createSignal<"enter" | "exit" | "idle">(132- "enter"133- );134- const [contentTransitioning, setContentTransitioning] = createSignal(false);129+ const [contentPhase, setContentPhase] = createSignal<"enter" | "idle">("enter");135130 const [hasVault, setHasVault] = createSignal(false);136131 const [onboarded, setOnboarded] = createSignal(true);137132 const [startOnboardingRestore, setStartOnboardingRestore] = createSignal(false);@@ -390,10 +385,8 @@390385 const color = ACCENT_COLORS.find(c => c.name === name) ?? ACCENT_COLORS[0]!;391386 const hex = color.hex;392387 document.documentElement.style.setProperty("--peach-accent", hex);393- // Ambient surface variables — derived from the accent so surfaces shift394- // subtly toward the accent hue rather than staying fixed warm-brown.388+ // Ambient variables derived from the selected accent.395389 document.documentElement.style.setProperty("--peach-glow", hex + "2A");396- document.documentElement.style.setProperty("--peach-surface-tint", hex + "09");397390 document.documentElement.style.setProperty("--peach-border-accent", hex + "24");398391 }399392 @@ -1023,7 +1016,6 @@10231016 10241017 setSelectedEntry(nextSelectedEntry);10251018 setEditEntry(undefined);1026- setContentTransitioning(false);10271019 setContentPhase("enter");10281020 queueContentIdle();10291021 if (!skipViewSet) setView("entry");@@ -1077,7 +1069,6 @@10771069 return;10781070 }10791071 setSelectedEntry(entry);1080- setContentTransitioning(false);10811072 setContentPhase("enter");10821073 queueContentIdle();10831074 setView("entry");@@ -1502,7 +1493,7 @@15021493 15031494 <div class="peach-shell-body">15041495 <div class="peach-shell-veil"></div>1505- <div class="peach-content-frame" data-content-phase={contentPhase()} classList={{ navigating: contentTransitioning() }}>1496+ <div class="peach-content-frame" data-content-phase={contentPhase()}>15061497 <EntryView15071498 entry={selectedEntry()}15081499 currentTabUrl={currentTabUrl()}src/popup/components/NoteRow.tsx+0 −10
@@ -49,7 +49,6 @@4949 let touchStartX = 0;5050 let touchStartY = 0;5151 let captured = false;52- let longPressTimer: number | undefined;5352 5453 function handleTouchStart(e: TouchEvent) {5554 const t = e.touches[0];@@ -57,11 +56,6 @@5756 touchStartX = t.clientX;5857 touchStartY = t.clientY;5958 captured = false;60-61- longPressTimer = window.setTimeout(() => {62- vibrate(60);63- // Long press: context menu (future)64- }, 500);6559 }6660 6761 function handleTouchMove(e: TouchEvent) {@@ -73,12 +67,10 @@7367 if (!captured) {7468 if (dy > 8 && dy > Math.abs(dx)) {7569 // vertical scroll — abort76- clearTimeout(longPressTimer);7770 return;7871 }7972 if (Math.abs(dx) > 8) {8073 captured = true;81- clearTimeout(longPressTimer);8274 setSwping(true);8375 }8476 return;@@ -88,7 +80,6 @@8880 }8981 9082 function handleTouchEnd(_e: TouchEvent) {91- clearTimeout(longPressTimer);9283 if (!captured) {9384 // Tap9485 props.onTap(props.note, rowEl);@@ -119,7 +110,6 @@119110 }120111 121112 function handleTouchCancel() {122- clearTimeout(longPressTimer);123113 setSwipeX(0);124114 setSwping(false);125115 captured = false;src/popup/styles/popup.css+14 −59
@@ -236,16 +236,9 @@236236 overflow: hidden;237237 transition: opacity 80ms ease, transform 80ms ease;238238 }239-.peach-content-frame.navigating {240- opacity: 0.93;241- transform: translateX(2px);242-}243239 .peach-content-frame[data-content-phase="enter"] {244240 animation: peach-content-enter 135ms ease-out both;245241 }246-.peach-content-frame[data-content-phase="exit"] {247- animation: peach-content-exit 95ms ease-in forwards;248-}249242 .peach-content-frame[data-content-phase="idle"] { opacity: 1; transform: none; }250243 251244 /* Stage */@@ -977,10 +970,6 @@977970 /* Beat .peach-btn--ghost.peach-icon-btn (rest) and .peach-icon-btn:hover978971 (hover) so the lock reads accent in both states. */979972 .peach-btn--ghost.peach-icon-btn.peach-lock-btn { color: var(--peach-accent); }980-.peach-lock-btn.is-locking .peach-lock-icon {981- animation: peach-lock-settle var(--peach-dur-600) var(--peach-curve-arrival);982-}983-984973 /* Copy button */985974 .peach-copy-btn {986975 position: relative; overflow: hidden;@@ -1528,8 +1517,7 @@15281517 }15291518 }15301519 1531-.light .peach-settings-group,1532-[data-theme="light"] .peach-settings-group {1520+.light .peach-settings-group {15331521 background: rgba(245, 237, 226, 0.70);15341522 border-color: rgba(26, 18, 8, 0.08);15351523 backdrop-filter: blur(10px) saturate(1.2);@@ -1537,8 +1525,7 @@15371525 }15381526 15391527 @supports not (backdrop-filter: blur(1px)) {1540- .light .peach-settings-group,1541- [data-theme="light"] .peach-settings-group {1528+ .light .peach-settings-group {15421529 background: rgba(245, 237, 226, 0.97);15431530 border-color: rgba(26, 18, 8, 0.10);15441531 }@@ -2540,18 +2527,6 @@25402527 margin: 10px 0;25412528 }25422529 2543-/* font size elements from execCommand */2544-.peach-note-editor-body font[size="1"],2545-.peach-note-content font[size="1"] { font-size: 0.6875rem; line-height: 1.6; }2546-.peach-note-editor-body font[size="2"],2547-.peach-note-content font[size="2"] { font-size: 0.8125rem; }2548-.peach-note-editor-body font[size="3"],2549-.peach-note-content font[size="3"] { font-size: 1rem; }2550-.peach-note-editor-body font[size="4"],2551-.peach-note-content font[size="4"] { font-size: 20px; }2552-.peach-note-editor-body font[size="5"],2553-.peach-note-content font[size="5"] { font-size: 26px; line-height: 1.4; }2554-25552530 /* bold / italic inside the editor and note display */25562531 .peach-note-editor-body b, .peach-note-editor-body strong,25572532 .peach-note-content b, .peach-note-content strong { font-weight: 700; }@@ -2636,10 +2611,6 @@26362611 from { opacity: 0.96; transform: translateY(4px); }26372612 to { opacity: 1; transform: translateY(0); }26382613 }2639-@keyframes peach-content-exit {2640- from { opacity: 1; transform: translateY(0); }2641- to { opacity: 0.92; transform: translateY(-3px); }2642-}26432614 @keyframes peach-screen-enter {26442615 from { opacity: 0; transform: translateY(14px); }26452616 to { opacity: 1; transform: translateY(0); }@@ -2648,11 +2619,6 @@26482619 from { opacity: 0; }26492620 to { opacity: 1; }26502621 }2651-@keyframes peach-lock-settle {2652- 0% { transform: scale(0.9); }2653- 65% { transform: scale(1.08); }2654- 100% { transform: scale(1); }2655-}26562622 @keyframes peach-copy-confirm {26572623 from { color: var(--peach-t2); border-color: var(--peach-t3); background-color: transparent; box-shadow: none; }26582624 to { color: var(--peach-accent); border-color: color-mix(in srgb, var(--peach-accent) 42%, transparent); background-color: color-mix(in srgb, var(--peach-accent) 9%, transparent); box-shadow: 0 0 18px color-mix(in srgb, var(--peach-accent) 22%, transparent), inset 0 0 18px color-mix(in srgb, var(--peach-accent) 12%, transparent); }@@ -2983,8 +2949,7 @@29832949 }29842950 }29852951 2986-.light .peach-glass,2987-[data-theme="light"] .peach-glass {2952+.light .peach-glass {29882953 background: rgba(240, 233, 223, 0.72);29892954 border: 1px solid rgba(26, 18, 8, 0.08);29902955 backdrop-filter: blur(12px) saturate(1.2);@@ -2992,8 +2957,7 @@29922957 }29932958 29942959 @supports not (backdrop-filter: blur(1px)) {2995- .light .peach-glass,2996- [data-theme="light"] .peach-glass {2960+ .light .peach-glass {29972961 background: rgba(240, 233, 223, 0.97);29982962 border: 1px solid rgba(26, 18, 8, 0.10);29992963 }@@ -3009,8 +2973,7 @@30092973 0 12px 28px rgba(0, 0, 0, 0.3);30102974 }30112975 3012-.light .peach-lock-panel.peach-glass,3013-[data-theme="light"] .peach-lock-panel.peach-glass {2976+.light .peach-lock-panel.peach-glass {30142977 background: rgba(240, 233, 223, 0.82);30152978 border: 1px solid rgba(26, 18, 8, 0.08);30162979 box-shadow:@@ -3025,8 +2988,7 @@30252988 inset 0 1px 0 rgba(255, 255, 255, 0.05),30262989 0 12px 28px rgba(0, 0, 0, 0.4);30272990 }3028- .light .peach-lock-panel.peach-glass,3029- [data-theme="light"] .peach-lock-panel.peach-glass {2991+ .light .peach-lock-panel.peach-glass {30302992 background: rgba(240, 233, 223, 0.98);30312993 }30322994 }@@ -7568,7 +7530,7 @@75687530 75697531 /* Desktop: larger headline in TOC */75707532 @media (min-width: 400px) {7571- .peach-notes-header-title:not(.is-breadcrumb) {7533+ .peach-notes-header-title {75727534 font-size: 32px;75737535 }75747536 @@ -7587,41 +7549,34 @@75877549 /* Settings section headers: use text-label (#79766F) per restoration brief —75887550 muted gray-warm gives ENTRIES / MAINTENANCE / DATA / VAULT HISTORY75897551 presence without fighting the light parchment background. */7590-.light .peach-settings-sub-label,7591-[data-theme="light"] .peach-settings-sub-label {7552+.light .peach-settings-sub-label {75927553 color: #79766F;75937554 }75947555 75957556 /* Secondary action buttons (ghost / subtle): filled with input-well surface75967557 so they read as recessed against the parchment card background. */7597-.light .peach-btn--ghost:not(.peach-icon-btn),7598-[data-theme="light"] .peach-btn--ghost:not(.peach-icon-btn) {7558+.light .peach-btn--ghost:not(.peach-icon-btn) {75997559 background: #EEE7DD;76007560 border-color: #DDD5CB;76017561 color: #1A1208;76027562 }7603-.light .peach-icon-btn,7604-[data-theme="light"] .peach-icon-btn {7563+.light .peach-icon-btn {76057564 background: transparent;76067565 border-color: transparent;76077566 }7608-.light .peach-btn--subtle,7609-[data-theme="light"] .peach-btn--subtle {7567+.light .peach-btn--subtle {76107568 background: #EEE7DD;76117569 border-color: #DDD5CB;76127570 }76137571 76147572 /* Entry row hover: bg-row lifts the row above the card surface. */7615-.light .peach-entry-row:hover,7616-[data-theme="light"] .peach-entry-row:hover {7573+.light .peach-entry-row:hover {76177574 background: #F2EBE1;76187575 }7619-.light .peach-entry-row.is-active,7620-[data-theme="light"] .peach-entry-row.is-active {7576+.light .peach-entry-row.is-active {76217577 background: #F2EBE1;76227578 }7623-.light .peach-entry-row.is-selected,7624-[data-theme="light"] .peach-entry-row.is-selected {7579+.light .peach-entry-row.is-selected {76257580 background: #F5EDE2;76267581 }76277582 src/popup/styles/vars.css+0 −2
@@ -117,9 +117,7 @@117117 --peach-border: var(--peach-t3);118118 --peach-mono: var(--font-mono);119119 --peach-accent: var(--ac);120- --peach-accent-dim: color-mix(in srgb, var(--peach-accent) 25%, transparent);121120 --peach-glow: #F49C702A; /* accent bloom behind buttons/illustrations — set by applyAccent() */122- --peach-surface-tint: #F49C7009; /* accent tint on card surfaces — set by applyAccent() */123121 --peach-border-accent: #F49C7024; /* accent-tinted border for active states — set by applyAccent() */124122 --peach-breach: var(--breach);125123 --peach-health-ok: var(--health);