About FormatYAML
FormatYAML is a source-preserving YAML formatter that runs entirely in your browser. It formats the parsed document model, not a JavaScript object, and proves each result with an independent semantic comparison before you can apply it.
Engine: formatyaml-engine/1.0.0 (yaml 2.9.1). Parser: the ISC-licensed yaml package. Support is defined by the test fixtures shipped with this build, not by a claim to handle “all YAML”. Performance targets from the specification have not been benchmarked.
Feature status
NATIVE: runs locally in this build. APPROX: partial or heuristic. UNSUPPORTED: not built yet. EXCLUDED: will not be built.
| ID | Capability | Status | Label | Notes |
|---|---|---|---|---|
| FY-001 | Open/paste/drop YAML | Done | NATIVE | Paste, file picker, drag & drop. UTF-8 (BOM kept), line endings detected and preserved. Non-UTF-8 files are refused with a message rather than guessed; raw bytes are not kept after decoding. |
| FY-002 | Version/schema selector | Done | NATIVE | YAML 1.2 core / JSON / failsafe, YAML 1.1; merge keys as a named switch; %YAML directives reported. |
| FY-003 | Source and formatted preview, exact diff | Done | NATIVE | Input untouched until Apply; Myers line diff with classification and .patch export. |
| FY-004 | Indentation/style presets | Done | NATIVE | Validated options; affected-construct counts in Checks. |
| FY-005 | Line width / wrapping | Done | NATIVE | Block scalar bodies are kept line-for-line; every value verified. |
| FY-006 | Quote-style choices | Done | NATIVE | Keep / double / single / plain-when-safe, with YAML 1.1 hazard guard; type changes are blocked. |
| FY-007 | Flow/block collection style | Done | NATIVE | Verified; conversions that would lose comments are blocked. |
| FY-008 | Comment preservation | Done | NATIVE | Lexer-based inventory; lost comments block, moved comments are listed. |
| FY-009 | Anchor/alias preservation | Done | NATIVE | Anchors/aliases kept; alias identity checked; never expanded by formatting. |
| FY-010 | Block scalar controls | Partial | NATIVE | Literal/folded/chomping/indicators preserved and verified. Explicit style-changing controls (literal↔folded, chomping) are not offered yet. |
| FY-011 | Multi-document stream | Done | NATIVE | Directives, --- / ... markers, order and empty documents kept. |
| FY-012 | Duplicate-key diagnostics | Done | NATIVE | Both entries kept; equivalence reported as unverified. |
| FY-013 | Scalar type inspector | Done | NATIVE | Lexeme, style, tag and resolution under 1.2 core / 1.1 / JSON side by side. |
| FY-014 | Semantic equivalence check | Done | NATIVE | Graph comparison with exact numbers, tags, alias identity, budget; “unverified” when unprovable. |
| FY-015 | Syntax diagnostics | Done | NATIVE | Exact line/column spans; invalid input is never formatted. |
| FY-016 | Safe tags policy | Done | NATIVE | No constructors; unknown tags kept inert and flagged. |
| FY-017 | Export/copy | Done | NATIVE | Formatted YAML, source, .patch, JSON check report with engine/profile/options. |
| FY-018 | Undo/redo/recovery | Done | NATIVE | One transaction per apply; revision-aware previews; IndexedDB draft recovery; private mode. |
| FY-019 | Whitespace/invisible view | Done | NATIVE | Tabs, NBSP, zero-width, bidi, control, trailing whitespace; display only. |
| FY-020 | Selected-range formatting | Not done | UNSUPPORTED | Roadmap. Whole-document formatting only. |
| FY-021 | Key sorting | Done | NATIVE | Explicit operation; scope, order, natural; merge keys first; duplicate/complex skipped. |
| FY-022 | Rename/move key | Not done | UNSUPPORTED | Roadmap. |
| FY-023 | Compare styles | Done | NATIVE | Presets page: two presets on one source, side by side with diff. |
| FY-024 | Batch formatting | Done | NATIVE | Files or ZIP; per-file status; explicit partial archive with manifest. |
| FY-025 | Exportable config/recipe | Done | NATIVE | Versioned JSON presets; unknown fields rejected. |
| FY-026 | YAML↔JSON | Done | NATIVE | Loss report; exact big integers; JSON→YAML verified. |
| FY-027 | Lint style rules | Partial | NATIVE | Trailing space, tab indent, long lines, final newline — separate from parse errors. No configurable rule set. |
| FY-028 | Domain presets | Done | NATIVE | Kubernetes, GitHub Actions, Ansible conventions (no platform validation). |
| FY-029 | Normalize line endings/BOM | Done | NATIVE | Explicit options; preserved by default. |
| FY-030 | Large-file mode | Partial | APPROX | >1 MiB: manual run with cancel; 10 MiB hard limit; preview capped with an explicit notice. Not benchmarked. |
| FY-031 | Local explanation assistant | Not done | UNSUPPORTED | Roadmap (R3). |
| FY-032 | Execute templates/custom tags | Not done | EXCLUDED | Excluded by design; template markers are flagged and stay inert. |
| FY-101 | Style migration comparison | Partial | NATIVE | Preset comparison works; only one formatter version ships, so cross-version comparison is not available. |
| FY-102 | Scalar hazard finder | Done | NATIVE | Types tab + “keep hazards quoted”, previewed and verified. |
| FY-103 | Document boundary controls | Partial | NATIVE | “Always write ---” option; no per-stream end-marker control. |
| FY-106 | Block-scalar value preview | Partial | NATIVE | Decoded values are compared exactly; no dedicated value viewer. |
| FY-107 | Comment-only review | Done | NATIVE | Diff filter by change class; comment report in Checks; hidden hunks still exported. |
| FY-108 | Deterministic preset lock | Done | NATIVE | Presets record formatter/parser versions; replay status shown on import. |
| FY-111 | Formatting policy report | Partial | NATIVE | Batch shows formatted vs already-formatted vs invalid per file. |
| FY-104/105/109/110/112–115 | Other R2/R3 backlog | Not done | UNSUPPORTED | Anchor rename, flow width planner, whitespace cleanup, format-on-save, snippet extraction, sequence reordering, fingerprint, fixture packs: roadmap. |
Routes
The planned /yaml-beautifier route is not published: it would duplicate the formatter. Use /yaml-formatter.