# pcb-rnd - io_lihata versions

History of io_lihata, per format version.

## lihata board

### v1

Feature-compatible with the gEDA/PCB file format, plus allows multiple fonts. Same assumptions on layers: last two must be the silk layers.

### v2

Introduce the layer stack subtree and remove layer assumptions. Save the combining field of layers.

### v3

New global object subtree: subcircuit. Global object element has been removed.

Intconn is not a flag, but a pin/pad/terminal attribute.

### v4

New subtree under data: padstack_prototypes, for storing padstack prototypes. ID is the place of the padstack within the list.

New object type under : ha:padstack_ref.id.

### v5

Removed drc and isle_area_nm from the board header in favor of the config subtree. Removed the cursor section from board header - cursor position and zoom should not be saved or loaded.

Warn for the intnoconn attribute when saving pre-v5 - pcb-rnd versions supporting v4 or lower will most probably not understand it.

Layer group and network attributes. Layer colors.

Optional route style via prototype ID.

Optional padstack prototype name for easier user identification of prototypes.

Remove old model objects: elements, element-lines, element-arcs, pins, pads, vias. They are still loaded if they are found in v5, but a warning is generated and the objects are force-converted to the new model on save.

### v6

Extended the text object fields with optional thickness and rot fields that will be able to override the default mechanism for determining the thickness or the n*90 degree rotation angle (with an arbitrary value).

Removed the direction field from text - use the rot field instead.

New route style entries for default text thickness and text scale.

New layer group types PCB_LYT_DOC and PCB_LYT_MECH are handled on load and save.

Load and save purpose field in layer groups and bound layers.

The layer visibility bit is not saved any more - it was reset after load so it only added noise to the file.

When saving PCB_THERMAL_NOSHAPE, mark it explicitly by writing "noshape" instead of just leaving the thermal shape empty.

### v7

Polygon enforce_clearance (when non-zero, enforces minimum clearance on clearing objects within the polygon).

Informal change: text attribute tight_clearance is interpreted to change the clearance style of a text object.

Informal change: text attribute mirror_x is interpreted to mirror the X coordunates of the text object (text mirror over the Y axis).

The pixmap subtree with ulzw entries and gfx layer objects - provides on-screen pixel graphics.

Rat anchor objects are saved with idpath so the exact connections of a rat is preserved.

Text objects optionally have separate scale_x and scale_y fields for different width/height scaling.

## lihata subcircuit

### v4

Initial version, used before board v6.

### v6

Used from board v6. Allows ps_proto_v6.

### v7

Used from board v7. Allows polygon enforce_clearance, tight_clearance attribute for text objects, mirror_x attribute for text objects, gfx/pixmap and text scale_x/scale_y.

## ps_proto

### v4

Initial version, used before board v6.

### v6

Used from board v6. Features new layer type: PCB_LYT_MECH and new pad shape: hshadow.