summaryrefslogtreecommitdiff
path: root/CHANGES
blob: 967f63b2daa8a5940433cfc3eab257af3f56d282 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
This is the changelog for Calamares. For each release, the major changes and
contributors are listed. Note that Calamares does not have a historical
changelog -- this log starts with version 3.2.0. The release notes on the
website will have to do for older versions.

# 3.2.22 (2020-04-08) #

This release contains contributions from (alphabetically by first name):
 - Anke Boersma
 - Camilo Higuita

## Core ##
 - Both the sidebar (on the left) and the navigation buttons (along the
   bottom of the window) can now be configured to use the traditional
   *widgets*, to use *qml*, or *hidden* from view (hiding the navigation
   is not recommended unless you have a pure-QML UI to run inside
   Calamares). The example QML that is compiled into Calamares has
   been improved. To use your own QML, put files `calamares-sidebar.qml`
   or `calamares-navigation.qml` into the branding directory.
 - The sidebar and navigation can now be placed on any side of the
   main window. This is probably only useful for QML-based UIs.
   See `branding.desc` for details.

## Modules ##
 - The *welcomeq* module has been improved with better layout and
   nicer buttons in the example QML form. (Thanks to Anke Boersma)
 - The *keyboardq* and *localeq* modules now provide some QML for
   configuring these parts, although they are still very primitive.
 - *netinstall* has had some minor layout fixes.
 - *unpackfs* has much more detailed progress reporting and no
   longer jumps around strangely in overall progress.
 - *partition* now correctly marks a partition as bootable in BIOS + MBR
   installs. #1175


# 3.2.21 (2020-03-27) #

This release contains contributions from (alphabetically by first name):
 - Anke Boersma
 - Camilo Higuita
 - Gabriel Craciunescu
 - Gaël PORTAY

## Core ##
 - Python job modules (such as *unpackfs* or *packages*) can now provide
   a `pretty_status_message()` function, like the existing `pretty_name()`
   function, that is used to update the status during install. #1330
 - QML support-modules and objects are now registered into the io.calamares
   namespace. This affects modules using Calamares models inside their
   QML UI (at this point, very few). With this release, the necessary
   `import` for Calamares parts looks like
   > ```import io.calamares.ui 1.0```
   A complete list of objects available from Calamares van be found in the
   documentation in `Qml.h`.
 - The sidebar (which shows overall progress in the installation) is now
   more configurable: the branding key *sidebar* controls it. The sidebar
   can be shown as a widget (default, as it has been), hidden, or use a
   new QML view which is more easily customised.
 - A new `settings.conf` key *quit-at-end* will automatically close
   Calamares (by clicking on the *Done* button) when the end of the
   sequence is reached. If *finished* is the last module in the sequence,
   this will run whatever it is configured for; you can also leave out
   the finished page and Calamares will close after the exec parts.

## Modules ##
 - *packages* now reports more details in the installation progress-bar.
 - *netinstall* module supports an `expanded` key, which will pre-expand
   a group (as if the user had pressed the arrow-button in the tree-view).
   This only affects the UI, and only the **outermost** level of groups.
 - *netinstall* module now supports a special value for *groupsUrl*.
   Setting this to *local* will read the groups directly from the
   configuration file.
 - *netinstall* groups now support a new key `immutable` which prevents
   their check-state from being changed (they are shown, or hidden,
   as usual and can be expanded).
 - Modules that use QML need a new import line. The QML file for the
   module is configured through new keys *qmlSearch* and *qmlFilename*
   (previously those were without the `qml` prefix, which invites name
   collisions). The full module identifier is also used as a filename,
   so that multiple instances of a module can use different QML files.
 - *partition* module has a number of new features and settings for
   type, UUID, and filesystem characteristics. Thanks to Gaël.


# 3.2.20 (2020-02-27) #

This release contains contributions from (alphabetically by first name):
 - Bart Ribbers

## Core ##
 - When logging level is set to 8 (eight), for instance via the `-D8`
   logging flag, or the `-d` debug flag, the *Show debug information*
   button will appear in the progress view. This helps with debugging
   issues where the `-d` flag would be inappropriate.
 - Calamares now starts at logging level 1 (warnings and errors to
   the console) by default. Previously it (wrongly) started at level 8.

## Modules ##
 - The *partition* module now stores which filesystems are in use in
   global storage.
 - The *contextualprocess* module now understands "compound variable
   names", where a dot (.) is used to index into structured data
   stored in global storage. This allows it to use the map stored
   by the partition module (but also other things, like looking into
   the branding information).
 - The *packages* module now understands "apk", the Alpine Linux
   package manager.


# 3.2.19.1 (2020-02-24) #

This is a hotfix release for bugs in the *users* module.
Reported by Philip Mueller and Walter Lapchynski.

## Modules ##
 - The *users* module no longer wrote `/etc/hostname` at all.
 - The *users* module erroneously shows the root password input fields.
 - The *initramfs* module sets a resume-hook even when there is no swap.
 - The partitioning service expects *udevadm* in `/sbin`, but some
   distro's place it elsewhere.
 - The mount service didn't unmount directories properly, leading to
   blocked installations.


# 3.2.19 (2020-02-21) #

This release contains contributions from (alphabetically by first name):
 - Anke Boersma
 - Camilo Higuita
 - Gabriel Craciunescu

## Core ##
 - *Assamese* translation has been completed.
 - Translations are now loaded from more places: instead of **only**
   being compiled in to the Calamares executable, they can now be
   read from the current directory (when Calamares is run in developer
   mode) and from the application data directory.This allows updating the
   translations without requiring a recompile: helpful for translators
   and possibly for distributions with their own translation style.
   See the translators and deployers wiki for details.
 - A new `ViewStep` base class, `QmlViewStep`, has been added that loads
   a configurable QML file and plays it. This is used by the new *notesqml*
   module -- which is in itself a minimal wrapper around the same that
   adds only a translatable module name.

## Modules ##
 - The *machineid* and *users* modules now prefer high-quality random
   data from `/dev/urandom` rather than pseudo-random data. #1254
 - A new *notesqml* module supports loading QML. This can be used for
   "fancy" release notes as a QML application, rather than a webview
   or text widget. Note that this does not replace the slideshow-during-
   installation module.
 - The *users* module now has knobs for setting the hostname and writing
   the `/etc/hosts` file. The new configuration options are documented
   in `users.conf`. #1140
 - Multiple *netinstall* modules can exist side-by-side, and they each
   control the package installation for their part of the package list.
   Previously, a netinstall module would overwrite all of the package
   configuration done by other netinstall modules. Translations can be
   provided in the configuration file, `netinstall.conf`. #1303
 - The *fstab* module no longer "claims" all the swap partitions it finds
   on disk. It only uses swap specified for the current installation.
   This means that "replace" and "alongside" installations will have
   no swap configured in the target system.


# 3.2.18 (2020-01-28) #

This release contains contributions from (alphabetically by first name):
 - Bill Auger

## Core ##
 - *Assamese* translation has been added (still in preliminary state).
 - Timezone support code has migrated into the core of Calamares. This
   means that modules now have easier access to timezone information.
   Translations for timezones have also been enabled, so it is **possible**
   at least to translate the displayed zones in the *locale* module.
 - Branding can now specify whether to (try to) display the Calamares window
   in the middle of the desktop or not. The *windowPlacement* key in
   `branding.desc` specifies *center* or *free* placement.

## Modules ##
 - All modules can now set a new key in `module.desc` called *noconfig*.
   If this key is set to `true` (the default is `false), no configuration
   file is searched-for or loaded, and no warning is printed if the
   configuration is missing. This should tidy up some unnecessary warnings
   on startup. #1302 #1301
 - The *license* module has seen a significant change to its looks.
   Actions are now labeled more clearly, and the URL (or filename)
   for each license is displayed.
 - The *locale* module now supports translations for timezone and
   location names (e.g. "Berlin" is "Berlijn" in Dutch).
 - *Packagechooser* is a little more careful with displaying
   default and empty package names. (thanks to Bill Auger)
 - The *unpackfs* module now carries a larger weight in the overall
   progress of the installation, which should resolve downstream reports
   like "progress stops at 24% for a long time". This is currently
   hard-coded, but will become configurable in a future release. #1176


# 3.2.17.1 (2019-12-02) #

This is a hotfix release for a bug in the grubcfg module.
Reported by Philip Mueller and Erik Dubois.

## Modules ##
 - The *grubcfg* module had a typo in it that made installations fail.


# 3.2.17 (2019-11-28) #

This release contains contributions from (alphabetically by first name):
 - Bill Auger

## Core ##
 - A translation "string freeze" is now enforced by the release scripts.

## Modules ##
 - A new module, *hostinfo*, places information about the host into
   Global Storage. This can support contextualprocess modules that
   need that information.
 - The password-checks in the *users* module are now ordered consistently.
   A new check *nonempty* can be used to explicitly check for a non-empty
   password. This was previously hard-coded. If you have no other
   password-requirements set (e.g. minimum-length) and rely on
   Calamares to filter out empty passwords, add this check.
 - The *grubcfg* module has a new configuration setting *keepDistributor*
   which prevents replacing the `GRUB_DISTRIBUTION` line when writing
   the new configuration. #1201
 - *packagechooser* documentation has been updated.
 - *welcome* module now works better with dark themes.
 - The *license* module could get into a confused state, now fixed. #1271


# 3.2.16 (2019-11-01) #

This release contains contributions from (alphabetically by first name):
 - Bill Auger

## Core ##
 - Some obscure build scenarios which would lead to bogus module-is-
   misconfigured messages on startup have been resolved.

## Modules ##
 - The explanatory messages on the *users* page have moved to tooltips,
   and placeholder text has been added to the fields. #1202
 - The bad-password messages in the *users* page have been improved. #1261
 - Password-checking in the *users* module has been substantially
   changed. A new key *allowWeakPasswords* can be used to introduce
   an additional checkbox to the page, which can then be used to
   switch off strict password checking. (Thanks to Bill Auger)
 - The icons used in password warnings on the *users* page have been
   changed to the colorful status icons (rather than the thin red X).


# 3.2.15 (2019-10-11) #

This release contains contributions from (alphabetically by first name):
 - No other contributors this time around.

## Core ##
 - No changes to core functionality

## Modules ##

 - *displaymanager* module now treats *sysconfig* as a regular entry in the
   *displaymanagers* list, and the *sysconfigSetup* key is used as a
   shorthand to force **only** that entry in the list. #1253
 - *machineid* module has been re-written in C++ and extended with
   a new configuration key to generate urandom pool data. #1252
 - *unpackfs* now supports a special *sourcefs* value of `file`
   for copying single files (optionally with renaming) or directory
   trees to the target system.
 - *unpackfs* now support an *exclude* and *excludeFile* setting for
   excluding particular files or patters from unpacking. #1229


# 3.2.14 (2019-09-30) #

This release contains contributions from (alphabetically by first name):
 - Andrius Štikonas
 - Harald Sitter

## Core ##
 - No changes to core functionality

## Modules ##

 - *locale* module no longer recognizes the legacy GeoIP configuration.
   This has been deprecated since Calamares 3.2.8 and is now removed.
 - *packagechooser* module can now be custom-labeled in the overall
   progress (left-hand column). #1228
 - *displaymanager* module now recognizes KDE Plasma 5.17.
 - *displaymanager* module now can handle Wayland sessions and can detect
   sessions from their .desktop files. #1247 #1248
 - *unpackfs* now has special handling for *sourcefs* setting "file"
   (so you can copy single files or directories that are on the source
   system, directly to the target). #1188 #1181


# 3.2.13 (2019-08-30) #

This release contains contributions from (alphabetically by first name):
 - Arnaud Ferraris
 - Arnaud Rebillout
 - Bill Auger
 - Kevin Kofler

## Core ##

- The Calamares standard coding style -- embodied in `ci/calamaresstyle`
  has had a few updates and has now been consistently applied across
  the core codebase (e.g. libcalamares, libcalamaresui, calamares, but
  not the modules).
- *KCoreAddons* is now a required dependency. This lets us drop a chunk
  of code that was copied from KCoreAddons years ago, and use the
  (maintained!) upstream version instead. It also gives us KMacroExpander
  everywhere, which will simplify code for handling substitutions
  in configuration files.
- *Slideshows* now have a new property *activatedInCalamares* which
  controls the keyboard shortcuts (and can control timers and other
  properties of the slideshow, too).

## Modules ##

- The *packagechooser* module can load data from the config-file,
  from AppData XML files referred by the config-file, and (new) also
  from AppStream caches by referring to an application's AppStream id. #1212
- The *partition* module now understands the units *KB*, *MB*, *GB* which
  are powers-of-ten sizes, alongside the powers-of-two sizes that it already
  used. (thanks to Arnaud)
- The *welcome* module now supports a *Donate* button if *showDonateUrl*
  is set to a non-empty URL. #1197
- The *welcome* module can have URLs for the various buttons configured
  directly in the module configuration (rather than in `branding.desc`).


# 3.2.12 (2019-08-07) #

This release contains contributions from (alphabetically by first name):
 - apt-ghetto
 - Bill Auger
 - embar

## Core ##

 - Preliminary work to allow jobs to have a *weight* assigned to them
   has been added. This will allow the progress bar to better reflect
   progress by the amount of work done rather than purely by the
   number of jobs. (Thanks to Bill Auger)
 - Preliminary work has been added to post the installation log to a
   pastebin for bug reporting. (Thanks to Bill Auger)
 - Support for translated human-readable strings in Calamares
   config files has been added. This is used only in the *packagechooser*
   module (see below) but will expand to those modules that need
   user-visible strings from the configuration file (existing
   solutions need either gettext or Qt support).
 - Esperanto is now available when Qt version 5.12.2 or later is used.

## Modules ##

 - *fstab* A new configuration key *efiMountOptions* has been added, to
   allow setting filesystem options specifically for the EFI partition.
   (Thanks to apt-ghetto)
 - *packagechooser* is a new module for low-density package choices,
   e.g. for selecting a default desktop environment, or adding some
   proprietary drivers, or chosing browsers of office suites. It presents
   **one** collection of items -- at most ten or so, because of the UI --
   and the user can select zero or more of them. The behavior is
   configurable, and package information can be set through the Calamares
   configuration file or by reading AppData files for the packages. #426


# 3.2.11 (2019-07-06) #

This release contains contributions from (alphabetically by first name):
 - No other contributors this time around.

This is a security release with no functional changes (except for
improved security) relative to 3.2.10. The Calamares team would like
to acknowledge the help of the following people in reporting and
understanding the issues (alphabetically by first name):
 - Kevin Kofler
 - Seth Arnold
 - Simon Quigley
 - Thomas Ward
Both CVE's have been resolved.

## Core ##

No core changes.

## Modules ##

 - *initramfs* could create an initramfs with insecure permissions.
   Since the keyfile is included in the initramfs, an attacker could
   read the file from the initramfs. #1190 CVE-2019-13178
 - *luksbootkeyfile* created a key file where a window of opportunity
   existed where the key file could have too-lax file permissions.
   #1191 CVE-2019-13179


# 3.2.10 (2019-06-28) #

This release contains contributions from (alphabetically by first name):
 - No other contributors this time around.

Distributions are **advised** to check the slideshow they use for the
installation step; changes in loading and translation mechanisms may
require changes in the slideshow.

## Core ##

 - With this release, option *WITH_PYTHONQT* changes default to **off**.
   There does not seem to be any serious use of the PythonQt API and
   the UI opportunities it offers, so begin the process of deprecating
   and removing that. Sometime in the future, QML pages will fill the
   gap for easily-prototyped-yet-slick UI elements.
 - A crash when no *finished* page (or rather, no page at all) is
   configured after the last *exec* section of the sequence has been
   solved. The *finished* page can be left out (but then you don't get
   the restart-now functionality). #1168
 - The *slideshow* which is run during installation now has API versions.
   API version 1 (the default) runs as before, where the slideshow is loaded
   when the installation starts. API version 2 loads the slideshow on
   Calamares startup, thus improving responsiveness. Documentation
   in `src/branding/README.md`. #1152
 - The example slideshow now uses API version 2.

## Modules ##

 - *initramfs* has been changed from a Python module to a C++ module.
   Packaging will need to adjust now it installs a .so instead of a .py.
   The module itself functions as before. It does have a new configuration
   option, to change the version passed as to the `-k` option of
   update-initramfs. #1180
 - *partition* Now has its own setting for *requiredStorage*, duplicating
   the same setting in the *welcome* module. This is useful for
   configurations where no *welcome* module is used, but a minimum
   size must be checked anyway. #1169


# 3.2.9 (2019-06-03) #

This release contains contributions from (alphabetically by first name):
 - Kevin Kofler

## Core ##

No user- or deployer-visible changes. Bugfixing as usual, see the
milestone for details.

## Modules ##

 - *branding* now supports os-release variables in the *strings* section,
   which allows re-using (at runtime) information set in /etc/os-release .
   This requires KDE Frameworks 5.58. #1150
 - *branding* allows the use of FreeDesktop.org icon names for the
   *productLogo* and *productIcon* keys. If a file is named there, then
   the file is used, and otherwise the icon is looked up in the current
   theme. #1160
 - *packages* On Arch, with the `pacman` package manager, avoid a hang
   during system update. #1154
 - *welcome* allows a custom image path or icon name to be set for the
   language-selection drop-down (instead of the international standard one).


# 3.2.8 (2019-05-10) #

This is a **source-incompatible** release of Calamares. Include files
have been shuffled around, so third-party C++ modules will need
adjustment to the changed names.

This release contains contributions from (alphabetically by first name):
 - Arnaud Ferraris
 - Kevin Kofler

## Core ##

 - All user-visible texts referring to "MB" and "GB" now use the standard
   "MiB" and "GiB" wording, which matches what we were actually calculating
   with (i.e. 2^20 and 2^30 respectively). #1129
 - The side-pane, which shows the list of steps that will be executed,
   now tries to fit the text (name of each module) into the available space
   by shrinking the font as needed. #1137
 - *libcalamares* (accidentally) linked with Qt's GUI libraries when
   PythonQt was found. This led to the odd situation where the non-GUI
   Calamares library depends on a bunch of GUI libraries.
 - *libcalamares* The `utils/` subdirectory has been hugely refactored,
   with functionality split out into separate files. C++ modules will
   need to have their `#include` names updated. Basically, users of
   `utils/CalamaresUtils.h` will need to include the header file for
   the functionality that is actually used.

## Modules ##

 - *finished* has a new mechanism for configuring the behavior of the
   *restart now* button. The old-style boolean configuration is still
   supported but generates a warning. #1138
 - *locale* module GeoIP configuration has a new preferred format.
   See `locale.conf` for details. The old configuration is still
   supported but will be phased out before 3.3.0 -- in particular,
   support for "legacy" format will be removed, since that was a
   crutch for the disappearance of one GeoIP provider in 2018.
 - *oemid* is a new module for configuring OEM phase-0 (image pre-mastering,
   or pre-deployment) things. It has limited functionality at the moment,
   writing only a single batch-identifier file. #943
 - *welcome* can now do GeoIP lookups as well (but be careful with the
   configuration, since you need a GeoIP that provides country information,
   not just timezones). This will let Calamares select a starting language
   that matches where it is -- which might not be useful at all. #934
 - All Python modules now bail out gracefully on (at least some) bad
   configurations, rather than raising an exception. The pre-release
   scripts now test for exceptions to avoid shipping modules with
   ImportError or SyntaxError results.


# 3.2.7 (2019-04-27) #

This is a **hotfix** release for regressions introduced in the
Python modules. The *localecfg* module was unusable because of
a missing `import`.


# 3.2.6 (2019-04-25) #

This release contains contributions from (alphabetically by first name):
 - Arnaud Ferraris
 - Dominic Hayes (feren)
 - Raul Rodrigo Segura (raurodse)

## Core ##

 * Under-the-hood code cleanups in lots of parts of the core. Calamares now
   builds without warnings when Clang 8 is used.
 * A new *disable-cancel-during-exec* setting provides more fine-grained
   control than *disable-cancel*, which hides the button entirely.
   #1122 (Thanks to Dominic, FerenOS)
 * A branding module can now also cause a stylesheet to be loaded, which
   will be applied to the widgets inside Calamares. #961 (Thanks to Raul)

## Modules ##

 * All of the Python-based modules now have translations enabled. #991
 * *Displaymanager* module has improved support for LightDM configuration.
   #1123 (Thanks to Dominic, FerenOS)
 * *License* module can now display local files inline, and scrolls to
   allow longer lists of licenses and to support long license texts
   displayed inline. #1124 #1125 #1052
 * *Partition* module has additional checks for validity partition layouts.
   #1127 (Thanks to Arnaud)
 * *Welcome* module has improved usability: a standard icon
   alongside the *Language* label, for improved recognition,
   and improved language-list display and sorting. #1107


# 3.2.5 (2019-04-15) #

This release contains contributions from (alphabetically by first name):
 - Arnaud Ferraris
 - Dan Simmons
 - Gabriel Craciunescu

## Core ##

 * View modules (in C++) can now perform their own requirements-checking
   to see if installation makes sense. This expands upon the existing
   requirements checks in the welcome module (RAM, disk space, ..).
   The checks have been made asynchronous, so that responsiveness during
   requirements-checking is improved and the user has better feedback.
 * Support for building an AppImage of Calamares has been added to the
   `ci/` directory. There are use-cases where a containerized build and
   configuration make sense rather than having Calamares installed in the
   host system. (Thanks to the AppImage team, Alexis)
 * OEM mode (phase-1) now correctly refers to Calamares as a "Setup Program"
   rather than an installer. #1100 (Thanks to Arnaud)

## Modules ##

 * *Bootloader* module: a serious bug introduced in 3.2.4 which prevents
   succesful boot after installation on EFI machines, has been repaired.
   (Thanks to Gabriel) #1104
 * *Displaymanager* module: it is no longer a fatal error to not have any
   display-managers. #1095
 * *Partition* module: it is now possible to build without libparted. Since
   KPMCore may not need this library anymore, it is a dependency that will
   be dropped as soon as it is feasible. Add this to the CMake flags:
   `-DCMAKE_DISABLE_FIND_PACKAGE_LIBPARTED=ON`
 * *Partition* module: the location that is selected for the bootloader,
   no longer changes when a new partition is created. #1098
 * Python modules: several modules have had translations added. This is
   usually only visible when the module runs as part of the *exec* step,
   when the module's *pretty name* is displayed. In addition, some error
   messages are now translated.
 * *UnpackFS* module: improved progress reporting and tests. #565


# 3.2.4 (2019-02-12) #

This release contains contributions from (alphabetically by first name):
 - Alf Gaida
 - aliveafter1000
 - Arnaud Ferraris
 - Caio Jordão Carvalho
 - Collabora LTD
 - Gabriel Craciunescu
 - Kevin Kofler
 - Philip Mueller
 - Scott Harvey

## Core ##

 * The Calamares application now recognizes the `-X` or `--xdg-config`
   option, which adds XDG_DATA_DIRS to the places used to find QML
   and branding directories, and XDG_CONFIG_DIRS to the places used
   to find the global settings and module configurations. This allows
   a more fine-grained, and more layered, approach to setting up
   Calamares configurations (in particular, distro's can **add**
   configuration files and give them priority, instead of **forking**
   configuration files).
 * The *branding* file now contains settings that control the size
   and resize behavior of Calamares. See the branding file for
   more documentation. In particular, the setting *windowExpanding*
   can be set to *normal*, *fullscreen* or *noexpand*.
 * The `settings.conf` file can now configure whether the *Cancel* button
   is shown (this isn't a branding thing, because it's quite fundamental
   to the workflow of the installer).

## Modules ##

 * The *partition* module supports RAID devices, but only when Calamares
   is compiled with the newest KPMCore release (3.3.0).
 * The calculation of required space -- including swap -- has been simplified,
   and Calamares no longer reserves 2GiB of space in calculations for internal
   use (this means that it no longer mysteriously drops swap when the disk
   size is close to the required installation size).
 * The name of the type of default filesystem (e.g. ext4 or btrfs) is now handled
   case- and localization-insensitively. This means that *btrfs* is now always
   an acceptable spelling.
 * The currently-selected disk device is remembered between manual partitioning
   and the partitioning-overview pages. (Thanks to Arnaud)
 * *partition* There is new support for partitioning layout presets.
   See `partition.conf` for documentation and details.
 * The *keyboard* module now handles the (bogus) Austrian keymap for
   the system console properly. (Thanks to Kevin)
 * The *preservefiles* module now has a mechanism for setting the permissions
   (and ownership) of preserved files. (Thanks to Scott)
 * New module *fsresizer* can be used to resize filesystems. It is intended
   for use in OEM installs where an image of fixed size is created,
   and then sized to the actual SD card the user has used.
 * The *mount* module now handles missing *extraMounts* and *extraMountsEfi*
   keys gracefully (this is probably a misconfiguration, though, and gives a
   warning).
 * The *packages* module now supports pre- and post-script options
   for all operations, not just during install (keep in mind that
   these run as three separate shells, though).
 * A new *rawfs* module supports straightforward copying of filesystems from
   the installation media to the target stystem. This can be used, for instance,
   for block-level-identical installations.


# 3.2.3 (2019-01-09) #

This release contains contributions from (alphabetically by first name):
 - aliveafter1000

## Core ##

There are no core changes in this release.

## Modules ##

 * *partition* Fixed bug where, during detection of existing systems, the
   existing system partitions may be mounted and then files deleted.
   This is a **limited** version of the patch from aliveafter1000
   that will be in 3.2.4, which tries harder to mount filesystems
   read-only and unmodifiable.
 * *locale* It was possible to set the installer and system language
   (e.g. to German) while the global storage value for *locale*
   remained set to English. Then no localization packages are installed
   (see feature `${LOCALE}` in `packages.conf`). Reported downstream
   in Netrunner.


# 3.2.2 (2018-09-04) #

This release contains contributions from (alphabetically by first name):
 - Andrius Štikonas
 - artoo@cromnix.org
 - Caio Jordão Carvalho
 - Harald Sitter
 - Philip Müller
 - Simon Quigley
 - Walter Lapchynski

## Core ##

 * Example configurations are **no longer installed** by default.
   The default setting for *INSTALL_CONFIG* has changed. Distributions
   are strongly encouraged to write their own configuration files and
   not rely on the example configuration files. Example configurations
   may change unpredictably.
 * It is now possible to express module dependencies through the
   *requiredModules* key in `module.desc`. All of the required modules
   for a given module must occur in the sequence **before** the module
   requiring them. None of the core modules use this facility.
 * The search paths for QML files, branding descriptors and module
   descriptors have been revamped and now self-document in the log.
 * A new `ci/RELEASE.sh` script has been added to streamline releases;
   it is not guaranteed to work anywhere in particular though.

## Modules ##

 * When multiple modules are mutually exclusive, or don't make sense
   to enable concurrectly, a new `USE_<foo>` framework has been added
   to CMake to simplify the selection of modules. This is in addition
   to the existing `SKIP_MODULES` mechanism.
 * Various off-by-one-sector errors in the automatic partitioning
   mode have been corrected. In addition, swap space is calculated
   a little more conservatively.
 * A new module has been added to the core which can configure openrc
   services. To make services configuration consistent:
   - The *services* module has been **renamed** *services-systemd*,
   - The openrc module is named *services-openrc*,
   - At CMake time, it is possible to select all of the services modules,
     or one specific one, by setting the *USE_services* CMake variable.
     By default, all of the modules are built and installed.
 * The systemd-services module can now disable targets and mask both
   targets and services (which will allow you to break the system with
   a bad configuration). The configuration is a little more flexible
   because a service (or target) name can be used on its own with
   sensible defaults.
 * The displaymanager module has been entirely revamped. A long-standing
   bug which ignored the settings for default desktop has been fixed
   (thanks to Walter Lapchynski). Translations have been added to the
   error messages. Each DM now has an implementation class for doing
   all the configuration steps it needs. This groups the code needed for
   a specific DM (and presumably, per-distro) in one place.
   Distro's are **strongly advised** to re-test their DM configuration
   and installation with the revamped code.

# 3.2.1 (2018-06-25) #

This release contains contributions from (alphabetically by first name):
 - Bill Auguer
 - Gabriel Craciunescu
 - Phil Mueller
 - Raul Rodrigo Segura

## Core ##

 * Qt 5.7 is now the minimum required Qt version. Because KPMCore
   (a fairly fundamental dependency) requires Qt 5.7, Calamares
   has followed suit.
 * New testing application `loadmodule` for loading and running a
   single Calamares module.
 * New translations Belarussian and Korean.
 * Jobs can now be *emergency jobs* which run even after a failure.
 * Improved debugging when modules fail to load.
 * Bad configuration files will now cause the user-interface of
   Calamares to display an error message, rather than silently
   ignoring some configuration errors. This will certainly cause
   problems for distributions with sloppy configurations.

## Modules ##

 * New module preservefiles, keeps (log) files around after install;
   this duplicates functionality with the unmount module, but unmount
   is very late, rather limited, and fragile.
 * Interactiveterminal module now disables itself if build requirements
   are not met, rather than blocking the build.
 * Fixes in the timezone map data make the southern hemisphere more
   usable and put Reykjavik in its place.
 * The packages module can now update the target system if explicitly
   told to do so.
 * More paths and executables are configurable in the bootloader module.
 * Distributions are advised to review the `users.conf` setup **again**,
   as some changes in version 3.2.0 caused regressions downstream.
 * Distributions are advised to review their `locale.gen` files
   **again**. Previous changes were too restrictive, matching only
   the specific format Chakra Linux uses. Calamares now preserves
   all the comment-lines in the file and writes enabled locales
   at the end, with a descriptive comment.

# 3.2.0 (2018-05-17) #

This release contains contributions from (alphabetically by first name):
 - Alf Gaida
 - AlmAck
 - Caio Jordão Carvalho
 - Frede H

## Modules ##

 * UI annoyances in the partitioning module were fixed; the
   mount-point selector is now more obvious when no mount-point
   has been chosen, and the mount-point and flags are preserved
   when (re)editing partitions.
 * The handling of `@@ROOT@@` substitution in shellprocesses was
   backwards; this has been fixed (the substitution is made when
   running in the **host**).
 * The user shell is no longer hard-coded to `/bin/bash`,
   but follows the default setting for useradd(8), e.g.
   those set in `/etc/default/useradd`.