The test pair verify.py runs against is back in the repo, so a fresh clone
can run the built-in checks. Conversion output (*-sab2sax-*) stays ignored,
so converting inside testprogram/ still leaves the tree clean.
claudeCodeChatLog.md records how this got built: what was asked for, the
decisions worth remembering (plain paths in system.properties, the port
source, Java float formatting, the f4-rounded manifest default, why a sab
cannot return runtime props) and what is still untested.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
testprogram/ is local test data, not part of the tool: untracked and
gitignored so it never comes back. verify.py now prints SKIP and exits 0
when the test pair is absent instead of blowing up.
Adds config.NAME / config.VERSION (sab2sax 0.0.0.001). Every dialog title
bar goes through config.title(), and the CLI prints the same line at
startup, so it is clear which build produced a file.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Adds the reverse conversion (sab -> sax) and makes the tools usable without
remembering paths on the command line.
- sax.py: decoder ported from OfflineApp.decodeAppBinary + encodeAppXml.
Rebuilds the tree from the firstChild/nextSibling chain and writes XML the
way XWriter does. Reproduces java.lang.Float.toString, and rounds manifest
defaults to f4 before comparing them - otherwise props equal to their
default (0.1) get written where sedonac omits them.
- sab2sax.py: CLI dispatching on the input extension, like sedonac. sab.py
still runs and hands off to it.
- config.py: sedona.home lives in system.properties. If it is missing or has
no manifests/, a folder chooser opens and the answer is written back. File
choosers for the input, save dialogs for the output; the default output name
carries a timestamp so a run never overwrites the previous one.
- verify.py: checks both directions plus a sab -> sax -> sab round trip, and
points at testprogram/ where the test files actually live.
All three checks pass byte-identical against the checked-in sedonac output.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>