Purpose & Tone of Documentation #
FleshNote documentation is written for developers and technical contributors. The tone is clean, pragmatic, and direct:
- No Product Marketing Pitch: Avoid promotional fluff ("revolutionary", "unrivaled"). State what the code does, where data is stored, and how algorithms work.
- High Information Density: Lead with concrete types, schemas, and file paths rather than abstract summaries.
- Actionable & Reproducible: Code snippets should be copy-paste ready and include exact CLI commands or schema definitions.
Callout & Alert Panels #
To maintain visual hierarchy, use the 4 standardized callout styles consistently:
.docs-alert.note)
Use for general background context, non-critical architectural explanations, or helpful reference details.
.docs-alert.tip)
Use for performance optimizations, developer shortcuts, recommended VSCode workflows, and productivity tips.
.docs-alert.important)
Use for crucial architectural rules, mandatory build requirements (e.g. PyInstaller before Electron), and strict code conventions.
.docs-alert.warning)
Use for breaking changes, database migration risks, potential data loss scenarios, and sync merge conflict cautions.
2. Never nest alert panels inside tables or other alerts.
3. Always start with a concise bold header summarizing the rule.
Typography & Font System #
Typography across the documentation and IDE follows a strict semantic hierarchy:
| Font Family | Design Application | Example Elements |
|---|---|---|
Inter |
Body text, documentation prose, UI labels, button text. | Paragraphs, headings, sidebar navigation items, modal dialogs. |
JetBrains Mono |
Code snippets, SQL schemas, UUIDs, IPC channel names, table headers. | {{char:ID|Name}}, window.api.saveChapterContent(), fleshnote.db. |
Crimson Pro |
Literary quotes, novel manuscript previews, chapter excerpts. | Export preview canvas, Pentimento manuscript text. |
Noto Sans Old Hungarian |
RovΓ‘s glyph badges and branding accents. | π³π³π³π³€π³π³π³¦π³ brand badges. |
Code Snippets & Schema Formatting #
Every multi-line code block in documentation must be wrapped inside a .code-block-wrapper containing a .code-header with a language badge and a copy button (.btn-code-copy):
<div class="code-block-wrapper">
<div class="code-header">
<span class="code-lang-tag">Python / FastAPI</span>
<button class="btn-code-copy">Copy</button>
</div>
<pre><code>@router.post("/chapters")
async def list_chapters(payload: ProjectPayload):
return {"chapters": []}</code></pre>
</div>
UI Consistency Rules in Desktop IDE #
When writing or reviewing code for the React frontend (src/renderer):
- No Browser Native Popups: Never invoke
window.confirm(),window.alert(), orwindow.prompt(). Always render customized dark/amber overlay modals matching the IDE theme. - Logical CSS for RTL Mirroring: All positioning and spacing must use CSS logical properties (
inset-inline-start,padding-inline-start,margin-block) so Arabic and RTL layouts auto-flip seamlessly without media query hacks. - Dynamic Bounding Bounds: All right-click context menus and hover cards must use `useLayoutEffect` against their bounding ref to detect viewport overflow and flip coordinates (`left: auto; right: 100%`) before render.