Skip to content

Changelog

New features, improvements and fixes, newest first. Entries are written in English.

v0.169.0

Latest

Changed

  • ZPL panes have one toolbar instead of six. Label settings, a Download menu (PDF, PNG, ZPL and the copy actions) and the pane's ⋯ menu now sit in the tab row.
  • Compare labels and command explanations moved to the pane's ⋯ menu. While you compare, a close button on the comparison bar turns it off.
  • The label count, problems and zoom controls float over the preview instead of taking a row of their own.
  • "Rendered by Labelary" and Sync preview zoom moved to the bottom bar. Sync shows only when more than one ZPL file is open.
Before
label.zpl
Label settingsPDF PNG ZPL
Command explanationsSync preview zoom
4821
1 labelFit
1^XA
2^FO20,20^FD4821^FS
3^XZ
After
label.zpl
Download
4821
1 labelFit
1^XA
2^FO20,20^FD4821^FS
3^XZ

v0.168.0

Changed

  • When a ZPL pane is stacked, the label preview now sits above the code instead of below it.
Before
1^XA
2^FO20,20^FD4821^FS
3^XZ
4821
After
4821
1^XA
2^FO20,20^FD4821^FS
3^XZ

v0.167.2

Fixed

  • Sync preview zoom and the comparison picker are disabled when only one ZPL file is open, since there is nothing to sync or compare with.
Before
label.zpl
Command explanationsSync preview zoomNo comparison
After
label.zpl
Command explanationsSync preview zoomNo comparison

v0.167.1

Fixed

  • A ZPL file alone in a wide window now shows its code and label preview side by side instead of stacked.
Before
label.zpl
1^XA
2^FO20,20^FD4821^FS
3^XZ
4821
After
label.zpl
1^XA
2^FO20,20^FD4821^FS
3^XZ
4821

v0.167.0

Changed

  • Each editor pane now owns its tabs and controls in a single row, replacing the global file strip and duplicate filename headers.
  • Move tabs between panes by dragging or using the tab menu. Closing a pane keeps its files open in a neighboring pane.
  • Keep tab switching and new files in the focused pane, restore pane groups on reload, and show all files in one strip on narrow screens.
Before
order.xml
response.xml
order.xml
1<order>
2 <id>1042</id>
3</order>
response.xml
1<response>
2 <id>1042</id>
3</response>
After
order.xmlSplit
1<order>
2 <id>1042</id>
3</order>
response.xmlSplit
1<response>
2 <id>1042</id>
3</response>

v0.166.0

Added

  • Open up to four editable XML, JSON, fixed-width, SQL and ZPL files side by side, with independent editor history and profiles.
  • Edit ZPL labels with live Labelary previews, command explanations, lint warnings, per-file dimensions and print density, zoom and visual comparisons.
  • Export labels as ZPL, PNG, ZIP or PDF, copy base64, and share compressed label links. Label settings are included in workspace backups and shared files.

Changed

  • Base64 label fields open beside their source document in this workspace. Existing ZPL URL parameters and XML share links remain supported.
  • Explain that rendering ZPL previews and image exports sends label content to Labelary.
Before
shipment.xml
1<shipment>
2 <id>4821</id>
3</shipment>
After
shipment.xml
label.zpl
1<shipment>
2 <id>4821</id>
3</shipment>
1^XA
2^FO20,20^FD4821^FS
3^XZ
4821
Label preview1 label

v0.165.1

Fixed

  • "Change type" is back to the four types (XML, JSON, fixed-width and SQL) instead of a long list of extensions.
  • "Change type" now works on empty files too, from the command menu and the tab menu, and the tab shows the new extension. Content pasted afterwards keeps that type unless it clearly reads as another.
untitled
Rename…
Change type
Close
XML
JSON
Fixed-width
SQL

v0.165.0

Changed

  • "Change type" in the command menu now lists every extension for each type, such as .xsd, .config or .geojson, so you can change a file's type and extension in one step. Search for an extension to jump to it.

v0.164.2

Changed

  • The editor's dialogs, tab strip, welcome screen and profile storage code are split into smaller modules, with no change in behaviour.

v0.164.1

Fixed

  • The open dialog lists SQL files (.sql, .ddl, .dml) and notebooks (.ipynb) with the other types it reads.
  • Closing the last tab clears the bottom bar instead of leaving the closed file's highlights, actions and settings there.
  • Pinned tags with a namespace prefix, such as inv:ID, show their pin in the structure tree.
  • Copying says so when the browser refuses the clipboard, instead of reporting it copied.
  • File and backup downloads no longer risk being cancelled in Firefox and Safari, and a fixed-width file without an extension downloads as .txt.
  • Search results and link previews point to xml.puuid.com instead of localhost, in the sitemap, robots.txt and page links.
  • When a profile change can't be saved, a new profile's dialog closes instead of offering to create it a second time.
  • The command menu and the theme toggle keep working when the browser blocks site storage.
  • The feature grid lights up its highlight chips one after another every time, instead of slower on each replay.
Before
Structure
inv:Invoice
inv:ID2041
inv:Statuspaid
inv:Total128.00
After
Structure
inv:Invoice
inv:ID2041
inv:Statuspaid
inv:Total128.00

v0.164.0

Changed

  • Long releases on the changelog page show their first six changes, with a button to show the rest, so the page is quicker to scan.

Fixed

  • Code in changelog entries, such as .sql or <<name>>, shows as a small grey chip instead of being wrapped in literal backticks.
Before
v0.84.0Oct 25
After
v0.84.0Oct 25

v0.163.1

Changed

  • Agent and contributor docs now ask for a changelog picture with every visible change.

v0.163.0

Added

  • Changelog entries now show a small picture of what changed, with a before and after where it helps: SQL colours, the paste dialog, welcome screens, tabs, the bottom bar and more.
Before
v0.162.0Nov 1
After
v0.162.0Nov 1

v0.162.0

Added

  • SQL colours that follow the usual SQL editor convention: blue keywords, red strings, green comments, magenta functions and grey operators.
  • Tables, aliases and columns in SQL each get their own colour, read from where they stand in the query.
Before
1-- open orders
2SELECT o.id
3 , upper(u.name)
4FROM orders AS o
5JOIN users AS u ON u.id = o.uid
6WHERE o.status = 'open'
7 AND o.total > 100
After
1-- open orders
2SELECT o.id
3 , upper(u.name)
4FROM orders AS o
5JOIN users AS u ON u.id = o.uid
6WHERE o.status = 'open'
7 AND o.total > 100

v0.161.0

Added

  • SQL files (.sql): syntax highlighting and a Format action that puts each clause on its own line, with leading commas, AND/OR conditions indented under WHERE and ON, and subqueries indented one level.
  • SQL files open in the editor alone: no side panel, highlights, defaults or variables.
Before
query.sql
1select o.id , upper(u.name) from orders as o join users as u on u.id = o.uid where o.status = 'open' and o.total > 100
After
query.sql
1SELECT o.id
2 , upper(u.name)
3FROM orders AS o
4JOIN users AS u ON u.id = o.uid
5WHERE o.status = 'open'
6 AND o.total > 100

v0.160.0

Changed

  • The about page now shows the feature grid: tree and text sync, local storage, compare, tag highlights and share links.
Before
About
Version0.160.0StorageThis browser only
After
About
Edit the text or the tree.
In your browser
Compare two files.
Color the tags that matter.
Share with a link.
Version0.160.0StorageThis browser only

v0.159.2

Added

  • A feature showcase grid for the editor (tree and text sync, local storage, compare, tag highlights, share links), ready to place on a page.
Edit the text or the tree.
In your browser
Compare two files.
Color the tags that matter.
Share with a link.

v0.159.1

Changed

  • Added the stageshow agent skill for building faux product UI and demo illustrations.

v0.159.0

Added

  • Change a file's type (XML, JSON, fixed-width) from the command menu or by right-clicking its tab. Types the content can't be read as are disabled.
orders.xml
rates.json
1<order id="4821">
2 <customer>Maya Chen</customer>
3 <status>shipped</status>
4 <total currency="CAD">128.00</total>
5</order>
Rename…
Change type
Close
XML
JSON
Fixed-width

v0.158.1

Fixed

  • Pasting into a file that still holds only the starter template, such as tabs made before files started empty or a new JSON file, now replaces the template and asks for the file type and profile, instead of pasting inside it.
Before
1<?xml version="1.0" encoding="UTF-8"?>
2<root>
3<order id="4821">
4 <customer>Maya Chen</customer>
5 …
6</root>
After
1<order id="4821">
2 <customer>Maya Chen</customer>
3 …

v0.158.0

Added

  • Pasting into an empty file, or over all of one, asks which file type and profile it is, with what the content gives away already picked. Press Enter to accept, clone any profile or make a new one from the same dialog.

Changed

  • New files start empty. An empty file has no type: its tab drops the extension, the structure panel and file actions hide, and the editor invites you to paste or type.

Fixed

  • Errors from a file's old type no longer linger in the editor after it changes type.
Open pasted content asChoose how to read what you pasted into untitled.
File type
XMLDetected
JSON
Profile
DefaultBest match
Before
untitled.json
1{
2
3}
After
untitled
Paste or type to start…

v0.157.0

Added

  • Open pipe-delimited flat files, such as shipment exports with SH|… and PC|… lines. The side panel shows their records as a table, with one tab per record type that follows the cursor; click a cell to select that field in the editor.
  • The open dialog accepts .txt and .dat files.
1SH|4821|2026-10-30|CAD
2PC|1|A-102|2.40
3PC|2|B-317|0.80
4PC|3|C-040|1.15
SHPC
#123
21A-1022.40
32B-3170.80
43C-0401.15

v0.156.1

Fixed

  • Pressing Tab while a completion is shown now accepts it instead of indenting the line.
Before
Tab⇥
1<order>
2 <to> <<us
3</order>
After
Tab<<user>>
1<order>
2 <to><<user>></to>
3</order>

v0.156.0

Changed

  • Highlights with no match in the current file no longer show in the bottom bar; a button lists them so you can still remove them.
Before
order1sku3carrier0tracking0
After
order1sku32 not in this file

v0.155.0

Changed

  • Tooltips wait a full second before appearing and no longer chain instantly from one button to the next.
  • Removed tooltips that only repeated a button's label; toolbar tooltips now appear only where they show a keyboard shortcut.
Before
Format
After
⇧AltF

v0.154.1

Fixed

  • The new file button and tab close buttons now line up vertically.
Before
orders.xml
After
orders.xml

v0.154.0

Changed

  • Redesign the welcome screen around a small XML snippet on a faint dot grid. Its lines settle in on arrival and a caret blinks at the end.
  • Shorten the welcome description and keep the three actions on one row.
1<invoice id="2041">
2 <customer><<name>></customer>
3 <total currency="CAD">128.00</total>
4</invoice>
Edit XML and JSON, beautifullySaved in this browser and synced across tabs. <<variables>> stay exactly as written.

v0.153.0

Changed

  • Restore the previous welcome screen: no animated illustration, the original title and description, three equal actions and the command palette hint.
Edit XML and JSON, beautifullySaved in this browser and synced across tabs. <<variables>> stay exactly as written.
Press CtrlK to search tabs and actions.

v0.152.0

Changed

  • Simplify the welcome screen to a friendly illustration, a short prompt and one main action to open a file, with new XML and JSON files as secondary options.
  • Hide the side panel toggle when no file is open.
Edit XML and JSON, beautifully
New fileNew JSON file

v0.151.1

Changed

  • Share the project instructions with all coding agents through AGENTS.md, including the commit, changelog and push steps.

v0.151.0

Changed

  • Show work from before versioning as regular releases (0.31.0 to 0.146.0), numbered by commit count.
Before
v0.150.0Oct 28
v0.147.0Oct 28
9a2b2ed · be49086 · 5714cde · … · c448ae4
After
v0.147.0Oct 28
v0.146.0Oct 28
v0.127.0Oct 27
v0.98.0Oct 26

v0.150.0

Changed

  • Simplify the changelog into one row per release, with earlier Git history folded away.
  • Simplify the About page to a short description with the version, storage and source.
  • Link the changelog from the site header.
v0.150.0Oct 28
v0.149.0Oct 28
v0.148.0Oct 28

v0.149.0

Added

  • Automatically select a matching profile when opening or dropping a file, based on its structure and learned profile choices. (4131a4d)
  • Document earlier releases with links to every commit.

Changed

  • Restyle the changelog with compact release sections, date navigation and the editor’s neutral typography and colors.
Before
rates.json
shipment.xml
1<shipment>
2 <carrier>UPS</carrier>
Default
After
rates.json
shipment.xml
1<shipment>
2 <carrier>UPS</carrier>
Shipping

v0.148.0

Added

  • Add a changelog page. Click the version in the bottom bar or footer to open it. (432cfec)
1<order id="4821">
2 <customer>Maya Chen</customer>
3 <status>shipped</status>
Default
v0.148.0
Changelog
v0.148.0Oct 28
v0.147.0Oct 28

v0.147.0

Added

  • Show the app version in the editor's bottom bar and the site footer. (85bf204)
Before
ProfileDefault
3:12
After
ProfileDefault
v0.147.03:12

v0.146.0

Changed

  • Disable bottom bar actions that have nothing to do. (9a2b2ed)
  • Replace variables in place instead of a new file. (6b4129d)
  • Make every file content change undoable. (88e3589)
  • Size tabs to their names and float notices over the bar. (617f3ad)
  • Preselect the last-run command in the palette. (be49086)
  • Move the notice slot to the top right. (b3acbc4)
  • Give notices a fixed slot at the bottom right. (729fa90)
  • Confirm variable replacement with a preview dialog. (5714cde)
  • Swap the status sentence for labelled switches with icons. (dd6066c)
  • Replace bottom icon bar with a readable status sentence. (eab35af)
  • Render pinned values like the file panel does. (488dfaa)
  • Use sets for the stray bracket lookups. (dfd3dc5)
  • Fix CI typecheck and make local checks match CI. (9f328cd)
  • Tell agents to commit and push after each task. (f405ab3)
  • Format PinnedFields with Prettier. (9ffb778)

Fixed

  • Keep tabs a fixed width and scroll the strip when they overflow. (1c15c96)
  • Fix file save races and document parsing edge cases. (f3f12dd)
  • Flag every malformed variable, not just a stray >. (391303f)
  • Flag a stray > next to a <<var>> as an error. (7991a76)
Before
After
Default<<var>>Replace variablesApply defaults

v0.127.0

Added

  • Add theme toggle to the command menu, drop per-tag highlights. (3e5df03)
  • Add a button to switch the variable style. (4c18451)
  • Add a format option to remove tag prefixes. (de4c9db)
  • Add copy button to pinned fields and confirm before unpinning. (c6910ed)
  • Support {{name}} variables alongside <<name>>. (935f866)

Changed

  • Show the tab's profile as a tag on the file name. (d81c8c0)
  • Restyle the tab strip like browser tabs. (d11066a)
  • Remove the logo button from the top bar. (f3e785c)
  • Regroup the command menu and add a New JSON file shortcut. (08db3cf)
  • Switch the syntax palette to greyscale. (f534bfb)
  • Remove highlight ticks from the editor scrollbar. (39f6092)
  • Clean up persistence handling and editor synchronization. (bbe0185)
  • Mark tags as base64 ZPL labels and open them in the ZPL viewer. (237b847)
  • Shorten long values in the editor, with copy. (3962852)
  • Drop the pinned fields heading and add a copy-as-variable button. (65f208f)
  • Group pinned fields by highlight colour. (9bf74bf)
  • Let pinned fields be reordered by dragging. (9002e88)
  • Group bottom-bar highlight chips by colour. (fae80e5)
  • Offer the profile's highlight colours first when picking. (95c01f5)
  • Patch Redact events so Radix switches toggle again. (dabc07c)
  • Set the custom sort order from a template file. (946b120)
  • Ask the browser to keep the workspace and remind about backups. (1201372)
  • Read disk write support through a hydration-safe hook. (a3ffad1)
  • Save tabs back to the files they were opened from. (2cb6a7a)
  • Store the workspace in IndexedDB instead of localStorage. (f965535)
  • Format search.ts with Prettier. (daa484f)

Fixed

  • Keep the first highlight pill's ring inside the bottom bar. (7b699ea)
  • Stop browser autofill in the find and replace fields. (bb98c8d)
  • Keep legacy rows IndexedDB refuses instead of losing the store. (76ac8a8)
Before
orders.xmlrates.jsonlabel.xml
After
orders.xml
rates.json
label.xml
Before
1<order id="4821">
2 <customer>Maya Chen</customer>
3 <status>shipped</status>
4 <total currency="CAD">128.00</total>
5</order>
After
1<order id="4821">
2 <customer>Maya Chen</customer>
3 <status>shipped</status>
4 <total currency="CAD">128.00</total>
5</order>

v0.98.0

Added

  • Add a share button to the top bar. (4235262)
  • Add a custom sort order to formatting. (12b7dcc)

Changed

  • Remove offline service worker support. (4a60328)
  • Run the app on the TanStack Redact runtime. (9c86276)
  • Rename the project to xml. (d150b22)
  • Switch tabs with Control and the arrow keys. (4b8d79c)
  • Ignore namespace prefixes in profile tag rules. (06dc1d4)
  • Carry the file's profile in share links. (536d689)
  • Record browser check results and add tasks 8 to 11. (8089d62)
  • Replace finished fixes in TASKS.md with follow-ups. (ee97c59)

Fixed

  • Silence React Doctor on eager CodeMirror and restore writes. (97347c4)
Before
1<order>
2 <total>128.00</total>
3 <status>shipped</status>
4 <id>4821</id>
5 <customer>Maya Chen</customer>
6</order>
After
1<order>
2 <id>4821</id>
3 <customer>Maya Chen</customer>
4 <status>shipped</status>
5 <total>128.00</total>
6</order>

v0.84.0

Added

  • Add offline support and app install with a service worker. (cfb0546)
  • Add side-by-side comparison of two open tabs. (ec08e77)
  • Add workspace backup and restore. (6d228eb)
  • Add per-profile values for plain variables. (9397a6d)
  • Add share links that carry a file in the URL fragment. (cc9b270)
  • Add a light/dark theme toggle to the status bar. (2141d28)
  • Add settings profiles, file archive and structure search. (73000a5)
  • Add VS Code-style app shortcuts with TanStack Hotkeys. (c489a8e)
  • Add a pinned fields bar above the editor. (6c45777)

Changed

  • Include variables in workspace backups. (5676b6b)
  • Load the compare view on first use. (d00bbfc)
  • Restyle completion popup with a variable preview panel. (8d9998f)
  • Open replaced dynamic variables in a new file. (c98add9)
  • Replace Postman dynamic variables with generated values. (37adff8)
  • Mark elided path middles with a bordered marker. (cc6589f)
  • Elide the middle of long paths in menu headers. (58a96a4)
  • Redesign context menus with a header and inline colours. (9e0eb19)
  • Copy standard XPath, JSONPath and JSON Pointer paths. (16b2e07)
  • Highlight search hits in the structure tree. (a0a76f4)
  • Show notifications in the status bar instead of toasts. (659b829)
  • Extract shared UI pieces and a shortcut registry. (8ac88d6)
  • Split editor extensions and share syntax helpers. (87ebd9c)
  • Share store persistence helpers. (8efdc9f)
  • Simplify the bottom bar and confirm before applying defaults. (a005191)
  • Make the structure tree keyboard-accessible. (19414d5)
  • Move pinned fields into the side panel. (730b139)
  • Span the pinned bar across both panels. (eb36381)
  • Sync scrolling between the editor and the structure tree. (3c43ca1)
  • Underline differing values in the structure tree. (4fe340b)
  • Underline values that differ from their default. (f8e0775)
  • Accept Postman dynamic variables like <<$randomInt>>. (9aea957)
  • Mark values that already equal their default. (6527a55)
  • Replace shipped features in TASKS.md with follow-ups. (02cd952)
  • Add TASKS.md with five ranked feature ideas. (0d8f635)
  • Remove dead code and unused dependencies. (ab50c8a)
  • Add React Doctor scanner. (ce103d4)

Fixed

  • Keep storage events reaching collections after a write wrapper. (8f4e954)
  • Serve the locale shell for uncached pages offline. (17848ce)
  • Report failed saves from every collection. (57a4e75)
  • Roll back a restore that fails partway. (e84e8c0)
  • Keep update notices and errors under short-lived notices. (da18a68)
  • Keep highlight chips fixed when a notice appears. (a2dc44f)
  • Fix React Doctor findings. (a0a62f7)
orders.xml↔orders-v2.xml
Differences: 1
1<order id="4821">
2 <customer>Maya Chen</customer>
3 <status>pending</status>
4 <total currency="CAD">128.00</total>
5</order>
1<order id="4821">
2 <customer>Maya Chen</customer>
3 <status>shipped</status>
4 <total currency="CAD">128.00</total>
5</order>

v0.31.0

Added

  • Add JSON support alongside XML. (a1db705)
  • Add default values that can be applied to the open file. (5468a6f)
  • Add right-click highlight menu on editor tags. (0ba20be)
  • Add "highlighted tags first" format option. (42df9b0)
  • Add format options, format on save; drop minify. (a9e16b6)
  • Build the XML editor: CodeMirror, synced tree, tag highlights. (159bdf0)
  • Add local cache for files and tag highlights. (846541b)
  • Add XML core: parse, format, edit and locate. (22892b1)
  • Initial commit. (c448ae4)

Changed

  • Remove the load sample actions. (b9f57e5)
  • Delete a file when its tab closes. (855c637)
  • Color parent tags apart from leaf tags. (81f056b)
  • Center the command menu and open it from the bottom bar. (19f94f5)
  • Turn the file menu into a searchable command menu. (6822eaf)
  • Confirm before closing a file tab. (6ca96ab)
  • Move editing tools to the bottom bar and slim the top bar. (3d8d69f)
  • Restyle variables as grey chips with a variable icon. (abffd02)
  • Turn format options menu into a settings popover. (70a82f9)
  • Cycle through occurrences when clicking a highlight chip. (0901723)
  • Jump to first occurrence when clicking a highlight chip. (048cfc8)
  • Shorten toast duration to 1.5s. (e72e366)
  • Highlight whole tags with a tinted wash instead of name chips. (192eb68)
  • Remove Inspector panel and lock the editor to the viewport. (213c054)
  • Rework tag highlights: solid chips, legend bar, Alt+H picker. (f2be696)
  • Disable overscroll on html and body. (4a95d70)
  • Use shadcn's cn package for class merging. (4cf2143)
  • Fix build warnings: split vendor chunks, SSR sourcemap. (05e3c7d)
  • Add xml.puuid.com custom domain to wrangler. (97a7464)
  • Keep stores alive across hot reloads; add diffChange. (7f8acf0)
  • Add editor dependencies and shadcn components. (318fdde)
  • Merge header, tabs and highlights into a single top bar. (24fe069)
1<order id="4821">
2 <customer>Maya Chen</customer>
3 <status>shipped</status>
4 <total currency="CAD">128.00</total>
5</order>
Structure
order
customer
status
total