Hex Studio v0.3.1
Multi-dimensional calibration data. MAP, CUBOID, CUBE_4 and CUBE_5 now
decode, encode and round-trip through CDFX — every object in the ASAM ASAP2
demo description resolves, and the unsupported count is zero.
Maps, cuboids and cubes
- The detail pane shows a shaded grid preview with the object's shape and one row per axis, and Edit values… opens a full-size grid: X breakpoints across the top, Y down the side, cells editable in place.
- Anything past two dimensions gets a slice selector per extra dimension, reducing a cuboid or cube to a plane.
- A family-of-curves plot draws each row of the visible slice. Hovering a row in the grid traces its curve and the reverse. All curves share one vertical scale, pinned to the whole object, so slices stay comparable as you step through them.
- Breakpoints are editable only where the bytes actually are: a
STD_AXIShere, aCOM_AXIS/RES_AXIS/CURVE_AXISon the object that owns it (linked from the grid), and aFIX_AXISnowhere — it is computed from the A2L and occupies no image bytes.
Two things the demo file settled that reasoning alone would have got wrong, and
which are now covered by tests:
COLUMN_DIRswaps X with Y only — it is not a reversal of the dimension order. The demo's2×3×4ROW_DIR/COLUMN_DIRtwins hold the same1…24; swapping recovers that, reversing the full order yields1,13,4,16,11,….INDEX_DECRreverses along its own axis only. Reversing the whole flat array is right in one dimension and wrong in two, where it would also mirror X and mispair every value with the wrong breakpoint.
Everywhere else
- 1D curves get a plot in the detail pane, which follows the draft as you type rather than waiting for the commit.
- Verbal breakpoints and values are chosen from their enumeration rather than typed, and written by name — a verbal conversion has no numeric inverse.
- Maps are summarised in the table by their shape (
4 × 5) rather than a value span, which across a whole grid says very little. - The category list is ordered by dimension — Scalars, Axes, 1D curves, Maps & cubes — and Unsupported is hidden unless a file actually contains one.
Fixes
- Axis editing was broken. Giving
PointTarget::Axisa dimension changed its JSON from"axis"to{"axis": n}, so every axis edit from the data view silently failed to deserialise. Both spellings are now accepted, with a test covering the contract. - Maps never loaded their detail. The fetch still tested for the old
curvecategory, so the axes summary, grid preview, editor and everything downstream rendered nothing. It now asks the backend, which sets a point count for exactly the shapes that have one. - Verbal axes were offered as editable and refused every value — they invert through
text_to_raw, notto_raw. - A padded
MATRIX_DIMwas read as a grid. ASAP2 up to 1.6 writes a flat array of eight asMATRIX_DIM 8 1 1, or1 8 1column-oriented; both were presented as volumes. - Exported CDFX numbers are written at round-trip precision, so re-importing an export no longer rewrites the image.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon) | Hex.Studio_0.3.1_aarch64.dmg |
| Windows | Hex.Studio_0.3.1_x64-setup.exe or Hex.Studio_0.3.1_x64_en-US.msi |
The macOS build is signed and notarised. The Windows installers are not code
signed, so SmartScreen may warn on first run — choose More info → Run
anyway.
Full changelog: v0.3.0...v0.3.1