v0.6.3
Five fixes: two Windows bugs (editor launch, non-UTF-8 locales), lint false positives
inside code fences, OpenAI GPT-5/o-series HTTP 400s, and missing compile lineage on
stub/legacy paths. Thanks to @VibeSan7 (#91, #92, #93) and @junghoon-vans (#88) for
the reports.
Fixed
-
Stub and legacy compiles now record compile lineage (#98). Articles born from a stub
compile (maintain --fix) orcompile --legacywere published without alineage
frontmatter block, sosynto trace articlereported "No lineage recorded" for them.
Both paths now thread the compile-run id like the default concept path, and legacy
runs are tracked incompile_runstoo. -
Review
e(edit) works on Windows and never kills the session (#92). The action
hardcoded avifallback, which doesn't exist on Windows, and the resulting
FileNotFoundErrorunwound the wholesynto reviewrun. It now uses Click's
cross-platform editor launcher (notepad fallback on Windows) and a launch failure
prints a hint and returns to the review menu. -
Lint no longer flags or rewrites content inside code fences and inline code (#93).
JSON like["apps/*", "packages/*"]in a fenced block was reported as a malformed
link (with a corrupting[[...]]suggestion), and--fixcould rewrite embed-like
tokens inside fences. All malformed-link/embed/LaTeX/citation scanners now mask code
regions first, like the wikilink rewriters always did. -
Generated files are now written as UTF-8 regardless of the Windows locale (#91).
On non-UTF-8 codepages (e.g. cp1251),synto initwrote the vault config with the
system encoding, and the em dash in generated comments then crashed every command
withUnicodeDecodeError. All file writes/reads and git output now pin UTF-8, a
vault already broken this way gets an actionable error instead of a traceback, and
a lint rule plus a guard test keep unpinned I/O from coming back. -
OpenAI GPT-5/o-series models no longer fail with HTTP 400 (#88). Those models
rejectmax_tokens(requiringmax_completion_tokens) and non-defaulttemperature;
compile jobs failed per article. The client now learns both quirks from the provider's
own 400 response, retries with the fix, and remembers it for the rest of the run —
no model-name list, so Azure deployments, fine-tunes, and future model families work
automatically.
Full Changelog: v0.6.2...v0.6.3