## Summary - Adds `POST /api/admin/prune-geo-filter` endpoint — dry-run by default, `?confirm=true` to permanently delete nodes outside the current geofilter polygon + buffer. Requires `X-API-Key` header. - Adds **Prune nodes** section inside the GeoFilter customizer tab (write-access only, same `writeEnabled` gate as PUT). **Preview** lists affected nodes; **Confirm delete** removes them. - Adds `GetNodesForGeoPrune` and `DeleteNodesByPubkeys` DB helpers. - Updates `docs/user-guide/geofilter.md` — documents the UI button as primary workflow, CLI script as alternative. > **Depends on M3** (`feat/geofilter-m3-customizer`, PR #736). Merge M3 first. ## Test plan - [x] `cd cmd/server && go test ./...` — all pass - [x] Customizer GeoFilter tab without `apiKey` — Prune section not visible - [x] With `apiKey` + polygon active — Prune section visible - [x] **Preview** returns list of nodes outside polygon (no deletions) - [x] **Confirm delete** removes nodes, list clears - [x] `POST /api/admin/prune-geo-filter` without `X-API-Key` → 401 - [x] `POST /api/admin/prune-geo-filter` with no polygon configured → 400 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
3.2 KiB
Customization
CoreScope includes a built-in theme customizer. Access it from Tools → Customization in the navigation menu.
[Screenshot: theme customizer panel with color pickers]
What you can customize
Branding
- Site name — displayed in the nav bar and browser tab
- Tagline — shown on the home page
- Logo URL — replace the default logo
- Favicon URL — custom browser tab icon
Theme colors (Light & Dark)
Every color in the UI is customizable:
- Accent — primary color for links, buttons, highlights
- Navigation — nav bar background, text, and muted text colors
- Background — page background and content area
- Surfaces — cards, panels, input fields, detail panes
- Status — green (healthy), yellow (degraded), red (silent)
- Text — primary text, muted text, borders
- Tables — row stripe, hover, and selected row colors
Both light and dark themes are independently configurable.
Node colors
Set the color for each role: repeater, companion, room, sensor, observer. These colors appear on the map, in node badges, and throughout the UI.
Packet type colors
Customize the color for each packet type: Advert, Channel Msg, Direct Msg, ACK, Request, Response, Trace, Path.
Home page
Customize the onboarding experience:
- Hero title and subtitle
- Getting-started steps (emoji, title, description for each)
- FAQ items
- Footer links
Timestamps
- Display mode — relative ("5 min ago") or absolute
- Timezone — local or UTC
- Format preset — ISO or other presets
Live preview
Changes apply instantly as you edit. You see the result in real time without saving.
Exporting a theme
Click Export JSON to download your customizations as a JSON file. This produces a config-compatible block you can paste into your config.json.
Importing a theme
Click Import JSON and paste a previously exported theme. The customizer loads all values and applies them immediately.
Resetting
Click Reset to Defaults to restore all settings to the built-in defaults.
GeoFilter (admin only)
The 🗺️ GeoFilter tab lets operators configure geographic filtering directly from the customizer. It shows the active polygon on a Leaflet map and — on servers with a write-capable apiKey — allows editing the polygon and saving back to config.json without a restart.
The editing controls are only revealed after the server confirms write access. On public deployments without an apiKey, the tab is read-only.
See Geographic Filtering for the full guide, including the API, the prune script, and the standalone GeoFilter Builder.
How it works
The customizer writes CSS custom properties (variables) to override the defaults. Exported JSON maps directly to the theme, nodeColors, branding, and home sections of config.json.