LocalStorage Schema - msupino/NavigationApp GitHub Wiki
๐ฎ๐ฑ ืขืืจืืช
All application-owned browser keys use the navaid.* prefix. This page is a
human-readable map; the complete enforceable registry is
GDRIVE_SETTINGS_KEYS plus NOT_A_SYNCED_SETTING in
tests/settings-sync-allowlist.spec.js, which scans current app source.
-
navaid.route,navaid.routes,navaid.view,navaid.layerโ working route/library and map state. Not the language: nothing stores one any more, and anavaid.langleft by an older version is ignored โ see Bilingual UI. -
navaid.show*, opacity/size/color keys,navaid.navDataPrefix,navaid.imsPwx,navaid.sigwxOv,navaid.wxTime, and wind-field keys โ active layer/display choices. -
navaid.etdโ the planned departure{date, time}, local, shared by the flight plan and the filing dialog. Device-local: a fact about one flight, not a setting.navaid.etaZuluโ show times in UTC (synced). -
navaid.fpl.<field>,navaid.aircraft,navaid.profileVSโ flight-plan and aircraft profile values.aisEmailis device-local because it controls the filing destination; the user'sreplyTomay sync. The checkbox says so in place: ticking Sync settings too names the pilot details (name, licence, phone) and aircraft profile it uploads, since "settings" otherwise reads as layers and opacities. -
navaid.ai.*โ provider/model/key/base URL. Provider and model choices may sync when Sync settings too is enabled. API keys and the base URL stay device-local. A successful settings sync removes any API-key copy left in Drive by an older version โ see AI Assistant. -
navaid.*Pos,navaid.sec.*, collapse/hint/search state โ device-local UI geometry and one-time presentation state. Language-specific widgets use families such asnavaid.clockPos.<lang>. -
navaid.settingsSyncedAt,navaid.settingsSnapshot,navaid.settingsSnapKeys,navaid.syncSettingsโ settings-sync bookkeeping. -
navaid.gistCacheโ the last remote config seen on this device, applied at boot so the first frame is already configured (see Tuning Panel). Device-local: it is a copy of a remote file, refetched on every load. -
navaid.magVarAuto,navaid.magVarManualโ magnetic variation: automatic (World Magnetic Model) or the manual value, signed as the app uses it (magnetic = true + value, so-5is 5ยฐE). They outrank the gist, likenavaid.defaultSpeed, and sync with Sync settings too. -
navaid.pressureUnitโ inHg or hPa. Synced with the other pilot settings. -
navaid.altSource,navaid.brightnessโ altitude from GPS or barometer, and screen brightness. Device-local: whether a phone has a usable barometer, and how bright its screen should be in this cockpit, are facts about that phone. -
navaid.offlinePacksโ which charts and OpenFlightMaps areas this device keeps offline. Device-local: it describes storage on this device. -
navaid.commFailโ a comm failure in progress, with the route from before it, so it survives a reload or language switch. Device-local, cleared when it ends. -
navaid.headingUp,navaid.gpsFollowโ the in-flight map controls (heading-up orientation, follow lock). Per device, like the rest of the map state. -
navaid.followMeSession,navaid.followMeCodeโ the live-share session (topic, key, aircraft code) and the code last typed. Never synced: the session is a capability to watch this aircraft right now, not a preference, and syncing it would put two devices on one topic and hand the key to every device on the account. See Follow me. -
navaid.navlogโ the flight planning form's own inputs: the met table, the compass card, and ONLY those settings the pilot typed over. Everything else is re-derived each time, which is what lets an untouched field elevation follow the route. Device-local and never synced: a met table from another day is worse than none.navaid.navlogPosis the window's position, like every other*Pos. See Flight planning form. -
navaid.followVerifiedโ the signing key this device has seen for each aircraft it has followed (up to 32), so a link with the verify key stripped out cannot downgrade a viewer that was already checking signatures. Never synced, for the same reason as the session below. -
navaid.tourSeenโ the map tour has played on this device. Device-local: a new phone gets the tour too. -
navaid.notamModalSizeโ the size the NOTAM sheet was dragged to. Device-local geometry. -
navaid.notamListPos,navaid.sigmetListPos,navaid.airmetListPos(each.en/.he) โ where the NOTAM, SIGMET and AIRMET lists were dragged to. Device-local, like every*Pos. -
navaid.inspSizeโ the inspector's size per kind of panel (waypoint, leg, airfield, bubbleโฆ). Device-local. -
navaid.showSigmet,navaid.showAdcโ the SIGMET map layer and the aerodrome-chart plate type. Synced with the othernavaid.show*keys. -
navaid.notamSeenโ NOTAM ids this device has already been shown, with the time each was first seen, so the list can badge what is new. Marked on closing the sheet; entries older thannotamSeenDays(90) are dropped. Device-local: it records what this pilot has read. -
navaid.routeLibraryFilterโ which half of the saved-route library is on screen (all/route/gps). A view choice made on this device while looking for something, not a setting worth carrying to another. -
navaid.selected,navaid.fpOpen,navaid.openChartModalโ session-only restoration keys. So arenavaid.buildNoticeFor(which build this tab has already been told about) andnavaid.apkReloadedForBuild(the once-per-build guard that stops an APK reload loop): both are per tab on purpose, so a page that cannot pick a new build up asks once rather than on every check. -
navaid.otaInstallingโ the bundle id the embedded iOS build is currently trying to install, so a bundle that does not come up is attempted once and then left alone. Device-local, and cleared as soon as the install succeeds. See Offline and PWA.
Drive settings use a separate app-data document from saved routes. null is a
deletion tombstone; an absent key means no information. Timestamps are
monotonic, snapshots use canonical allowlist order, first sync unions
non-conflicting values, conflicts require a user decision, and applying a
remote snapshot is all-or-nothing. API keys, destination endpoints, working
route, route library, caches, and device geometry are excluded.
When adding a key, update code, the allowlist or device-local reason, and this page in the same PR.