Implements Phases 1-8 of the TFTSR implementation plan. Rust backend (Tauri 2.x, src-tauri/): - Multi-provider AI: OpenAI-compatible, Anthropic, Gemini, Mistral, Ollama - PII detection engine: 11 regex patterns with overlap resolution - SQLCipher AES-256 encrypted database with 10 versioned migrations - 28 Tauri IPC commands for triage, analysis, document, and system ops - Ollama: hardware probe, model recommendations, pull/delete with events - RCA and blameless post-mortem Markdown document generators - PDF export via printpdf - Audit log: SHA-256 hash of every external data send - Integration stubs for Confluence, ServiceNow, Azure DevOps (v0.2) Frontend (React 18 + TypeScript + Vite, src/): - 9 pages: full triage workflow NewIssue→LogUpload→Triage→Resolution→RCA→Postmortem→History+Settings - 7 components: ChatWindow, TriageProgress, PiiDiffViewer, DocEditor, HardwareReport, ModelSelector, UI primitives - 3 Zustand stores: session, settings (persisted), history - Type-safe tauriCommands.ts matching Rust backend types exactly - 8 IT domain system prompts (Linux, Windows, Network, K8s, DB, Virt, HW, Obs) DevOps: - .woodpecker/test.yml: rustfmt, clippy, cargo test, tsc, vitest on every push - .woodpecker/release.yml: linux/amd64 + linux/arm64 builds, Gogs release upload Verified: - cargo check: zero errors - tsc --noEmit: zero errors - vitest run: 13/13 unit tests passing Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| index.d.ts | ||
| index.js | ||
| license | ||
| package.json | ||
| readme.md | ||
figures
Unicode symbols with fallbacks for older terminals
Terminals such as Windows Console Host (and CMD) only support a limited character set.
Install
npm install figures
Usage
import figures, {mainSymbols, fallbackSymbols, replaceSymbols} from 'figures';
console.log(figures.tick);
// On terminals with Unicode symbols: ✔
// On other terminals: √
console.log(mainSymbols.tick);
// On all terminals: ✔
console.log(fallbackSymbols.tick);
// On all terminals: √
console.log(replaceSymbols('✔ check'));
// On terminals with Unicode symbols: ✔ check
// On other terminals: √ check
API
figures (default export)
Type: object
Symbols to use on any terminal.
mainSymbols
Symbols to use when the terminal supports Unicode symbols.
fallbackSymbols
Symbols to use when the terminal does not support Unicode symbols.
replaceSymbols(string, options?)
Returns the input with replaced fallback symbols if the terminal has poor Unicode support.
All the below figures are attached to the default export as shown in the example above.
string
Type: string
String where the Unicode symbols will be replaced with fallback symbols depending on the terminal.
options
Type: object
useFallback
Type: boolean
Default: true if the terminal has poor Unicode support
Whether to replace symbols with fallbacks.
This can be set to true to always use fallback symbols, whether the terminal has poor Unicode support or not.
import {replaceSymbols} from 'figures';
console.log(replaceSymbols('✔ check', {useFallback: true}));
// On terminals with Unicode symbols: √ check
// On other terminals: √ check
Figures
Fallback characters are only shown when they differ from the Main ones.
| Name | Main | Fallback |
|---|---|---|
| tick | ✔ |
√ |
| info | ℹ |
i |
| warning | ⚠ |
‼ |
| cross | ✘ |
× |
| square | █ |
|
| squareSmall | ◻ |
□ |
| squareSmallFilled | ◼ |
■ |
| squareDarkShade | ▓ |
|
| squareMediumShade | ▒ |
|
| squareLightShade | ░ |
|
| squareTop | ▀ |
|
| squareBottom | ▄ |
|
| squareLeft | ▌ |
|
| squareRight | ▐ |
|
| squareCenter | ■ |
|
| circle | ◯ |
( ) |
| circleFilled | ◉ |
(*) |
| circleDotted | ◌ |
( ) |
| circleDouble | ◎ |
( ) |
| circleCircle | ⓞ |
(○) |
| circleCross | ⓧ |
(×) |
| circlePipe | Ⓘ |
(│) |
| circleQuestionMark | ?⃝ |
(?) |
| radioOn | ◉ |
(*) |
| radioOff | ◯ |
( ) |
| checkboxOn | ☒ |
[×] |
| checkboxOff | ☐ |
[ ] |
| checkboxCircleOn | ⓧ |
(×) |
| checkboxCircleOff | Ⓘ |
( ) |
| questionMarkPrefix | ?⃝ |
? |
| bullet | ● |
|
| dot | ․ |
|
| ellipsis | … |
|
| pointer | ❯ |
> |
| pointerSmall | › |
› |
| triangleUp | ▲ |
|
| triangleUpSmall | ▴ |
|
| triangleUpOutline | △ |
∆ |
| triangleDown | ▼ |
|
| triangleDownSmall | ▾ |
|
| triangleLeft | ◀ |
◄ |
| triangleLeftSmall | ◂ |
|
| triangleRight | ▶ |
► |
| triangleRightSmall | ▸ |
|
| lozenge | ◆ |
♦ |
| lozengeOutline | ◇ |
◊ |
| home | ⌂ |
|
| hamburger | ☰ |
≡ |
| smiley | ㋡ |
☺ |
| mustache | ෴ |
┌─┐ |
| heart | ♥ |
|
| star | ★ |
✶ |
| play | ▶ |
► |
| musicNote | ♪ |
|
| musicNoteBeamed | ♫ |
|
| nodejs | ⬢ |
♦ |
| arrowUp | ↑ |
|
| arrowDown | ↓ |
|
| arrowLeft | ← |
|
| arrowRight | → |
|
| arrowLeftRight | ↔ |
|
| arrowUpDown | ↕ |
|
| almostEqual | ≈ |
|
| notEqual | ≠ |
|
| lessOrEqual | ≤ |
|
| greaterOrEqual | ≥ |
|
| identical | ≡ |
|
| infinity | ∞ |
|
| subscriptZero | ₀ |
|
| subscriptOne | ₁ |
|
| subscriptTwo | ₂ |
|
| subscriptThree | ₃ |
|
| subscriptFour | ₄ |
|
| subscriptFive | ₅ |
|
| subscriptSix | ₆ |
|
| subscriptSeven | ₇ |
|
| subscriptEight | ₈ |
|
| subscriptNine | ₉ |
|
| oneHalf | ½ |
|
| oneThird | ⅓ |
|
| oneQuarter | ¼ |
|
| oneFifth | ⅕ |
|
| oneSixth | ⅙ |
|
| oneSeventh | ⅐ |
1/7 |
| oneEighth | ⅛ |
|
| oneNinth | ⅑ |
1/9 |
| oneTenth | ⅒ |
1/10 |
| twoThirds | ⅔ |
|
| twoFifths | ⅖ |
|
| threeQuarters | ¾ |
|
| threeFifths | ⅗ |
|
| threeEighths | ⅜ |
|
| fourFifths | ⅘ |
|
| fiveSixths | ⅚ |
|
| fiveEighths | ⅝ |
|
| sevenEighths | ⅞ |
|
| line | ─ |
|
| lineBold | ━ |
|
| lineDouble | ═ |
|
| lineDashed0 | ┄ |
|
| lineDashed1 | ┅ |
|
| lineDashed2 | ┈ |
|
| lineDashed3 | ┉ |
|
| lineDashed4 | ╌ |
|
| lineDashed5 | ╍ |
|
| lineDashed6 | ╴ |
|
| lineDashed7 | ╶ |
|
| lineDashed8 | ╸ |
|
| lineDashed9 | ╺ |
|
| lineDashed10 | ╼ |
|
| lineDashed11 | ╾ |
|
| lineDashed12 | − |
|
| lineDashed13 | – |
|
| lineDashed14 | ‐ |
|
| lineDashed15 | ⁃ |
|
| lineVertical | │ |
|
| lineVerticalBold | ┃ |
|
| lineVerticalDouble | ║ |
|
| lineVerticalDashed0 | ┆ |
|
| lineVerticalDashed1 | ┇ |
|
| lineVerticalDashed2 | ┊ |
|
| lineVerticalDashed3 | ┋ |
|
| lineVerticalDashed4 | ╎ |
|
| lineVerticalDashed5 | ╏ |
|
| lineVerticalDashed6 | ╵ |
|
| lineVerticalDashed7 | ╷ |
|
| lineVerticalDashed8 | ╹ |
|
| lineVerticalDashed9 | ╻ |
|
| lineVerticalDashed10 | ╽ |
|
| lineVerticalDashed11 | ╿ |
|
| lineDownLeft | ┐ |
|
| lineDownLeftArc | ╮ |
|
| lineDownBoldLeftBold | ┓ |
|
| lineDownBoldLeft | ┒ |
|
| lineDownLeftBold | ┑ |
|
| lineDownDoubleLeftDouble | ╗ |
|
| lineDownDoubleLeft | ╖ |
|
| lineDownLeftDouble | ╕ |
|
| lineDownRight | ┌ |
|
| lineDownRightArc | ╭ |
|
| lineDownBoldRightBold | ┏ |
|
| lineDownBoldRight | ┎ |
|
| lineDownRightBold | ┍ |
|
| lineDownDoubleRightDouble | ╔ |
|
| lineDownDoubleRight | ╓ |
|
| lineDownRightDouble | ╒ |
|
| lineUpLeft | ┘ |
|
| lineUpLeftArc | ╯ |
|
| lineUpBoldLeftBold | ┛ |
|
| lineUpBoldLeft | ┚ |
|
| lineUpLeftBold | ┙ |
|
| lineUpDoubleLeftDouble | ╝ |
|
| lineUpDoubleLeft | ╜ |
|
| lineUpLeftDouble | ╛ |
|
| lineUpRight | └ |
|
| lineUpRightArc | ╰ |
|
| lineUpBoldRightBold | ┗ |
|
| lineUpBoldRight | ┖ |
|
| lineUpRightBold | ┕ |
|
| lineUpDoubleRightDouble | ╚ |
|
| lineUpDoubleRight | ╙ |
|
| lineUpRightDouble | ╘ |
|
| lineUpDownLeft | ┤ |
|
| lineUpBoldDownBoldLeftBold | ┫ |
|
| lineUpBoldDownBoldLeft | ┨ |
|
| lineUpDownLeftBold | ┥ |
|
| lineUpBoldDownLeftBold | ┩ |
|
| lineUpDownBoldLeftBold | ┪ |
|
| lineUpDownBoldLeft | ┧ |
|
| lineUpBoldDownLeft | ┦ |
|
| lineUpDoubleDownDoubleLeftDouble | ╣ |
|
| lineUpDoubleDownDoubleLeft | ╢ |
|
| lineUpDownLeftDouble | ╡ |
|
| lineUpDownRight | ├ |
|
| lineUpBoldDownBoldRightBold | ┣ |
|
| lineUpBoldDownBoldRight | ┠ |
|
| lineUpDownRightBold | ┝ |
|
| lineUpBoldDownRightBold | ┡ |
|
| lineUpDownBoldRightBold | ┢ |
|
| lineUpDownBoldRight | ┟ |
|
| lineUpBoldDownRight | ┞ |
|
| lineUpDoubleDownDoubleRightDouble | ╠ |
|
| lineUpDoubleDownDoubleRight | ╟ |
|
| lineUpDownRightDouble | ╞ |
|
| lineDownLeftRight | ┬ |
|
| lineDownBoldLeftBoldRightBold | ┳ |
|
| lineDownLeftBoldRightBold | ┯ |
|
| lineDownBoldLeftRight | ┰ |
|
| lineDownBoldLeftBoldRight | ┱ |
|
| lineDownBoldLeftRightBold | ┲ |
|
| lineDownLeftRightBold | ┮ |
|
| lineDownLeftBoldRight | ┭ |
|
| lineDownDoubleLeftDoubleRightDouble | ╦ |
|
| lineDownDoubleLeftRight | ╥ |
|
| lineDownLeftDoubleRightDouble | ╤ |
|
| lineUpLeftRight | ┴ |
|
| lineUpBoldLeftBoldRightBold | ┻ |
|
| lineUpLeftBoldRightBold | ┷ |
|
| lineUpBoldLeftRight | ┸ |
|
| lineUpBoldLeftBoldRight | ┹ |
|
| lineUpBoldLeftRightBold | ┺ |
|
| lineUpLeftRightBold | ┶ |
|
| lineUpLeftBoldRight | ┵ |
|
| lineUpDoubleLeftDoubleRightDouble | ╩ |
|
| lineUpDoubleLeftRight | ╨ |
|
| lineUpLeftDoubleRightDouble | ╧ |
|
| lineUpDownLeftRight | ┼ |
|
| lineUpBoldDownBoldLeftBoldRightBold | ╋ |
|
| lineUpDownBoldLeftBoldRightBold | ╈ |
|
| lineUpBoldDownLeftBoldRightBold | ╇ |
|
| lineUpBoldDownBoldLeftRightBold | ╊ |
|
| lineUpBoldDownBoldLeftBoldRight | ╉ |
|
| lineUpBoldDownLeftRight | ╀ |
|
| lineUpDownBoldLeftRight | ╁ |
|
| lineUpDownLeftBoldRight | ┽ |
|
| lineUpDownLeftRightBold | ┾ |
|
| lineUpBoldDownBoldLeftRight | ╂ |
|
| lineUpDownLeftBoldRightBold | ┿ |
|
| lineUpBoldDownLeftBoldRight | ╃ |
|
| lineUpBoldDownLeftRightBold | ╄ |
|
| lineUpDownBoldLeftBoldRight | ╅ |
|
| lineUpDownBoldLeftRightBold | ╆ |
|
| lineUpDoubleDownDoubleLeftDoubleRightDouble | ╬ |
|
| lineUpDoubleDownDoubleLeftRight | ╫ |
|
| lineUpDownLeftDoubleRightDouble | ╪ |
|
| lineCross | ╳ |
|
| lineBackslash | ╲ |
|
| lineSlash | ╱ |
Other characters
If you cannot find the character you're looking for in the table above, please look at this full list of cross-platform terminal characters.
Unsupported terminals
The following terminals are not officially supported:
- xterm
- Linux Terminal (kernel)
- cmder
They can display most but not all of the symbols listed above.
Related
- log-symbols - Colored symbols for various log levels
