User Preferences¶
Cesivi persists per-user UI preferences server-side, so your choices survive
page reloads, browser restarts, and switching devices. This matches SharePoint
Classic's per-user persistence model and is part of Cesivi's v1.0 functional
parity with SP-Classic. This guide is for end-users and administrators. For
developers integrating with the user-prefs layer, see
_docs_dev/USER-PREFERENCES-DEV.md.
What is persisted¶
The following preferences are stored per authenticated user, globally (not per-site-collection):
| Preference | Default | Where to change |
|---|---|---|
| Density | comfortable |
Sidebar density toggle or My Settings → Display Preferences |
| Language | Derived from Accept-Language on first use |
Topbar → Translate icon (🌐) |
| Date Format | Derived from Language | My Settings → Display Preferences |
| Time Format | Derived from Language | My Settings → Display Preferences |
| Default List View | (empty — no per-list override) | Auto-recorded when you switch views in any list or library |
Anonymous users always get defaults; nothing is stored for them.
Default-derivation rules¶
When Language is set, the Date and Time formats default as follows (unless you have explicitly overridden them):
| Language | Date Format default | Time Format default |
|---|---|---|
en-US |
US short (12/31/2025) | 12-hour (2:30 PM) |
de-DE |
European (31.12.2025) | 24-hour (14:30) |
| Any other | ISO (2025-12-31) | 24-hour (14:30) |
How to change each preference¶
Density¶
Via the sidebar toggle (fastest):
- Open any modern page.
- Find the density button group at the bottom of the left sidebar (three horizontal-bar icons in increasing size).
- Click Compact, Comfortable, or Spacious.
The change persists immediately — a reload or new tab shows the same density.
Via My Settings:
- Click your avatar/name in the top-right corner.
- Click My settings (URL:
/_layouts/15/mysetng.aspx). - Scroll to Display Preferences.
- Change the Density drop-down. The change saves immediately via the client-side API — there is no Save button for this section.
Language¶
- Click the translate icon (🌐) in the top bar. It appears for signed-in users only.
- A popover shows the available languages: English (en-US) and German (de-DE) for v1.0.
- Click a language. The page reloads immediately with the selected language applied to all server-rendered chrome.
The selected language is now persisted. Every subsequent page load uses it without prompting.
Date Format¶
- Open My Settings (
/_layouts/15/mysetng.aspx). - Scroll to Display Preferences.
- Change the Date Format drop-down:
- ISO (2025-12-31) — year-month-day, unambiguous across locales
- US (12/31/2025) — month/day/year
- European (31.12.2025) — day.month.year
- Long (December 31, 2025) — fully spelled-out localized form
- The selection saves immediately. List views re-render date columns on the
next page load (or immediately if the
cesivi:userprefs:dateformat-changedevent fires in the current page).
Time Format¶
- Open My Settings (
/_layouts/15/mysetng.aspx). - Scroll to Display Preferences.
- Change the Time Format drop-down:
- 12-hour (2:30 PM) — AM/PM style
- 24-hour (14:30) — military / continental style
- The selection saves immediately.
Default List View¶
This preference is automatic. When you switch to a named view in any list or library (using the view-switcher drop-down in the modern list grid), that view name is silently recorded for that list. The next time you navigate to the same list, Cesivi automatically opens the persisted view instead of the system default.
To revert a list to its system default: switch back to the default view (usually called All Items or All Documents), which clears the persisted choice for that list.
How to reset all preferences to defaults¶
There is no reset button in the UI for v1.0. To reset all preferences at once, call the REST endpoint directly:
# Reset to defaults (requires an authenticated session cookie or Bearer token)
curl -X DELETE https://<your-cesivi-host>/api/modernprefs \
-H "X-XSRF-TOKEN: <antiforgery-token>"
After the DELETE, the next page load re-derives defaults from your browser's
Accept-Language header. All stored preferences are erased.
From browser JavaScript (e.g. in browser DevTools):
import('/js/modern/userprefs.mjs').then(m => m.reset());
// Triggers DELETE /api/modernprefs, then reloads the page.
What happens for anonymous users¶
Anonymous users receive default preferences on every page load. The data island
(window.__cesiviUserPrefs) is still emitted with server defaults, so
client-side code behaves consistently, but nothing is persisted. Reloading
the page re-derives defaults from the Accept-Language header each time.
Out of scope (v1.0)¶
The following are intentionally deferred to a future version:
- Theme toggle (light / dark / high-contrast) — deferred to v2.0. Light mode is the v1.0 default. See BACKLOG #20.
- Timezone preference — deferred to v2.0. Dates are stored in UTC and converted using browser locale on the client side.
- Date/time format in Calendar, Gantt, and info-panels — only the modern
list-view grid (
ml-renderer.js) respectsDateFormat/TimeFormatin v1.0. Other views use browser locale as a fallback.
For developers integrating with the user-prefs surface, see
_docs_dev/USER-PREFERENCES-DEV.md.