v0.31.0 — Work that stays put
A seventh pass of ten. Three of the items came out of questions rather than bug reports, and one of those turned a dialog into no dialog at all.
Your work stops disappearing
Installing a Google font quietly threw away every unsaved change in the panel. The installer works server-side from the stored family list, rewrites one family and saves the lot, and the panel then replaced its buffer with the result -- so anything you had edited and not saved was gone, from any of the three places an install can start. It asks now, from inside the function so a fourth call site cannot miss it, and it can save your work first rather than only offering to lose it.
Leaving the builder with unsaved font changes now warns you. Etch guards its own work with a single beforeunload checking five of its stores, and this panel was in none of them.
And the save bar no longer sits lit over a diff with nothing in it. The flag was set true in twenty places and cleared by almost nothing; it is derived now, comparing a canonical form of the library against the last copy the server confirmed.
Fewer dialogs, and two answers each
Closing the panel no longer asks anything, because it never needed to: the buffer survives a close and the save bar is still lit when the panel comes back. The dialog that used to appear was warning about a harmless act, and the only way out it offered besides staying was to throw the work away. Discard keeps its home on the save bar, where it is chosen deliberately.
Every remaining dialog is down to two answers, which is what Etch’s own .confirm-dialog renders.
Smaller things
- Families record whether they came from Google Fonts or an upload, so a permanent delete can offer to remove the files when they are a click from coming back. The trash card says which it is.
- A confirmation marks the family, row or files it is about to delete, the way Etch’s Asset Manager does.
- The tooltip explaining why an already-converted file cannot be converted again was being drawn at 30% by its own disabled button.
- Download selection is disabled when it could only re-download identical files, and says which reason applies.
- The Fallback stack field opens its suggestions when you click anywhere in it.
- A button inside a section box keeps its own width instead of stretching across the panel.
Under the hood
The translation template had drifted for two dozen releases: 23 strings missing, 3 naming strings that no longer existed, and 178 of 260 line references pointing at the wrong line. It is regenerated by tools/check-pot.js, which also runs in CI, so adding or moving a string without rebuilding now fails the build.
Full detail in CHANGELOG.md.