Trim comments across Rust and webapp source to direct one-liners (ticket 030)
Pass over src/*.rs, webapp/src/**, and the in-app "?" docs prose: condensed multi-paragraph doc comments to single lines that state the non-obvious why, deleted comments that only restated adjacent code, and tightened the Docs.tsx help-panel wording. No logic, structure, or code formatting changed — verified via cargo test (143 passed) and tsc -b && vite build. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XFUNZwCvz3kcod3352ZR2o
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
3cef6dc8ae
commit
00c21c8032
@@ -17,29 +17,16 @@ import {
|
||||
type Settings,
|
||||
} from './api'
|
||||
|
||||
/** `data-*` marker used to find/remove previously-injected CSS tags on re-apply. */
|
||||
// `data-*` marker used to find/remove previously-injected CSS tags on re-apply.
|
||||
const INJECTED_CSS_ATTR = 'data-ottyl-css-id'
|
||||
|
||||
/** `data-*` marker for the single injected `<link>` for the active custom theme, if any (ticket 033). */
|
||||
// `data-*` marker for the single injected `<link>` for the active custom theme, if any.
|
||||
const INJECTED_THEME_ATTR = 'data-ottyl-theme-css-id'
|
||||
|
||||
/** Themes selectable independently of `system`, each backed by a `html.<name>` block in `index.css`. */
|
||||
// Themes selectable independently of `system`, each backed by a `html.<name>` block in `index.css`.
|
||||
const THEME_CLASSES = ['light', 'dark', 'grey', 'red', 'green', 'blue', 'yellow', 'pink', 'orange'] as const
|
||||
|
||||
/**
|
||||
* Resolves `colorScheme` to an effective theme (following the OS preference
|
||||
* for `system`, which only ever resolves to `light`/`dark`) and reflects it
|
||||
* onto `<html>` as both a class (see `THEME_CLASSES`) and a
|
||||
* `data-color-scheme` attribute. Every visual role the app uses is a CSS
|
||||
* custom property keyed off that class (see `index.css`), so switching it
|
||||
* re-skins the whole app, not just the base page background.
|
||||
*
|
||||
* `customThemeActive` (ticket 033): when a custom theme is selected, no
|
||||
* built-in `html.<scheme>` class is added at all — its own injected `:root`
|
||||
* override (see `applyCustomThemeCss`) is the only thing setting the
|
||||
* `--c-*` variables, and adding a built-in class alongside it would win the
|
||||
* cascade (a class selector is more specific than `:root`) and mask it.
|
||||
*/
|
||||
// Reflects `colorScheme` onto `<html>` as a class + `data-color-scheme`; when a custom theme is active, no built-in class is added at all, since a class selector would out-specificity its injected `:root` override (see `applyCustomThemeCss`) and mask it.
|
||||
function applyColorScheme(colorScheme: ColorScheme, customThemeActive: boolean) {
|
||||
const root = document.documentElement
|
||||
root.classList.remove(...THEME_CLASSES)
|
||||
@@ -53,17 +40,7 @@ function applyColorScheme(colorScheme: ColorScheme, customThemeActive: boolean)
|
||||
root.dataset.colorScheme = colorScheme
|
||||
}
|
||||
|
||||
/**
|
||||
* Injects a `<link>` tag per CSS entry into `<head>` (imported entries point
|
||||
* at `GET /api/settings/css/:id/content`, linked entries point straight at
|
||||
* their `path_or_url`), after removing any tags this hook previously
|
||||
* injected — so the rendered app reflects the current entry list immediately
|
||||
* on every change, without a page reload.
|
||||
*
|
||||
* Only arbitrary (non-theme) entries are applied unconditionally this way;
|
||||
* theme entries (`is_theme: true`) are applied separately and only while
|
||||
* selected, see `applyCustomThemeCss`.
|
||||
*/
|
||||
// Injects a `<link>` per CSS entry, replacing any this hook previously injected. Only non-theme entries are applied unconditionally; theme entries are applied separately, only while selected — see `applyCustomThemeCss`.
|
||||
function applyCssEntries(entries: CssEntry[]) {
|
||||
document.querySelectorAll(`link[${INJECTED_CSS_ATTR}]`).forEach((el) => el.remove())
|
||||
for (const entry of entries) {
|
||||
@@ -77,13 +54,7 @@ function applyCssEntries(entries: CssEntry[]) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Injects the single active custom theme's CSS (ticket 033) as a
|
||||
* `<link>` — same mechanism as `applyCssEntries`, kept separate since this
|
||||
* one is conditional on `settings.custom_theme_id`, not always-on. `entry`
|
||||
* is `null` when no custom theme is selected, which just removes any
|
||||
* previously-injected tag.
|
||||
*/
|
||||
// Same injection mechanism as `applyCssEntries`, kept separate since this one is conditional on `settings.custom_theme_id`; `entry` null just removes any previously-injected tag.
|
||||
function applyCustomThemeCss(entry: CssEntry | null) {
|
||||
document.querySelectorAll(`link[${INJECTED_THEME_ATTR}]`).forEach((el) => el.remove())
|
||||
if (!entry) return
|
||||
@@ -96,12 +67,7 @@ function applyCustomThemeCss(entry: CssEntry | null) {
|
||||
document.head.appendChild(link)
|
||||
}
|
||||
|
||||
/**
|
||||
* Owns fetching + mutating settings/CSS/profile state for the NavMenu panels
|
||||
* (ticket 011), and applies the colour scheme / imported CSS to the document
|
||||
* as a side effect whenever that state changes — so toggling either is
|
||||
* visible in the running app immediately, with no reload.
|
||||
*/
|
||||
// Owns fetching + mutating settings/CSS/profile state for the NavMenu panels, and applies colour scheme / imported CSS to the document as a side effect so changes are visible immediately, with no reload.
|
||||
export function useSettingsPanel() {
|
||||
const [settings, setSettings] = useState<Settings | null>(null)
|
||||
const [cssEntries, setCssEntries] = useState<CssEntry[]>([])
|
||||
@@ -162,8 +128,7 @@ export function useSettingsPanel() {
|
||||
const setColorScheme = useCallback(
|
||||
(colorScheme: ColorScheme) =>
|
||||
guarded(async () => {
|
||||
// Selecting a built-in scheme always deselects any custom theme —
|
||||
// the two are mutually exclusive (see `applyColorScheme`).
|
||||
// Selecting a built-in scheme always deselects any custom theme — the two are mutually exclusive (see `applyColorScheme`).
|
||||
const next = await updateSettings({ colorScheme, customThemeId: null })
|
||||
setSettings(next)
|
||||
})(),
|
||||
@@ -220,8 +185,7 @@ export function useSettingsPanel() {
|
||||
guarded(async () => {
|
||||
await deleteCssEntry(id)
|
||||
await refreshCss()
|
||||
// The removed entry may have been the active custom theme — fall
|
||||
// back to `color_scheme` rather than leaving a dangling selection.
|
||||
// The removed entry may have been the active custom theme — fall back to `color_scheme` rather than leaving a dangling selection.
|
||||
if (settings?.custom_theme_id === id) {
|
||||
const next = await updateSettings({ customThemeId: null })
|
||||
setSettings(next)
|
||||
|
||||
Reference in New Issue
Block a user