Use Hopya
Appearance and resource icons
Customize resource icons and colors, and manage instance-wide sidebar attribution.
v0.3.0 referenceReviewed
On this page
Administration
Open Administration → Site settings → By WNZN attribution to control the sidebar watermark across the entire instance.
| Setting | Contract |
|---|---|
| Default | Shown, including installations without a stored value |
| Access | Current site administrator; no workspace role can change it |
| Refresh | Current sidebar after save; other pages on load/window focus |
| Public config | Safe showSidebarAttribution boolean in GET /api/v1/config |
| Storage | Missing/null means visible; string 0 means hidden |
Site admins read GET /api/v1/site/settings and PATCH the same path:
{ "showSidebarAttribution": false }
Only booleans are accepted. Ordinary same-origin checks apply; setting and site.settings.update audit commit together.
Heading Icons
- Click a Project, Folder, List, Document/page, or Table heading icon.
- Search the shared Runeicons catalog and choose an icon; it saves immediately.
- Choose Default to restore the resource glyph. Click the title separately to rename.
| Interaction | Behavior |
|---|---|
| Shared appearance | Heading/hierarchy use the same metadata; Details/management use the same icon/color controls |
| Keyboard | Named button, search autofocus, native selected-state buttons, arrows/Home/End, Escape/close, focus return |
| Containment | Viewport-bounded panel, independently scrolling grid, 44px compact mobile triggers |
| Failure | Error in picker; stale Document/Table revision requires reload, not overwrite |
| Drafts | Document title/icon save merges metadata without reloading body; trigger stays mounted; reselecting active workspace does not discard editors |
| Resource | Update permission |
|---|---|
| Project / Folder / List | structure:write |
| Existing Document | documents:read + documents:write |
| Existing Table | tables:read + tables:write |
| Create | Dedicated write permission |
Every mutation validates workspace/resource on the server and commits with audit.
Persistence And API
| Field / operation | Contract |
|---|---|
icon | Catalog ID, never SVG/HTML; null clears |
color | Lowercase six-digit hex; existing named aliases accepted; null clears |
| Document/Table create + PATCH | Accept appearance; PATCH needs exact expectedUpdatedAt |
| Reads / summaries | Include appearance |
| Document edit | Advances metadata/version, preserves body, bodyRevision, quote anchors |
| Workspace export v8 | Includes appearance |
| Per-Table CSV/typed JSON | Columns/records only; does not round-trip appearance |
Additive migration and shared implementation
0009_resource_appearanceadds nullable icon/color to Documents/Tables; defaults null. SQLite/PostgreSQL additive changes preserve referenced pages, discussions, columns, and records.app/appearance.tsshares allowlist/normalization across resources;NodeIconPicker.tsxandstyles/appearance.cssshare heading/management controls.- Branding uses
Effect.tryPromiseandrunPromiseThrow, preserving originalHttpErrorand missing-logo 404.
Implementation And Verification
| Upstream evidence | Scope / limit |
|---|---|
| HTTP, Document, Table, migration, navigation tests | Defaults/config, permissions/Origin, audit rollback, appearance validation/revisions, body preservation, exports, additive upgrades |
| SQLite / disposable PostgreSQL 17 | Focused checks pass under Node 24.20.0 |
| Earlier live inspection | Picker containment/search/dismissal and attribution switch observed |
| Unverified | Saving appearance, keyboard-only focus, physical touch; no automated browser suite |
These records describe upstream work, not browser verification of this documentation site.