{# data-osprey-storage-scope is present ONLY on a multi-user mount (/u//), where every user shares one origin and therefore one localStorage. It is THE source of truth for the storage namespace — this page's module closure reaches the PTY-session, dock-layout and rail-position keys, and those readers take the namespace from here rather than parsing the URL. Absent means single-user: keys stay unscoped. Never emit it empty. See resolve_storage_scope() in app.py. -#} {#- data-panel-labels is the registry's roster of built-in panel labels, read at module load by panel-catalog.js. activity-strip.js reaches panel-manager for the labels it words panel actions with, so this page needs the same stamp the index carries. SINGLE-quoted because Jinja's tojson escapes ' (and < > &) but leaves " alone. -#} OSPREY — Activity

Activity