Viewer importer: import ALL compatible settings and preference files, not a hard-coded whitelist #231
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#231
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The viewer importer (
slfloaterviewerimport.cpp, Settings section) only offers a hard-coded whitelist:GLOBAL_SETTINGS: ~26 debug settings (UI scale, fonts, pie menu, chat bubbles, camera offsets...);ACCOUNT_SETTINGS: 4 per-account settings.Users coming from Firestorm / Alchemy / SL expect all of their compatible preferences to come across.
Goal
Import every compatible setting, not a curated handful:
user_settings/settings.xmland each account'ssettings_per_account.xml. A setting is compatible when:Typematches;colors.xml), toolbars (toolbars.xml);Render*that only makes sense for the source's pipeline;settings.xml/settings_per_account.xmlbefore writing (asbackupOncedoes for key bindings);.pre-importbackup).Related
Implemented on branch
vimport(commits c57b2a76da..3a5343d16d, not built yet: syntax-checked only).What changed
Data map
app_settings/viewer_import_map.xml, generated byscripts/viewer_import/gen_viewer_import_map.py. It holds 67 verified Firestorm / Black Dragon renames, 14 of them with value conversions:/;MouseWarpMode->DisableMouseWarp;AlchemyIgnoreAdHocSessions0 / 1 / 2;DebugLookAt*->AlchemyLookAt*, NaCl preprocessor ->AlchemyPreProc*, FS autoresponse / rejection ->Alchemy*, and others.The map also has a denylist (exact names, regex patterns, and credential substrings: password / token / secret / oauth ...), a renderer allowlist (39
Render*settings that mean something on Vulkan), ranges / enums scraped from our preference XUI, toolbar and key command renames, and notes on what can't be mapped.Settings: every key in their
settings.xml/settings_per_account.xmlis checked. It is offered when:Each setting goes to whichever group holds it here. Against their declared settings that is about 1218 FS and 1140 BD keys by name, plus the renames.
Other stores:
ignorable_dialogs.xml);CameraOffsetRearView/FocusOffsetRearView);Floater:
Safety:
user_settings/import_backups/<date_time>/with copies of the files it changes, reference copies of the settings, and anundo.xmljournal (previous values, restored files, created files, added teleports). Undo replays it;ViewerImporttag.Docs:
doc/viewer_import.md, covering the per-OS profile paths, the category table, the rules, and what is not imported and why (AO, LSL bridge, quick prefs, FS area-search filters, BD poses, favourites order (server-side), logins and grids, blocklists).To test: import from a real FS and a real BD profile, logged in. Run Preview, then Import. Restart and check the settings and toolbars. Import again: nothing should be offered. Then Undo.
Verified done: viewer importer imports every compatible setting/preference file (data map with renames, conversions, deny/allow lists, range checks), with categories, review list, preview and undo. Commits:
bafa583924,edb1c51b50,d4aff26d1c,3a5343d16d. Shipped in v1.0.0-beta.1.