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.

Administration: reference table
SettingContract
DefaultShown, including installations without a stored value
AccessCurrent site administrator; no workspace role can change it
RefreshCurrent sidebar after save; other pages on load/window focus
Public configSafe showSidebarAttribution boolean in GET /api/v1/config
StorageMissing/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

  1. Click a Project, Folder, List, Document/page, or Table heading icon.
  2. Search the shared Runeicons catalog and choose an icon; it saves immediately.
  3. Choose Default to restore the resource glyph. Click the title separately to rename.
Heading Icons: reference table
InteractionBehavior
Shared appearanceHeading/hierarchy use the same metadata; Details/management use the same icon/color controls
KeyboardNamed button, search autofocus, native selected-state buttons, arrows/Home/End, Escape/close, focus return
ContainmentViewport-bounded panel, independently scrolling grid, 44px compact mobile triggers
FailureError in picker; stale Document/Table revision requires reload, not overwrite
DraftsDocument title/icon save merges metadata without reloading body; trigger stays mounted; reselecting active workspace does not discard editors
Heading Icons: reference table
ResourceUpdate permission
Project / Folder / Liststructure:write
Existing Documentdocuments:read + documents:write
Existing Tabletables:read + tables:write
CreateDedicated write permission

Every mutation validates workspace/resource on the server and commits with audit.

Persistence And API

Persistence And API: reference table
Field / operationContract
iconCatalog ID, never SVG/HTML; null clears
colorLowercase six-digit hex; existing named aliases accepted; null clears
Document/Table create + PATCHAccept appearance; PATCH needs exact expectedUpdatedAt
Reads / summariesInclude appearance
Document editAdvances metadata/version, preserves body, bodyRevision, quote anchors
Workspace export v8Includes appearance
Per-Table CSV/typed JSONColumns/records only; does not round-trip appearance
Additive migration and shared implementation
  • 0009_resource_appearance adds nullable icon/color to Documents/Tables; defaults null. SQLite/PostgreSQL additive changes preserve referenced pages, discussions, columns, and records.
  • app/appearance.ts shares allowlist/normalization across resources; NodeIconPicker.tsx and styles/appearance.css share heading/management controls.
  • Branding uses Effect.tryPromise and runPromiseThrow, preserving original HttpError and missing-logo 404.

Implementation And Verification

Implementation And Verification: reference table
Upstream evidenceScope / limit
HTTP, Document, Table, migration, navigation testsDefaults/config, permissions/Origin, audit rollback, appearance validation/revisions, body preservation, exports, additive upgrades
SQLite / disposable PostgreSQL 17Focused checks pass under Node 24.20.0
Earlier live inspectionPicker containment/search/dismissal and attribution switch observed
UnverifiedSaving appearance, keyboard-only focus, physical touch; no automated browser suite

These records describe upstream work, not browser verification of this documentation site.