From 1003a3c79da0a0639edc617ccec67d8e86d6eb6c Mon Sep 17 00:00:00 2001 From: Sameh Khamis Date: Sat, 14 Nov 2026 15:00:38 -0800 Subject: [PATCH] Describe the Visual panel, scope opacity and the reset CURRENT-STATE covers the panel's groups, the opacity slider and what the reset restores; the share link format lists field 30. Co-authored-by: Manjunath Paparaju --- docs/CURRENT-STATE.md | 39 +++++++++++++++++++++++++++++++++++++++ docs/SHARE-LINK-FORMAT.md | 5 +++++ 2 files changed, 44 insertions(+) diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 9d1b5abda..9ce4f4f74 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -646,6 +646,43 @@ panel that holds its row, and `set_panel_open` reaches it as `utilities-panel` or by "utilities", "draw", "drawing" or "import". On a phone it sits collapsed in the Layers sheet under Data Layers. +## The Visual panel — November 14, 2026 + +Visual (`#pp-toggles`, `src/ui/views/panels/DisplayPanel.vue`) is headed +VISUAL, has the edge switch in its header like the other side panels, and is +grouped from the top: Look, the six style presets with their 1–6 keys, and +Map source, the map source chips (`VisualPresets.vue`); Overlay, the HUD, +detection, style parameters, 3D aircraft, Scope and Clean UI; Effects, +Celestial, Bloom and Sharpen; and Reset to default at the foot. Each control +is a card (`src/ui/styles/visual-panel.css`) whose header row ends in an +on/off pill worded in the current language. The presets and chips call the +same Display store actions as the dock's Visual Presets tray, which stays on +desktop and phone as before, along with Location; voice `Visual Presets` +still opens that tray. In Cockpit the groups Cockpit's Display popover takes +leave the panel as before and keep their own styling there. + +Scope has an Opacity slider (`#scope-opacity-slider`, 0–100%, default 100%) +that fades the whole mask (`setScopeMaskOpacity` in `src/scopeMask.js`, the +canvas's CSS opacity) without repainting it or changing the altitude +terminus; it is disabled while Scope is off and keeps its value. Share links +carry it as `sco` in the long form and field 30 in the compact form, written +only below 100%, so links made before it keep their codes and open at full +opacity, and a link without it sets the opacity back to 100%. Scenes do not +save it: a scene shot leaves the opacity as it is. + +Reset to default (`resetVisual` in `src/ui/displayBindings.js`) brings back +the out-of-the-box look: the Normal style, the first-run post defaults +(bloom off, sharpen on at 49%, the Tactical HUD shown, Dense detection at 75% +with its fade and outside opacity, the celestial ring off), Elastic +allocation, Scope on at 100% feather and 100% opacity, and 3D aircraft on in +Proximity. It leaves the map source, the pinned scope terminus, Sonar's +settings, other styles' parameters, the layers and the panels alone. + +With Scope off the side rails, open panels and the dock's trays carry a soft +drop shadow and the rails' labels and icons a text shadow +(`src/ui/styles/scope-off-shadows.css`), so their edges hold against bright +imagery. + ## Side rails and the screen edge — November 14, 2026 Visual (`#pp-toggles`, the display settings, rail item `palette`) is the last @@ -768,6 +805,8 @@ Display's native Scope checkbox defaults ON with feather at 100%, adjustable from 0–200%. OFF disables the slider while retaining its value. HUD layout changes preserve both settings; share links and scenes restore them. The historical missing-`scf` fallback remains 35%; explicit 0% keeps the hard edge. +Its Opacity slider (0–100%, default 100%) fades the mask; share links +restore it (`sco`), scenes do not (see The Visual panel). With Scope OFF, Tactical and Minimal add text-sized black backplates at 70% opacity behind telemetry, vertical metadata and scene chrome. Original diff --git a/docs/SHARE-LINK-FORMAT.md b/docs/SHARE-LINK-FORMAT.md index 4c3254a99..3b76eb04e 100644 --- a/docs/SHARE-LINK-FORMAT.md +++ b/docs/SHARE-LINK-FORMAT.md @@ -148,6 +148,7 @@ probability of about 255 in 256 (many of them already fail as base64url). | 27 | `styleParams` | LEN | style | packed `(token, value × 100)` pairs | | 28 | `worldTime` | epoch | none (live) | zigzag seconds since 2026-01-01T00:00:00Z | | 29 | `library` | LEN | none | Data Library ledger tokens, two base-36 characters each, concatenated | +| 30 | `scopeOpacityPct` | uint | 100 | 0–100, how strongly the scope mask shows | Field 1 absent means `thing` when field 13 is present and `place` otherwise, so v1 never writes it; a later view kind writes its code. @@ -170,6 +171,10 @@ tokens in `src/library/ledger.json` (the long form's `lib=ab.cd`). A share without it switches no library entry on; the recipient's added entries stay in their panel, off. Tokens this build does not know are skipped. +Field 30 is how strongly the scope mask shows, from the Visual panel's +Opacity slider (the long form's `sco`). It is written only below 100, so a +link made before it, which opens at full opacity, keeps its code. + Flag bits (field 9): 0 `bloom`, 1 `sharpen`, 2 `hudVisible`, 3 `celestialRing` (each defaulting by style), 4 `scopeEnabled` (default on).