ReMe/reme
Ziyang Guo 7c6ed1e2a0 fix(frontmatter-read): use json.dumps for all scalars to preserve string and mapping distinctions
Follow-up to the @jinliyl review on #564 (10-15 round 2):

- _render_value now sends every scalar through json.dumps rather than
  the str-only branch. The str-only branch collapsed a literal '\n'
  two-character sequence and an actual newline into the same rendered
  form ('\n') and lost the distinction between the string 'null'
  and YAML null. The JSON form preserves both.
- Mixed mapping key types (int 1 vs string '1') now round-trip with
  their JSON-form distinction in the answer, matching the metadata.
  Callers that re-parse the answer body as JSON still discard one
  value (this is a YAML-side limitation, not a renderer one); pinned
  by a regression test.
- Updated the three existing answer assertions to carry the new
  quoted scalar form, and added two regression tests:
  test_read_answer_distinguishes_newline_from_literal_backslash_n and
  test_read_answer_mixed_mapping_key_types_render_via_json.

Note: the str-only branch's '\n' escape was the only reason the
description: |- literal-block test in test_read_answer_tolerates_rich_yaml_types
rendered as 'line one\\nline two'. With the change, the same
description renders as '"line one\nline two"' (real newline, JSON-
escaped), which is exactly the fix the review asked for.
2026-10-15 19:42:14 +08:00
..
components feat(Tag filter): Add an optional rebuildable tag index for file frontmatter (#517) 2026-09-07 15:52:17 +08:00
config fix(frontmatter-read): never fail a valid YAML read on rendering 2026-10-13 16:38:52 +08:00
enumeration feat(Tag filter): Add an optional rebuildable tag index for file frontmatter (#517) 2026-09-07 15:52:17 +08:00
schema feat(proactive): separate proactive refresh from auto dream (#488) 2026-09-07 17:23:37 +08:00
steps fix(frontmatter-read): use json.dumps for all scalars to preserve string and mapping distinctions 2026-10-15 19:42:14 +08:00
utils fix(index): make embedding rebuild explicit and scoped (#508) 2026-08-28 23:25:17 +08:00
__init__.py fix: skip dependency bindings in status memory walk (#510) 2026-08-31 16:24:41 +08:00
application.py feat(core): support live component replacement (#505) 2026-08-28 16:04:02 +08:00
constants.py feat(index): add file size limits and oversized file handling (#362) 2026-07-15 21:01:18 +08:00
entry_point.py feat: simplify plugin setup and add management CLI (#485) 2026-08-23 17:58:20 +08:00
plugin.py feat: simplify plugin setup and add management CLI (#485) 2026-08-23 17:58:20 +08:00
plugin_cli.py feat: simplify plugin setup and add management CLI (#485) 2026-08-23 17:58:20 +08:00
plugin_manifest.py feat: simplify plugin setup and add management CLI (#485) 2026-08-23 17:58:20 +08:00
reme.py feat: simplify plugin setup and add management CLI (#485) 2026-08-23 17:58:20 +08:00