c8f933fd178b

before settings version-label relocation to bottom corner

time
2026-05-19 23:49 UTC · 5 months ago
machine
koh2
parent
7b2b774fc03c
7 files manifest.firefox.json+1 −1manifest.json+1 −1package-lock.json+2 −2package.json+1 −1src/popup/components/settings/StackDeck.tsx+2 −9src/popup/styles/settings-stack.css+2 −2src/popup/styles/vars.css+4 −31
manifest.firefox.json+1 −1
@@ -2,7 +2,7 @@22   "_comment_audio_capture": "Firefox does not honor the Chrome 'audioCapture' optional_permission — getUserMedia in WebExtensions is gated solely by the runtime permission prompt. Microphone access for chirp pairing works from the popup under the existing '<all_urls>' host permission; no manifest entry is required or accepted here.",33   "manifest_version": 3,44   "name": "Peach",5-  "version": "3.6.48",5+  "version": "3.6.49",66   "description": "Zero-knowledge password manager",77   "browser_specific_settings": {88     "gecko": {

view file

manifest.json+1 −1
@@ -1,7 +1,7 @@11 {22   "manifest_version": 3,33   "name": "Peach",4-  "version": "3.6.48",4+  "version": "3.6.49",55   "description": "Zero-knowledge password manager",66   "action": {77     "default_popup": "src/popup/index.html",

view file

package-lock.json+2 −2
@@ -1,12 +1,12 @@11 {22   "name": "peach",3-  "version": "3.6.48",3+  "version": "3.6.49",44   "lockfileVersion": 3,55   "requires": true,66   "packages": {77     "": {88       "name": "peach",9-      "version": "3.6.48",9+      "version": "3.6.49",1010       "dependencies": {1111         "@bokuweb/zstd-wasm": "^0.0.27",1212         "@stablelib/blake2s": "^2.0.1",

view file

package.json+1 −1
@@ -1,6 +1,6 @@11 {22   "name": "peach",3-  "version": "3.6.48",3+  "version": "3.6.49",44   "description": "Zero-knowledge password manager",55   "type": "module",66   "scripts": {

view file

src/popup/components/settings/StackDeck.tsx+2 −9
@@ -20,7 +20,6 @@2020 export function StackDeck(props: StackDeckProps) {2121   const [deckOpen, setDeckOpen] = createSignal(true);2222   const [focusHeight, setFocusHeight] = createSignal(DEFAULT_FOCUS_H);23-  const [textScale, setTextScale] = createSignal(1);2423   let focusedAt = 0;2524   let deckEl: HTMLDivElement | undefined;2625 @@ -38,10 +37,6 @@3837 3938     const updateFocusHeight = () => {4039       if (!deckEl) return;41-      const scale = Number.parseFloat(42-        getComputedStyle(document.documentElement).getPropertyValue("--peach-text-scale")43-      );44-      setTextScale(Number.isFinite(scale) && scale > 0 ? scale : 1);4540       setFocusHeight(deckEl.clientHeight || DEFAULT_FOCUS_H);4641     };4742     updateFocusHeight();@@ -63,8 +58,6 @@6358     const idx = props.cards.findIndex((card) => card.id === props.active);6459     return idx >= 0 ? idx : 0;6560   });66-  const scaled = (px: number) => px / textScale();67-6861   return (6962     <section class="stk-shell" aria-label="Settings">7063       <div class="stk-mast">@@ -117,7 +110,7 @@117110             const top = () => {118111               if (active()) return 0;119112               if (!deckOpen()) return focusHeight() + 44 + distance() * 8;120-              return scaled(EXPANDED_H - TAB_OVERLAP) + distance() * scaled(TAB_H - TAB_OVERLAP);113+              return EXPANDED_H - TAB_OVERLAP + distance() * (TAB_H - TAB_OVERLAP);121114             };122115             const zIndex = () => (active() ? 99 : 50 - distance());123116 @@ -134,7 +127,7 @@134127                   props.onActiveChange(card.id);135128                   setDeckOpen(false);136129                 }}137-                height={active() ? (deckOpen() ? scaled(EXPANDED_H) : focusHeight()) : scaled(TAB_H + 4)}130+                height={active() ? (deckOpen() ? EXPANDED_H : focusHeight()) : TAB_H + 4}138131               >139132                 {props.bodies[card.id]}140133               </StackCard>

view file

src/popup/styles/settings-stack.css+2 −2
@@ -65,8 +65,8 @@6565 6666 .stk-deck {6767   position: relative;68-  height: min(calc(462px / var(--peach-text-scale)), calc(100% - 36px));69-  min-height: calc(462px / var(--peach-text-scale));68+  height: min(462px, calc(100% - 36px));69+  min-height: 462px;7070   margin-top: 0;7171 }7272 

view file

src/popup/styles/vars.css+4 −31
@@ -233,39 +233,12 @@233233 [data-text-size="medium"] { --peach-text-scale: 1; }234234 [data-text-size="large"]  { --peach-text-scale: 1.08; }235235 /* Zoom on html (not body) for both sizes so Chrome auto-resizes the popup236-   window in both directions. Zooming body for small left a visible gap at237-   the bottom because the window stayed at full height. Small text needs the238-   fixed popup surfaces widened before zoom; otherwise the 320px shell paints239-   as 294px and leaves unowned backdrop on the right edge. */236+   window in both directions. Keep the fixed 320×520 surfaces at their237+   natural dimensions; pre-expanding them defeats the visible small setting238+   and prevents large from using the enlarged popup surface. */240239 html { background: var(--bg); }241240 html[data-text-size="large"] { zoom: 1.08; }242-html[data-text-size="small"] {243-  --peach-popup-scaled-width: 347.826087px;  /* 320 / 0.92 */244-  --peach-popup-scaled-height: 565.217391px; /* 520 / 0.92 */245-  zoom: 0.92;246-  width: var(--peach-popup-scaled-width);247-  min-width: var(--peach-popup-scaled-width);248-  height: var(--peach-popup-scaled-height);249-  min-height: var(--peach-popup-scaled-height);250-  overflow: hidden;251-}252-253-html[data-text-size="small"] body,254-html[data-text-size="small"] #app,255-html[data-text-size="small"] #pre-lock,256-html[data-text-size="small"] .popup-root,257-html[data-text-size="small"] .peach-shell[data-surface="extension"],258-html[data-text-size="small"] .peach-screen,259-html[data-text-size="small"] .peach-pro-celebration {260-  width: var(--peach-popup-scaled-width);261-  min-width: var(--peach-popup-scaled-width);262-  height: var(--peach-popup-scaled-height);263-  min-height: var(--peach-popup-scaled-height);264-}265-266-html[data-text-size="small"] .peach-shell[data-surface="extension"] {267-  max-height: var(--peach-popup-scaled-height);268-}241+html[data-text-size="small"] { zoom: 0.92; }269242 270243 /* ─── Reduced motion ───────────────────────────────────────────────────271244    User-explicit setting OR OS-level prefers-reduced-motion both collapse

view file