Skip to content

Latest commit

 

History

History
96 lines (73 loc) · 3.33 KB

File metadata and controls

96 lines (73 loc) · 3.33 KB

Changelog

0.1.8

Fixed

  • CSV writer: downgrade trailing blank row mismatch from error to warning when a tall instruction's stripped continuation absorbs extra blank rows on read-back — fixes WriterError on rungs with blank rows beyond an instruction's visual height

0.1.7

Fixed

  • SCR decode: skip pure vertical pass-through rows in implied modifier row fallback, preventing |T and blank → - corruption on continuation rows
  • CSV converter: recognize Contact/CompareContact objects with wire_down=True during wire hydration, not just bare string tokens

Changed

  • SCR decode: remove _implied_modifier_row_offsets fallback — SCR continuation row topology already encodes per-row horizontal connectivity explicitly, verified across 883 rungs in 47 SCR files

0.1.6

Fixed

  • SCR decode: replace backward/brute-force topology block scanning with a single forward pass, fixing false positive matches from flag-table tail bytes that caused spurious empty rungs with inflated row counts

0.1.5

Changed

  • Encode: remove AF summary block — Click accepts multi-AF rungs without it, eliminating complex gating logic
  • CSV: consolidate tall-instruction padding into shared hydrate/dehydrate helpers in converter and writer

Added

  • Devtools: combine_coverage.py — combine random coverage fixtures into a single multi-row rung for paste smoke-testing
  • Devtools: coverage_golden.py now regenerates all bins unconditionally

0.1.4

Fixed

  • CSV: preserve multi-row AF round-trips, including pinned/tall AF blocks away from row 0, multiple tall blocks in one rung, and generic tall continuation rows
  • SCR decode: restore omitted wiring for generic tall AF continuation rows
  • CSV writer: fail loudly when emitted CSV rows lose decoded rung semantics by reparsing writer output and checking for row, condition, or AF mismatches before writing to disk

0.1.3

Fixed

  • RTF decode: parse RTF comments structurally instead of regex-based stripping, handling nested groups, font/color tables, and style toggles correctly
  • RTF decode: handle \uN unicode escape sequences (signed 16-bit) and validate ansicpg1252 before decoding
  • CSV: preserve quoted string literals in AF token positional args — e.g. copy("d",TXT1) no longer loses its quotes during parse
  • Search instruction: store text-search operands with quotes end-to-end, removing the strip-on-decode/re-add-on-encode anti-pattern

Added

  • Encode: auto-sanitize non-ASCII characters (curly quotes, em-dashes, arrows, etc.) in rung comments before RTF conversion via NFKD normalization

0.1.2

Fixed

  • Math: preserve duplicate operands and normalize parenthesis spacing

0.1.1

Fixed

  • Encode: correct row_span for tall AF instructions and single-rung list routing

0.1.0

Initial release. Originally prototyped in clicknick, then developed into a standalone library here.

  • Encode Rung objects or CSV into Click clipboard binary
  • Decode clipboard binary back into structured Python objects
  • Decode Scr*.tmp program files into Program objects
  • All standard Click instruction types supported natively
  • RawInstruction passthrough for unknown blob types
  • Zero runtime dependencies