ispyisail
fac09253a0
Open and save projects as .qetz (zipped, opt-in)
...
Third stage of the zipped project file (#1440 ). A project is saved as a
.qetz when its file name ends in .qetz -- Save As offers it as a second
file type, and --resave, --set-titleblock, the script API's save() and
the live-mode snapshot follow the name too. Saving a .qet project still
writes a .qet; nothing changes unless the user picks .qetz.
Opening recognises a .qetz by its content (a zip), not its name, and
reads it as bytes: text mode would alter it on Windows. The project
document is joined back and read by the same code as a .qet. Crash
backups stay plain XML. Drag and drop, the open dialog and the
numbering import accept .qetz; the database export names its file from
the project's name without assuming ".qet".
Parts are now written without added indentation (one line each): the
symbol definitions are kept as read, whitespace included, and parts
that gained indentation made the next save differ (five forum projects).
Tests: tst_resaveunchanged::containerSavesTheSameProject (four examples
saved as .qetz, then as .qet, equal the straight .qet; pictures checked
to fail without the fix), tst_qetcontainer::noWhitespaceAdded. Outside
ctest: 341 of 341 projects QET can open (examples, bugtracker, GitHub,
forum) give the same .qet through a .qetz; 181.6 MB of .qet became
36.9 MB of .qetz.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_019Wga9B92BNurDEtxxtCDxf
2026-10-11 06:24:29 +13:00
..
2026-10-10 16:49:39 +02:00
2026-10-11 06:24:29 +13:00
2026-10-11 06:24:29 +13:00
2026-10-10 16:49:39 +02:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-10-10 16:03:47 +02:00
2026-10-08 12:50:13 +13:00
2026-10-10 16:49:39 +02:00
2026-10-09 23:31:26 +13:00
2026-08-17 10:25:44 +02:00
2026-10-08 12:50:13 +13:00
2026-10-08 12:50:13 +13:00
2026-10-08 12:50:13 +13:00
2026-10-08 12:50:13 +13:00
2026-07-31 09:52:32 +12:00
2026-10-10 16:49:39 +02:00
2026-10-08 12:50:13 +13:00
2026-10-08 12:50:13 +13:00
2026-10-10 16:49:39 +02:00
2026-10-09 05:05:49 +13:00
2026-10-07 10:55:50 +02:00
2026-10-07 10:55:50 +02:00
2026-10-08 12:50:13 +13:00
2026-10-11 06:24:29 +13:00
2026-10-08 12:50:13 +13:00
2026-09-25 23:25:27 +12:00
2026-01-16 15:24:35 +01:00
2026-10-10 16:03:47 +02:00
2026-10-09 08:49:24 +02:00
2026-10-11 06:24:29 +13:00
2026-10-10 16:49:39 +02:00
2026-10-09 22:09:28 +13:00
2026-01-16 15:24:35 +01:00
2026-09-28 09:19:59 +13:00
2026-08-09 09:11:40 +02:00
2026-08-09 09:11:40 +02:00
2026-10-10 16:49:39 +02:00
2026-10-10 16:49:39 +02:00
2026-09-26 08:22:12 +12:00
2026-10-07 23:38:34 +02:00
2026-01-16 15:24:35 +01:00
2026-10-07 08:13:52 +13:00
2026-10-06 17:25:59 +02:00
2026-09-26 21:18:35 +12:00
2026-09-26 21:06:13 +12:00
2026-10-11 06:24:29 +13:00
2026-10-07 10:12:20 +13:00
2026-10-08 12:50:13 +13:00
2026-09-26 21:34:02 +12:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-10-06 17:26:46 +02:00
2026-10-10 16:49:39 +02:00
2026-10-10 16:49:39 +02:00
2026-10-03 08:43:27 +13:00
2026-10-03 08:43:27 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-30 10:31:12 +13:00
2026-01-16 15:24:35 +01:00
2026-09-09 11:45:36 +12:00
2026-10-07 10:12:20 +13:00
2026-10-07 10:12:20 +13:00
2026-10-06 21:09:41 +02:00
2026-10-10 16:49:39 +02:00
2026-10-10 16:49:39 +02:00
2026-10-08 12:50:13 +13:00
2026-10-03 18:09:33 +02:00
2026-09-29 23:23:32 +13:00
2026-09-29 23:23:32 +13:00
2026-10-02 21:04:54 +13:00
2026-09-22 09:07:27 +02:00
2026-09-28 06:16:17 +13:00
2026-09-26 21:40:32 +12:00
2026-10-07 18:38:25 +13:00
2026-10-07 18:38:25 +13:00
2026-09-27 11:16:37 +13:00
2026-01-16 15:24:35 +01:00
2026-09-07 20:54:18 +12:00
2026-10-10 16:49:39 +02:00
2026-10-07 18:34:51 +13:00
2026-10-10 16:49:39 +02:00
2026-10-10 16:49:39 +02:00
2026-10-07 21:17:38 +13:00
2026-09-27 21:54:44 +13:00
2026-09-07 10:44:30 +02:00
2026-09-07 10:44:30 +02:00
2026-10-08 12:50:13 +13:00
2026-04-26 10:48:47 +02:00
2026-07-14 19:27:16 +02:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-09-19 12:22:24 -05:00
2026-01-16 15:24:35 +01:00
2026-10-10 16:49:39 +02:00
2026-10-10 16:49:39 +02:00
2026-10-08 12:50:13 +13:00
2026-05-13 19:42:11 +02:00
2026-10-08 12:50:13 +13:00
2026-08-04 16:36:23 +12:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-09-26 10:22:50 +12:00
2026-10-08 12:50:13 +13:00
2026-09-27 21:54:36 +13:00
2026-10-07 10:12:20 +13:00
2026-10-07 10:12:20 +13:00
2026-10-08 12:50:13 +13:00
2026-10-07 10:12:20 +13:00
2026-10-08 06:04:35 +02:00
2026-10-08 12:50:13 +13:00
2026-04-19 10:44:52 +02:00
2026-10-07 18:38:25 +13:00
2026-10-07 18:38:25 +13:00
2026-10-10 20:27:01 +13:00
2026-10-09 10:00:31 +02:00
2026-09-28 14:55:04 +02:00
2026-09-28 14:55:04 +02:00
2026-09-16 15:40:41 +12:00
2026-09-16 15:40:41 +12:00
2026-10-08 12:50:13 +13:00
2026-06-20 22:31:06 +12:00
2026-10-07 01:51:00 +02:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-10-06 21:09:41 +02:00
2026-10-06 21:09:41 +02:00
2026-10-10 16:49:39 +02:00
2026-10-04 08:54:13 +13:00
2026-10-08 06:03:31 +02:00
2026-10-11 06:24:29 +13:00
2026-08-12 12:29:56 +02:00
2026-10-08 12:50:13 +13:00
2026-10-01 15:21:51 +13:00
2026-10-11 06:24:29 +13:00
2026-10-10 16:49:39 +02:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-10-11 06:24:29 +13:00
2026-10-10 16:49:39 +02:00
2026-10-10 16:49:39 +02:00
2026-10-10 16:49:39 +02:00
2026-10-09 05:05:49 +13:00
2026-10-08 15:29:05 +02:00
2026-10-08 12:50:13 +13:00
2026-10-07 19:31:42 +13:00
2026-08-05 05:26:57 +12:00
2026-08-05 05:26:57 +12:00
2026-10-06 21:09:41 +02:00
2026-10-06 21:09:41 +02:00
2026-10-11 06:24:29 +13:00
2026-10-11 06:24:29 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-09-20 12:45:07 -05:00
2026-09-19 12:26:06 -05:00
2026-08-16 07:16:33 +02:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-07-17 10:25:49 +02:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-09-17 00:07:46 +02:00
2026-09-17 00:07:46 +02:00
2026-08-09 01:34:22 +02:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-07-17 10:29:13 +02:00
2026-07-17 10:29:13 +02:00
2026-10-08 12:50:13 +13:00
2026-09-27 09:09:44 +02:00
2026-10-06 08:17:16 +13:00
2026-10-06 08:17:16 +13:00
2026-10-04 00:07:16 +13:00
2026-10-04 00:07:16 +13:00
2026-09-30 18:12:43 +13:00
2026-09-26 10:22:50 +12:00
2026-10-06 09:53:49 +02:00
2026-10-05 17:53:38 +02:00
2026-10-08 12:50:13 +13:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-01-16 15:24:35 +01:00
2026-10-08 12:50:13 +13:00
2026-10-07 08:13:52 +13:00
2026-10-07 08:13:52 +13:00
2026-10-07 08:13:52 +13:00
2026-10-07 07:05:12 +13:00
2026-10-06 09:14:35 +13:00
2026-10-01 21:18:12 +13:00
2026-10-01 21:18:12 +13:00
2026-10-08 12:50:13 +13:00
2026-10-01 16:50:56 +13:00
2026-10-04 01:43:37 +13:00
2026-10-04 01:43:37 +13:00