Skip to content

Changelog

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

v1.6.2

Latest

Fixed

  • The header no longer shows "Editor" twice. The site name already links to the editor, so the separate Editor link is gone.
Before
EditorEditorAboutChangelog
After
EditorAboutChangelog

v1.6.1

Changed

  • The source code link points to the renamed repository, github.com/puuid-com/editor.

v1.6.0

Changed

  • The site is now called Editor and lives at editor.puuid.com. Links to xml.puuid.com, including share links, redirect to the new address.
  • Backup files are named editor-backup-<date>.json. Older backups still restore.
Before
XML EditorAboutChangelog
After
EditorAboutChangelog

v1.5.0

Added

  • Plain text files (.txt, .text, .log). They open as written, with no highlighting, structure panel or XML errors. A .txt file of pipe-delimited records still opens as fixed-width.
  • "New text file" in the command menu and on the welcome screen, and "Plain text" in the file type menu.
todo.txt
1Call the carrier
2Reprint <label> 42
3
4Ship by Friday

v1.4.0

Added

  • Markdown files (.md, .markdown). The side panel shows a live preview that follows the editor as you type and scroll, with highlighted code blocks, tables, task lists and Mermaid diagrams.
  • "New Markdown file" in the command menu and on the welcome screen. Pasting text that starts with a # heading into an empty file makes it Markdown.
release.md
1# Release
2
3Ships **today**.
4
5```mermaid
6graph LR
7 Edit --> Ship
8```
ReleaseShips today.
EditShip

v1.3.0

Added

  • ${…} variables also accept a name wrapped in dollars, such as ${$stuff$}. They're highlighted, filled from the profile and no longer flagged as invalid. Switching to <<…>> or {{…}} leaves them as written.
Before
1<Order>
2 <Id>${$guid}</Id>
3 <Ref>${$stuff$}</Ref>
4</Order>
After
1<Order>
2 <Id>${$guid}</Id>
3 <Ref>${$stuff$}</Ref>
4</Order>

v1.2.0

Changed

  • Clicking a pinned tag's name now jumps to it in the editor. When it appears more than once, each click moves to the next one, wrapping back to the first.
  • Only the tag icon next to a pinned tag's name copies the name now.
Before
Description3 in this fileLine[1]BoltsLine[2]WashersLine[3]Nuts
After
Description3 in this fileLine[1]BoltsLine[2]WashersLine[3]Nuts

v1.1.6

Changed

  • Removed the starter template's site setup script, which would have overwritten this site's name and address.

v1.1.5

Changed

  • Moved the ZPL tag helpers in with the rest of the ZPL code. Nothing visible changes.

v1.1.4

Changed

  • Added a check for unused files, exports and dependencies to the release checks and CI, and brought the project layout in the README up to date.

v1.1.3

Changed

  • Simplified how the editor receives its profile's settings. Nothing visible changes.

v1.1.2

Changed

  • Split the command menu's list of actions into one part per group so it is easier to change. Nothing visible changes.

v1.1.1

Changed

  • Split the ZPL label preview into smaller parts so it is easier to change. Nothing visible changes.

v1.1.0

Changed

  • Problems found in XML and JSON files, in the editor and the structure panel, are now written in French when the site is in French, instead of always in English.
Before
1<order>
2 <id>1042
3</order>
4<note/>
Problems: 2
  • <id> is not closed
  • Only one root element is allowed
After
1<order>
2 <id>1042
3</order>
4<note/>
Problems: 2
  • <id> n’est pas fermé
  • Un seul élément racine est permis

v1.0.6

Changed

  • Simplified how file types are read from file names. Nothing visible changes.

v1.0.5

Changed

  • Removed seven translations no screen used any more.

v1.0.4

Fixed

  • A base64 label opened by dropping it or through the file picker on browsers without disk access now picks its profile from the decoded label, as it already did when opened from disk.

v1.0.3

Changed

  • Removed editor state nothing read: a leftover mobile view switch and the cursor column. The ZPL tools' store is now named for what it holds, so it no longer shares a name with the main editor's.

v1.0.2

Changed

  • Side-by-side panes are stored only in their current form. A browser tab still holding the layout saved before panes had their own tabs reopens with every file in one pane.

v1.0.1

Changed

  • Removed unused code: the parts of the vendored showcase kit the About page never used (brand logos, phone frames, charts and most motion components), an unused dev dependency, and exports nothing imported. Nothing visible changes.

v1.0.0

Changed

  • First stable release. Everything up to 0.190.0 is now version 1.0, and from here on stored data, share links and file formats only break with a new major version.

v0.190.0

Changed

  • A repeated pinned tag's occurrences are now labelled by the nearest repeated element above them, such as ShipmentLine[2] or Carton[1]/[...], even when they sit at different depths. Containers like ShipmentLines and Cartons are left out unless they're needed to tell occurrences apart.
Before
ItemNumber4 in this fileShipmentLines/ShipmentLine[1]SKU-10001ShipmentLines/ShipmentLine[2]SKU-10002Cartons/Carton[1]/Contents/ItemSKU-10001Cartons/Carton[2]/Contents/ItemSKU-10002
After
ItemNumber4 in this fileShipmentLine[1]SKU-10001ShipmentLine[2]SKU-10002Carton[1]/[...]SKU-10001Carton[2]/[...]SKU-10002

v0.189.0

Changed

  • The labels on a repeated pinned tag's occurrences now show only where their paths differ, such as ShipmentLine[1] and ShipmentLine[2], without the parents they all share. When shared layers sit between that and the tag, the label ends with [...].
  • In JSON, an occurrence inside an array is labelled with the array's key and index, such as ShipmentLines[0], instead of a bare 0.
Before
LineNumber2 in this fileShipmentLine[1]/Detail1ShipmentLine[2]/Detail2
After
LineNumber2 in this fileShipmentLine[1]/[...]1ShipmentLine[2]/[...]2

v0.188.0

Changed

  • A pinned tag that appears more than once lists every occurrence under it again, each on a guide line with its own editable value and labelled with its parent tag (such as Line[2]), so you see where each value sits. The one under the cursor is in bold; click a label to move the cursor there.
Before
DescriptionWashers3
After
Description3 in this fileLine[1]BoltsLine[2]WashersLine[3]Nuts

v0.187.0

Changed

  • The flat file records table draws a border around every cell, so columns and rows are easier to follow.
Before
SHPC
#123
21A-1022.40
32B-3170.80
43C-0401.15
After
SHPC
#123
21A-1022.40
32B-3170.80
43C-0401.15

v0.186.0

Changed

  • Flat files no longer show the pinned fields panel, and their records table always sits under the code, even with a single wide pane.
Before
1SH|4821|2026-10-30|CAD
2PC|1|A-102|2.40
3PC|2|B-317|0.80
4PC|3|C-040|1.15
Pinned fields
SHPC
#123
21A-1022.40
32B-3170.80
43C-0401.15
After
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.185.0

Changed

  • Pinned tags that appear more than once are back to a single field with a count beside it, as before 0.183.0. The occurrence list and its popover are gone.
Before
Description3 in this fileLine1BoltsLine[2]2WashersLine[3]3Nuts
After
DescriptionWashers3

v0.184.0

Changed

  • A pinned tag that appears more than once now lists every occurrence right in the pinned fields, each with its own editable value, its position and its parent tag, instead of hiding them behind a menu. Past five, the rest fold behind "Show all". Click an occurrence's label to move the cursor to it.
Before
DescriptionWashers2/3
  1. 1Boltsin Line
  2. 2Washersin Line[2]
  3. 3Nutsin Line[3]
After
Description3 in this fileLine1BoltsLine[2]2WashersLine[3]3Nuts

v0.183.0

Added

  • When a pinned tag appears more than once, the count beside its field now shows which one you're editing (such as 2/3). Click it to list every occurrence with its position, parent tag and value, and pick one to edit it.
Before
DescriptionWashers3
After
DescriptionWashers2/3
  1. 1Boltsin Line
  2. 2Washersin Line[2]
  3. 3Nutsin Line[3]

v0.182.0

Changed

  • Notices such as "Copied to clipboard" now have their own place in the bottom bar, in the free space beside the file's actions, instead of floating over the buttons.
Before
ProfileOrdersCopied to clipboardFormat
After
Copied to clipboardProfileOrdersFormat

v0.181.0

Changed

  • Highlights and profiles in the bottom bar are now one button each. The Highlights button opens every colour, the ones with no match in the file, and the form to add one. The profile button shows the current profile and opens a menu to switch, edit or create one.
Before
order4sku12price9+2OrdersRatesLabels+3
After
Highlights28ProfileOrders

v0.180.0

Changed

  • The bottom bar no longer overflows with many highlight colours or profiles. It shows the three highlight colours with the most matches and the four profiles holding the most files (always including the current one); the rest sit behind a +N button.
Before
order4sku12carrier2price9qty1OrdersRatesLabelsInvoicesReturnsLegacy
After
order4sku12price9+2OrdersRatesLabelsInvoices+2

v0.179.0

Changed

  • Clicking anywhere on a pinned tag now copies its name. Jumping between its matches moves to the tag's right-click menu (Next match, Previous match).
SenderCodeCopied to clipboard

v0.178.0

Changed

  • A pinned tag's copy-name icon now sits at the start of the tag, so the icons line up down the pinned list.
Before
SenderCodeACME01
After
SenderCodeACME01

v0.177.0

Changed

  • The button that copies a pinned tag's name now sits inside the tag itself, in the tag's highlight colour, instead of next to the value's copy button.
Before
SenderCodeACME01
After
SenderCodeACME01

v0.176.0

Changed

  • The second copy button on a pinned tag now copies the tag name itself, such as SenderCode, instead of a {{SenderCode}} variable. Its icon is now a tag.
Before
SenderCodeACME01
After
SenderCodeACME01Copied to clipboard

v0.175.3

Changed

  • TASKS.md now lists ten ranked feature proposals, each with what it does, why it matters, the model and effort to build it, and its pros and cons. The earlier follow-up list is replaced.

v0.175.2

Fixed

  • The ZPL preview centers the label itself, not the label and its caption together, so it no longer sits higher than the middle of the pane.

v0.175.1

Fixed

  • The ZPL label preview is now truly centered vertically: the room kept for the zoom controls no longer pushes the label up.

v0.175.0

Changed

  • The ZPL label preview is centered vertically in its pane instead of sitting at the top.
Before
4821

Label 1 of 1

After
4821

Label 1 of 1

v0.174.0

Changed

  • The ZPL preview's status pill no longer shows "1 label" or "No problems": each label's caption already gives the count, and the pill now appears only for problems, truncated renders or compare mismatches.
Before
4821

Label 1 of 1

1 labelNo problems
After
4821

Label 1 of 1

v0.173.1

Changed

  • Remove unused editor commands, obsolete tab-ordering code, and unused UI components and dependencies.
  • Share the download helper between document, backup, and label exports to keep file handling consistent.

v0.173.0

Changed

  • With side-by-side panes, the split button now stays on the first pane and the close-pane button shows only on the last one, so each sits in one fixed place.
Before
order.xml
1<order>
2 <id>1042</id>
label.xml
1<label>
2 <id>1042</id>
After
order.xml
1<order>
2 <id>1042</id>
label.xml
1<label>
2 <id>1042</id>

v0.172.0

Added

  • Side-by-side panes now have a close button in their tab row, so going back to one pane is a single click. Its tabs move to the pane beside it; no file is closed.
  • Join all panes, from a pane's ⋯ menu, a tab's right-click menu or the command menu, puts every tab back in one pane.

Changed

  • "Hide pane" is now called "Close pane".
Before
order.xml
1<order>
2 <id>1042</id>
label.xml
1<label>
2 <id>1042</id>
After
order.xml
1<order>
2 <id>1042</id>
label.xml
1<label>
2 <id>1042</id>

v0.171.1

Fixed

  • In a ZPL pane with the label preview on top, the active tab now has the preview's grey instead of the editor's colour, so it joins the preview instead of standing out as a dark notch.
Before
label.zpl
label-3.zpl
ACME
After
label.zpl
label-3.zpl
ACME

v0.171.0

Added

  • Word wrap: long lines can now wrap to fit the editor instead of scrolling sideways. Turn it on or off with the wrap button in the bottom bar, the command menu or ⌥Z. The choice applies to every file and is remembered.
Before
1<order id="1042">
2 <note>Leave the parcel with the front desk if nobody answers the door after two rings.</note>
3</order>
After
1<order id="1042">
2 <note>Leave the parcel with the front desk if nobody answers the door after two rings.</note>
3</order>

v0.170.2

Fixed

  • Clicking a tab after typing no longer draws an outline around it. The outline now shows only when you move between tabs with the keyboard.
Before
orders.xml
label.zpl
1^XA
2^FO50,50^FDACME^FS
3^XZ
After
orders.xml
label.zpl
1^XA
2^FO50,50^FDACME^FS
3^XZ

v0.170.1

Fixed

  • Clicking a tab no longer leaves a box around its name after you press a key. The click now puts the cursor in that file's editor, as VS Code does.
  • When you move between tabs with the keyboard, the focus outline now goes around the whole tab.
Before
orders.xml
untitled-3.zpl
1^XA
2^FO50,50^FDACME^FS
3^XZ
After
orders.xml
untitled-3.zpl
1^XA
2^FO50,50^FDACME^FS
3^XZ

v0.170.0

Changed

  • New tab look: the active tab is a card joined to the editor below it, and the other tabs sit flat on a grey band, split by hairlines. File icons are gone.
  • A tab's profile shows as a coloured dot before its name instead of tinting the name.
  • The split button sits only on the rightmost pane instead of on every pane.
  • When tabs don't fit, the strip fades at the edge with more tabs instead of showing scroll arrows. Scroll it with the wheel or open the full list.
  • The dot on a file with unsaved changes takes the close button's place and turns into it on hover.
Before
order.xmlrates.json
1<order>
2 <id>1042</id>
3</order>
label.xml
1<label>
2 <id>1042</id>
3</label>
After
order.xml
rates.json
1<order>
2 <id>1042</id>
3</order>
label.xml
1<label>
2 <id>1042</id>
3</label>

v0.169.0

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