{
  "tool": "fmtview",
  "purpose": "Preview JSON, embedded XML, long strings, wrapping, and highlighting in one file.",
  "very_long_wrapped_line": "This single JSON string is intentionally placed near the top of the showcase and is much longer than a normal terminal viewport so wrapped-line scrolling can be tested immediately. Segment 001 keeps the same logical JSON value alive for wrapped scrolling. Segment 002 is still part of the first property and should not jump away. Segment 003 should appear after moving down inside the wrapped row group. Segment 004 confirms hidden continuation rows are reachable. Segment 005 keeps enough content on the same logical line to exceed a short terminal. Segment 006 remains part of the same JSON string. Segment 007 should be reachable with repeated Down, j, or mouse wheel input. Segment 008 appears before any later JSON field becomes the top line. Segment 009 gives narrow terminals another continuation row. Segment 010 keeps the line readable while syntax highlighting remains active. Segment 011 includes punctuation as text: commas, brackets, braces, and angle markers. Segment 012 is not the tail; many more wrapped rows follow. Segment 013 keeps the first-screen manual check obvious. Segment 014 should still show the continuation gutter rather than a new line number. Segment 015 makes PageDown start inside the same logical value. Segment 016 keeps the scroll target within this property. Segment 017 is a simple checkpoint for visual row movement. Segment 018 should be visible before the features object. Segment 019 keeps the wrapped row group longer than a compact tmux pane. Segment 020 continues the same property without adding another JSON record. Segment 021 makes the case longer than the earlier showcase value. Segment 022 gives another row for mouse wheel verification. Segment 023 should not be skipped by a single Down key. Segment 024 should remain under the same line number continuation. Segment 025 keeps the long value close to the top of the file. Segment 026 should be visible after many small scroll steps. Segment 027 confirms repeated Down still advances within this value. Segment 028 keeps enough text for terminals around eighty columns. Segment 029 adds another checkpoint for wrapped scrolling. Segment 030 should still be before any nested object content. Segment 031 makes the sample at least four times longer than before. Segment 032 keeps the tail far enough away for manual testing. Segment 033 is another continuation row in the same JSON value. Segment 034 helps verify that the viewport does not skip rows. Segment 035 keeps the value deterministic and easy to search. Segment 036 should appear after continued j input. Segment 037 gives wheel input another row to reveal. Segment 038 keeps the same logical line visible for a long time. Segment 039 should still show a continuation gutter. Segment 040 is a mid-line marker for visual inspection. Segment 041 keeps the sample long without creating a huge file. Segment 042 should appear before the next top-level field. Segment 043 confirms the scroller is not only logical-line based. Segment 044 gives compact panes extra wrapped rows. Segment 045 keeps the scroll exercise independent of search. Segment 046 should remain reachable from the first page. Segment 047 adds another ordinary text segment. Segment 048 matches the minimum four-times-longer target. Segment 049 goes beyond that minimum for safer testing. Segment 050 keeps this single line visibly overlong. Segment 051 should still belong to very_long_wrapped_line. Segment 052 gives another continuation row for the same property. Segment 053 keeps syntax highlighting and wrapping active together. Segment 054 should be reachable before moving to the features object. Segment 055 makes the final tail less likely to fit on screen. Segment 056 gives one more row for small terminal panes. Segment 057 continues the same JSON string without embedded newlines. Segment 058 should still not become a separate logical line. Segment 059 keeps the final checkpoint away from the start. Segment 060 is near the tail but still part of the same value. Segment 061 confirms the test remains useful after resizing. Segment 062 gives the last few rows some visible text. Segment 063 should appear before the final sentence. Segment 064 is the tail of the same logical line and should not be skipped.",
  "features": {
    "syntax_highlighting": true,
    "indent_aware_wrap": true,
    "xml_tag_pairing_in_json_strings": true,
    "preserve_string_values": true
  },
  "nested": {
    "level_1": {
      "level_2": {
        "level_3": {
          "numbers": [1, 2, 3, 5, 8, 13],
          "states": [true, false, null],
          "note": "This deeply nested object is here to make indentation and continuation wrapping easy to see."
        }
      }
    }
  },
  "embedded_xml": "<order id=\"A-100\"><customer tier=\"gold\">Ada Lovelace</customer><items><item sku=\"fmt-001\" qty=\"2\">terminal viewer</item><item sku=\"xml-777\" qty=\"1\">pairing-aware tags</item></items><total currency=\"USD\">42.00</total></order>",
  "embedded_xml_mismatch_demo": "<root><valid>paired</valid></wrong>",
  "special_tokens": "first line\nsecond line\tindented column\r\nquoted value: \"fmtview\" escaped backslash: \\",
  "long_line": "This value is intentionally long so the viewer has to wrap it. Press w to toggle nowrap mode, then use h/l or the arrow keys to compare horizontal scrolling with the default soft-wrap view. The content should remain readable without needing PageUp or PageDown keys.",
  "array_of_objects": [
    {
      "id": "evt-001",
      "kind": "created",
      "payload": "<event><name>created</name><ok>true</ok></event>"
    },
    {
      "id": "evt-002",
      "kind": "updated",
      "payload": "<event><name>updated</name><ok>true</ok></event>"
    }
  ]
}
