Configuration overview
There are two kinds of configuration:
- Vault config:
KizunaShelf/config.yamldefines entity folders, fields, and roles. It is shared with the vault. For the concept, see Types, fields & your schema. - App settings: vault selection, write permissions, and credentials belong to the runtime. Desktop and iOS expose native controls; self-hosted web uses environment variables.
The reference at a glance
| Page | Covers |
|---|---|
| Types & fields | The config.yaml document: top-level keys, entity types, filename config, field definitions, and design guidelines. |
| Titles, dates & status | Title resolution, the language preference, date roles, seasons, and the canonical status model. |
| External metadata & import | Provider wiring (externalRef, externalFields, bodySections), episode tracking and sync, Quick Capture, and library import. |
| Home, tags & daily notes | Home smart-list metadata, the built-in tags field, daily notes and logging. |
| Field types & roles | Every fieldType and role enum (generated from the app). |
| External providers | Every provider, its credentials, types, and mappable fields (generated from the app). |
| Web server | Environment variables, authentication, logs, and caches. |
| Type presets | Every built-in type preset (generated from the app). |
First Run
Follow the Quickstart to create a vault from presets. The preset catalog lists the fields and provider mappings each preset supplies.
Where the Vault Config Lives
The schema is always <vaultRoot>/KizunaShelf/config.yaml. Lists are stored alongside it in KizunaShelf/Lists/. See Syncing your vault for what to include when sharing a vault between devices.
Settings Editor
Use the schema editor for the editing workflow. Structured saves serialize the typed schema; raw YAML saves validate strictly and preserve the accepted text, including comments. App settings such as the selected vault and credentials are separate from this file.
Complete Example
This schema accompanies Inside an entity file. It uses English filenames, an original title, and an optional Chinese title. It is a small example, not the complete Anime preset.
taxonomyRoot: Taxonomy
assetRoot: Assets
dailyNotes:
paths:
- Daily Notes
dateFormat: YYYY-MM-DD
types:
- id: anime
label: Anime
path: Anime
filename:
titleLanguage: en
log:
lineFormat: "- {title} {note} #Anime"
bodySections:
- heading: Episodes
kind: episodes
tracking: checklist
fields:
- field: title_original
fieldType: title
titleRole: original
- field: title_zh
fieldType: title
titleLanguage: zh
- field: cover_url
fieldType: image
- field: status
fieldType: enum
enumRole: status
enumOptions: [Backlog, Watching, Completed]
statusValues:
planning: [Backlog]
ongoing: [Watching]
completed: [Completed]
- field: season
fieldType: season
dateRole: planning
seasonLanguage: en
- field: complete_date
fieldType: date
dateRole: completed
- field: franchise
fieldType: relation
relationType: franchise
- id: franchise
label: Franchise
path: Franchise
filename:
titleLanguage: en
fields: []