-
Notifications
You must be signed in to change notification settings - Fork 115
/
NEWS
3085 lines (2701 loc) · 124 KB
/
NEWS
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
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 1.0.3
~~~~~~~~~~~~~~
Released: 2024-04-24
Features:
* validator: Check that description lists don't get translated
* validator: Improve translation checks for descriptions
* cli: compose: Allow to propagate selected custom entries to catalog output
* validator: Check for common typo of "scheme_preference" branding property
* xml: Generate a developer_name compat tag for older 3rd-party parsers
* validator: Flag duplicate branding colors as invalid
* Add Plasma Mobile as recognized desktop-style
Specification:
* docs: Clarify a developer element is not allowed to exist multiple times
* docs: Explicitly clarify a developer/name element must not be repeated
* docs: Clarify metainfo translation rules a bit
Bugfixes:
* qt: Fix relocation of Config.cmake files
* cli: check-syscompat: Recognize available required controls as available
* validator: Guard issue emission functions with G_GNUC_PRINTF
* validator: Always use secure string formatting for issue emit function
* utils: Explicitly set format style when installing catalog metadata
* Suppress static-analyzer drawing wrong conclusions on GCC 14
Miscellaneous:
* docs: List AppStreamCompose as related to AppStream
* docs: Add manpages back
* validator: Mark developer-id-missing as info-priority again
Contributors:
JakobDev, John Zimmermann, Matthias Klumpp, Max Buchholz, tytan652
Version 1.0.2
~~~~~~~~~~~~~~
Released: 2024-02-24
Features:
* qt: Allow building for multiple Qt major versions at once
* Improve low-quality category check and extend its blacklist
* validator: Add some limited developer-ID validation
* validator: Emit an overridable warning if homepage URL was omitted
* compose: Allow rendering vector graphics to HiDPI bitmaps unconditionally
* compose: Allow setting a custom icon-policy on the command-line
Specification:
* docs: Mention that <summary/> tag can be translated
* docs: Generate validation issue tag documentation from code
* docs: Add information on how to exclude elements from translation
* spec: Recommend using rDNS strings or Fediverse handles as developer-ID
* spec: Make launchable requirement for desktop-apps more strict
Bugfixes:
* qt: Component::customValue should be const
* validator: Remove mention of shorthands from relation-display-length-value-invalid
* sysinfo: Swap arguments of g_pattern_match_simple
* qt: Add missing screenshot sorting function
* qt: pool: Add missing Q_EMIT keyword
* validator: Improve error message if no valid categories were found
* validator: Make some length limitations more strict
* validator: Only emit developer-name-tag-deprecated once
* validator: Ensure filename is properly included in location info again
* validator: Improve error reporting on images with missing/bad locales
* compose: Don't accidentally set icon scale to 0 in some cases
* compose: Add heuristics to show out-of-scope errors if filters were set
* Don't prematurely abort URL validity check during semi-large redirects
* docs: Update supported hashsums to reflect reality
* docs: Describe version comparison letters special case
* docs: Clarify release descriptions *must not* contain embedded URL
* docs: Explicitly mention /var/cache/swcatalog is a valid catalog data location
* tests: Fix tests with old & new FontConfig
* its: Allow untranslatable developer/name and agreement sections
Miscellaneous:
* compose: Clarify that "no valid category" can mean bad ones were ignored
* news-convert: Don't strip out the last text in brackets
Contributors:
Aleix Pol, Alexander Wilms, Fabio, Kolja, Matthias Klumpp, Patrick, ratijas
Version 1.0.1
~~~~~~~~~~~~~~
Released: 2023-12-16
Bugfixes:
* Fix lib name for Qt5 link target
* meson: Pass -D_DARWIN_C_SOURCE on darwin
* Fix macOS build
* stemmer: Resolve potential issue where stemmer may never be initialized
* cli: Don't fail what-provides if components were found
* Fix query element order for what-provides queries
* validator: Demote developer-name-tag-deprecated to info severity for now
* content-rating: Fix missing or wrong value descriptions for rating IDs
* curl: Add transfer speed timeouts for HTTP downloads
* curl: Retry operations on potentially transient errors
Miscellaneous:
* validator: Improve hint for content-attribute-value-invalid
* Allow building without zstd temporarily
Contributors:
Antonio Rojas, Bobby Rong, Matthias Klumpp, Rui Chen
Version 1.0.0
~~~~~~~~~~~~~~
Released: 2023-11-11
Notes:
* This version breaks API and bumps the SONAME of libappstream!
Applications using AppStream will have to be ported to the new API.
The 1.0 release is coinstallable with the stable 0.16.x series.
Features:
* Autoformat C and C++ sources
* Remove all deprecated symbols
* Drop support for many deprecated AppStream XML features
* Use GPtrArray to expose keywords list
* Add length argument to raw metadata parsing functions
* Add component array container class
* Remove named values for display_length relations
* Make AsPool only accept/return component boxes
* Port all API away from per-entity locale overrides
* Reduce appstream.conf to its essentials, make it work on stateless systems
* Hide search engine details from public API
* Wrap release entries in AsReleaseList container class
* Make AsMetadata handle AsReleaseList objects
* Refactor is_satisfied result into new RelationCheckResult class
* Add a method to check all relations of a component and get the result
* Add algorithm to score compatibility with a system, add chassis templates
* ascli: Add new check-syscompat command to check chassis compatibility
* Implement environment property for component screenshots
* Autogenerate translatable DE and gui-environment-style C arrays
* Expose more advanced markup conversion function, update function names
* Allow BLAKE3 and SHA512 checksums for release artifacts
* Stop supporting mailto: URLs in <url/> tags
* validator: Improve API and simplify it
* validator: Parse XML in pedantic mode when validating
* validator: Check screenshot environment property
* validator: Only apply summary-has-dot-suffix check to untranslated strings
* compose: Allow creating metadata with complete URLs and no base URL
* spdx: Add API to retrieve a translated license name from an SPDX ID
* qt: Switch to building with Qt6
* qt: Make it possible to iterate ComponentBox
* qt: Implement AppStream::ComponentBox::erase
* qt: Allow concatenating two ComponentBoxes
* qt: Allow loading Pool asynchronously
* qt: Use ComponentBox/Releases in Qt bindings as well
* qt: Add support for the new API to check relation satisfaction
* qt: Maintenance and namespace fixes, use cPtr() to get C pointers everywhere
* bundle: Add linglong as a new type of bundle
* Add GUI environment IDs for macOS and Microsoft Windows
* validator: Check if Release Description is inside description tag
* validator: Add validation for content_rating
* Add support for building on Win32
* win32: change some file/path-related code for portability
* Implement the developer element for unique developer IDs
* Implement scaling factor for screenshots
* component-box: Allow removal of components by-index
* Implement support for external references and citations
* Implement usertags for release data as well
* Move ValueFlags to the context, instead of tieing them to components
* pool: search: Add additional weight for exact substring matches on names
* sysinfo: Add memory size detection support for macOS
* Add support for Zstd for on-disk data compression
* utils: Make tar unpacker independent of zstd binary presence
* Drop Python2 provided tag support
* data: Add ‘Endless’ to the list of desktops
* Add NetBSD support
Specification:
* Drop (most) deprecated information
* docs: Clarify environment-based screenshot ordering
* Add new 'snapshot' release kind
* docs: Build all API documentation with gi-docgen
* spec: Document the new "developer" element
* spec: Document the "reference" tag for registry references
* docs: Add example of YAML for references elements
* Allow hyphens in the last segment of a component-ID
* docs: Drop outdated information from l10n quickstart guide
Bugfixes:
* meson: check for docbook xsl stylesheets
* Fix tweaking of appstream.pc when building as subproject
* Fix crash in asc_l10n_search_translations_qt()
* qt: Make Qt6 dependency a system dependency.
* meson: do not rely on an exe wrapper
* meson: do not -I/usr/include when !stemmer
* meson: Prevent building attempts with MSVC
* meson: Use an SPDX license indentifier in project(license:)
* Add meson overrides
* compose: Set lower-cased CID for synthesized components again
* compose: Set lower-cased CID in desktop-entry parse function
* compose: Honor prefix in font search
* compose: Select the correct default icon glyphs for fonts
* Don't crash when non-YAML documents are read as YAML
* Do not override default-priority when parsing multiple metadata files
* Ensure stemmer always has the right locale and token-search works
* Require a more recent libxmlb to avoid crashes
* Rename component get_releases to indicate that releases may not be loaded from the web
* Prevent string-id validation functions from matching source comments
* Don't define _POSIX_C_SOURCE when building for NetBSD
Miscellaneous:
* Explain metainfo-ancient error in more detail
* Make sed invocation more portable
* Add FreeBSD CI
* Allow variable shadowing in C++ code
* Drop the catchall as-enums unit
* vapi: Drop unneeded metadata
* Make AsMetadata return a component box for multiple components
* apt: Make item descriptions more human-friendly
* Streamline README
Contributors:
Aleix Pol, Alessandro Astone, Alexander Wilms, Dan Yeaw, Daniel Drake,
Gary Wang, Gleb Popov, Ingo Klöcker, JakobDev, Jeremy Whiting, Kai Uwe Broulik,
Marc-André Lureau, Matthias Klumpp, Philip Withnall, Tao Zuhong,
Thomas Klausner, Tristan Partin, and thanks to all translators mentioned
in the respective l10n files!
Version 0.16.4
~~~~~~~~~~~~~~
Released: 2023-11-10
Features:
* Allow hyphens in the last segment of a component-ID
* Implement the developer element for unique developer IDs
* Add meson overrides
Bugfixes:
* meson: Prevent building attempts with MSVC
* meson: Avoid potentially bad sed backup filename when fixing .pc file
Miscellaneous:
* Make sed invocation more portable
Contributors:
Gleb Popov, Matthias Klumpp, Tristan Partin
Version 0.16.3
~~~~~~~~~~~~~~
Released: 2023-08-22
Features:
* compose: Allow creating metadata with complete URLs and no base URL
Bugfixes:
* Fix tweaking of appstream.pc when building as subproject
* Do not override default-priority when parsing multiple metadata files
* Ensure stemmer always has the right locale and token-search works
* Require a more recent libxmlb to avoid crashes
Miscellaneous:
* Work around invalid null-dereference warning in GCC 13
Contributors:
Daniel Drake, Matthias Klumpp
Version 0.16.2
~~~~~~~~~~~~~~
Released: 2023-04-26
Notes:
* Due to a past mistake, AppStream until now assumed xml:lang was
using POSIX locale, while in fact XML locale need to be in BCP47 format.
Most of the translation tools do this correctly, but notably msgfmt
when used in batch mode doesn't (which affects anything using Meson's
i18n module). AppStream is now behaving according to spec, with some
fallback code in place, but please check your XML is translated
correctly to ensure all translations are visible.
Features:
* Add API for asking whether the pool is empty
* Add DDE to known desktop-environment list
* validator: Check if Release Description is inside description tag
* Make AppStream use BCP47 for locale in XML data
Bugfixes:
* Add missing standard::is-hidden attribute to file search enumerator
* spdx: Accept brackets in spdx license expression check
* introspection: Bring back AS_FORMAT_STYLE_COLLECTION into its enum
* compose: Fix crash in asc_l10n_search_translations_qt()
* compose: Set lower-cased CID for synthesized components again
* Don't crash when non-YAML documents are read as YAML
Miscellaneous:
* sanitizers: Allow null-dereference check again
Contributors:
Aleix Pol, Caolán McNamara, Corentin Noël, Gary Wang,
Gleb Popov, JakobDev, Matthias Klumpp, Will Thompson
Version 0.16.1
~~~~~~~~~~~~~~
Released: 2023-02-10
Notes:
* This is a bugfix-only release to primarily address an issue introduced
in v0.15.6 that caused any clients using GIR bindings to crash after a while.
Specification:
* docs: Clarify the locations where catalog icons should be placed
* spec: Expand documentation for <issue> elements
* spec: Mention that <issues> is not part of the description
* spec: Give some guidance about tone in release descriptions
Bugfixes:
* Fix binding helper macro to behave correctly if a function is passed directly
* Override-merge icons and provided items correctly
* tests: Ensure locale is C.UTF-8 in pool tests
Miscellaneous:
* release: Add sanity checks at beginning of each function
Contributors:
Corentin Noël, Matthias Klumpp, Pablo Correa Gómez, Philip Withnall
Version 0.16.0
~~~~~~~~~~~~~~
Released: 2023-01-26
Features:
* pool: Offer API to look up components by bundles
* Bump format version to 0.16
* Add new AsSystemInfo to read information about the current OS and device
* Add helper to get device names from a modalias
* Implement support for external release metadata
* Add validation support for external release metadata
* compose: Validate external release metadata used for the catalog as well
* its: Add rule for standalone release metadata
* Add function to test if an AsRelation is satisfied on the current system
* cli: Add command to list category contents
* cli: Display colored checkmarks if possible
* cli: Add new is-satisfied check to test relations from the command-line
* cli: Add Markdown export support for metainfo-to-news
* qt: Add support for SystemInfo & relation satisfication checks
Specification:
* spec: Specify a metadata format for external release descriptions
Bugfixes:
* Fix build with Clang 15
* Give a better error message if trying to list too many categories
* Adjust documentation of AsPool.get_components_by_categories to reflect reality
* validator: Validate merge component catalog data properly again
Miscellaneous:
* Consistently name catalog metadata as such everywhere
Contributors:
Aleix Pol, Matthias Klumpp, Rafael Fontenelle
Version 0.15.6
~~~~~~~~~~~~~~
Released: 2022-12-22
Features:
* qt: Add API for ContentRating descriptions and ratingIds
* Add some coccinelle semantic patches for common style issues
* compose: Allow building without SVG support (for bootstrap only)
* validator: Check for nodes that are text nodes even though they shouldn't be
* validator: Extend validation for custom tag
* validator: Improve Screenshot validation
Specification:
* docs: Fix typos in <extends> documentation
Bugfixes:
* validator: internat: Don't allow bandwidth_mbitps when value is offline-only
* validator: Fix timestamp validation
* validator: Allow release descriptions to start with punctuation
* compose: Only add no-metainfo tag if component isn't already ignored
* compose: Show better error in AscImage if compose was build without rsvg
* Add a hack to clarify proper PtrArray element ownership for language bindings
* qt: Port away from deprecated QDateTime API
* qt: Deprecate Component::requires
* qt: Fix warning
* qt: Fix stringListToCharArray and Pool::componentsByCategories
* qt: Port away from deprecated foreach
* as-review: Add a typedef for property enums
* as-review: Install properties at once rather than individually
* as-review: Specify G_PARAM_STATIC_STRINGS for properties
* as-review: Emit GObject::notify on property value changes
* as-review: Add missing property for as_review_{get,set}_priority()
* ascli: fix NULL pointer dereference
Miscellaneous:
* docs: Split releases specification into its own section
* style: Make code easier to read by using helper macros in all places
* Make some compiler warnings fatal unconditionally
Contributors:
Aleix Pol, JakobDev, Matthias Klumpp, Nicolas Fella, Philip Withnall,
r-ricci, Will Thompson
Version 0.15.5
~~~~~~~~~~~~~~
Released: 2022-08-22
Features:
* validator: Allow severity downgrade of releases-not-in-order for GNOME
* validator: Perform stricter integer validation
* validator: Check for url redefinitions
* Implement the "replaces" tag
* Add convenience function that check if component is free by license and origin
* qt: Add wrappers for AsComponent isFree/supports/replaces
* Always add untranslated component names to the search index
* validator: Validate the "internet" relation item
* validator: Add validation for memory relation
* Implement internet relation item
Specification:
* spec: Specify a proper "replaces" tag
* spec: Add an <internet/> kind to requires/recommends/supports
Bugfixes:
* validator: Don't permit overriding the unknown root tag issue
* compose: Don't crash if metainfo file contains an invalid stock icon
* spdx: Fix possible crash when NULL is passed to is_free_license
* compose: Don't synthesize components for desktop files of settings apps
* Return the correct values in as_display_length_kind_from_px()
* validator: Distinguish translatable from not-translatable tags in duplicate checks
Miscellaneous:
* Silence static analyzer false-positives based on GCC version
* data: use lxml to get the XDG categories
Contributors:
JakobDev, Philip Withnall, Pino Toscano, Matthias Klumpp
Version 0.15.4
~~~~~~~~~~~~~~
Released: 2022-05-22
Features:
* validator: Check timestamp validity
* validator: Allow (limited) overriding of issue tag severities
* validator: Add strict mode
* ascli: validate: Allow simple overriding of issue tags
* validator: Check for exact relation item redefinitions
Bugfixes:
* Add vcs-browser URL to metainfo.xml
* compose: Improve media-baseurl sanity checks for icon/screenshot policies
* compose: Don't create bad data when localized screenshots exist
* compose: Sanitize prefix value and verify all units for results
* compose: Fail and not just warn if we couldn't open a unit
* compose: Make no-result detection a bit more robust
* compose: Properly handle localized screenshots
* compose: Ignore current locale when analyzing screencasts
Contributors:
JakobDev, Matthias Klumpp
Version 0.15.3
~~~~~~~~~~~~~~
Released: 2022-04-10
Features:
* qt: Include enums for VcsBrowser and Contribute
* Add vcs-browser and contribute URL type
* validate: Improve validation of desktop files alongside metainfo data
* its: Mark deprecated rules as deprecated
* Implement l10n support for metainfo keyword tags
* validator: Perform basic validation of keywords in metainfo data
* compose: Prefer metainfo keywords over desktop-entry keywords
* meson: Bump minimum version to 0.62
Specification:
* docs: Document keywords for metainfo files as well
* docs: Spell it metainfo, not meta-info if referencing metainfo.xml files
* spec: Document how keywords in metainfo files should be translated
Bugfixes:
* qt: If the timestamp is 0, return a default QDateTime()
* docs: Include compose manual page
* validate: Point at the right line for description-enum-item-invalid
* validator: Find data if /usr prefix is missing as well
* validator: Make insufficient launch data for desktop-apps a hard error
* Don't fail downloads or URL checks if redirects were involved
* apt: Only refresh the OS data cache (not the whole system cache) on APT update
* compose: Emit error if filters are set but no output was generated
* Centralize GOnce guard to fix an assertion failure in AsComponent
Contributors:
Aleix Pol, JakobDev, Matthias Klumpp, Simon McVittie
Version 0.15.2
~~~~~~~~~~~~~~
Released: 2022-02-22
Features:
* compose: Allow setting a custom CAInfo file
* qt: Always use C library for enum-to-string conversions
* compose: Allow any amount of release entries for OS components
* compose: Implement more flexible icon policy
* validator: Ensure component-ID has no punctuation prefix
* validator: Check existence of version and date release properties
* Implement component-wide end-of-life date attribute
* compose: Build API documentation
* Relicense remaining GPL-2.0 code to LGPL-2.1+
* No longer mark compose build option as experimental
* Support the new swcatalog catalog metadata location and add app-info fallback
* When finding components by ID, use provided IDs if no exact matches were found
* ascli: Fix install/remove commands, add Flatpak support
* Implement XML & YAML read/write of the "branding" tag group
* Handle embedded lists in YAML release info paragraphs
Specification:
* spec: Specify a "date_eol" property for the component itself
* spec: Specify the new "branding" tag
* docs: Update links to API reference pages
* spec: Require that branding colours start with a hash symbol
* docs: Clarify license and ship license copies
* docs: Document media_baseurl property of components
Bugfixes:
* qt: Fix crash when moving a Component
* qt: Fix translate URL string<->enum conversion
* qt: Deprecate mistyped UrlTranslate enum value
* Filter out components without ID as early as possible (resolves crash)
* Don't terminate the client if we can't get a writable cache location
* Fix a possible parsing crash when converting markup
* ascli: Display better messages if appstream-compose is unavailable
* Install new collection XML to the right location
* compose: Skip further processing if component was already dropped
* compose: Fix SVG scaling with librsvg 2.52
* compose: Handle missing export paths gracefully
* Replace symlink hacks with new Meson install_symlink function
* ci: Drop outdated libsoup dep
Contributors:
Aleix Pol, fortysixandtwo, JakobDev, Jan Alexander Steffens, pabloyoyoista,
Phaedrus Leeds, Philip Withnall, Matthias Klumpp
Version 0.15.1
~~~~~~~~~~~~~~
Released: 2021-12-22
Features:
* Bump GLib version requirement to >= 2.62
* compose: Port over font support from appstream-generator
* compose: Allow overriding unit used for locale processing
* compose: Refine legacy support for desktop-id launchables
* compose: Allow setting the custom desktop-entry translation function
* compose: Allow to run with threading (mostly) disabled
* compose: Reorganize feature flags, allow to disable l10n
* compose: Allow setting a screenshot file size limit
* compose: Allow to disable screencast processing explicitly
* compose: Allow to test whether result has a specific hint tag
* news-convert: Support a "Translators" section
* validator: Check that first rDNS component-ID parts are always lowercased
* validator: Validate capitalization for some selected text blocks
Bugfixes:
* vapi: Rename PoolFlag to PoolFlags to add the missing deprecated flags
* Fix cache always getting updated even if unnacessary on Debian systems
* Still verify download return codes if download was aborted intentionally
* compose: Warn if metainfo files are missing and data was processed anyway
Contributors:
Corentin Noël, Matthias Klumpp
Version 0.15.0
~~~~~~~~~~~~~~
Released: 2021-12-02
Notes:
* This release contains a complete rewrite of AppStream's caching code, making use of
libxmlb instead of LMDB now. This will allow for more complex queries and simplifies
the caching code a bit.
As part of this change, AsPool is now quite a bit more powerful in what it can do.
* Caches are now always shared between applications, client-specific caches do no longer
exist. If requested, an AsPool can now also transparently reload metadata in the
background in case it changes on disk.
* A few new tags have also been added, most notably "supports" for indicating
hardware or input support.
Features:
* Refactor the caching code and partition cache into sections
* cli: Display nicer status information when refreshing caches
* cli: Allow limiting refresh action to data from certain groups
* Allow clients to configure the addon autoresolve magic
* Allow clients to control the local metainfo preference
* qt: Add wrappers for new AsPool API
* Add directory monitoring helper for AsPool
* Add an auto-reload mechanism to refresh cache sections when data changes
* Implement support for a "supports" relation kind
* qt: Wrap the AsPool ::changed signal
* qt: Add version test macro for Qt library as well
* cli: Make validator output a bit nicer
* cli: Base "status" command on metadata source layout from AsPool
* Implement the new "Tags" tag
* Make component-ID search case-insensitive
Specification:
* spec: Add a "supports" relation type
* Add support for specifying a graphics tablet as input control method
* Add support for the "hardware" relation item
* spec: Add "tags" tag for tagging components
* apidoc: Document file not found error code
* docs: Fix various typos and grammar issues
Bugfixes:
* compose: Adjust to rsvg API changes
* qt: Pass NULL to C function when overriding cache location with empty string
* tests: Make unit tests clean up temporary caches if possible
* qt: Align API deprecations with C library API
* Cache Flatpak data properly, and add some quirk fixes for it
* file-monitor: Explicitly cancel GFileMonitor before unreffing it
* Fix broken markup by using itstool to generate final translated metainfo
* validator: Fix some issues pointing at the wrong node
* validator: Validate the "tags" tag group
Contributors:
Phaedrus Leeds, Matthias Klumpp
Version 0.14.6
~~~~~~~~~~~~~~
Released: 2021-10-08
Features:
* validator: Allow slightly longer screenshot captions
* news-to-metainfo: Recognize the "Miscellaneous" section
* ascli: Add check-license command to test license for compatibility
* Emit URLs to choosealicense.com for certain popular licenses
* Add manually curated list of DFSG-free licenses
* news-to-metainfo: Allow only marking the last entries as translatable
* compose: Add support for image and video screenshot handling
* news-to-metainfo: Parse hyphens as header separators as well
* ci: Add Fedora to the CI environment
* as-translation: Add a new source-locale property
* compose: Support source locales for translations
Specification:
* docs: Clarify screenshot image/video dimensions, quickstart recommendations
* docs: Clarify image scaling, drop fixed-size image width recommendation
* spec: Mention the already-supported scale attribute of <icon/>
* spec: Add support for source locales
Bugfixes:
* cli: Properly forward parameters to compose binary when invoked via ascli
* compose: Don't follow symlinks when processing raw directories
* xml: Make NULL value handling for RefString value readers consistent
* news-to-metainfo: Stop parsing data if we have reached our entry limit
* news-to-metainfo: Don't attempt to override existing error on parsing failure
* compose: Extract screenshot image dimension data even if we're not caching them
* curl: Use less memory when downloading large files
Contributors:
Neal Gompa, Philip Withnall, Matthias Klumpp
Version 0.14.5
~~~~~~~~~~~~~~
Released: 2021-08-28
Features:
* compose: Add locale statistics reader
* Add installed test to validate all metainfo data on the system
* compose: Add initial compose utility
* compose: Read SVGZ images in AscImage
* compose: Better heuristics for finding KDE icons
* compose: Allow filtering which components are processed
* compose: Allow exporting hint report as YAML
* cli: convert: Autodetect metainfo/collection XML files
* Add documentation for appstreamcli compose
* validator: Nag about missing content_rating and releases
* compose: Add metainfo file for cli utility
Specification:
* docs: Clarify how Qt translations are searched for
* spec: Use "i386" as arch name for the shared ABI of all 32-bit x86 CPUs
* spec: Remove debshots screenshots API references
* docs: Document the version comparison algorithm
Bugfixes:
* qt: Make Pool's parent class public
* Use locale_strip_encoding for determining the current locale as well
* Consider locale like "ca@valencia" compatible with "ca"
* validator: Properly emit some invalid tag name messages
* Resolve g_memdup deprecation warning for GLib >= 2.68
* cli: Don't occasionally remove spaces when wrapping words
* Propagate bundle information even if PreferLocalMetainfoData is True
* Add workaround for GIR inconsistency in AsFormatVersion enum
* Add assertion against as_get_resource() returning NULL
* context: Don't initialize filename ref string value
Contributors:
Aleix Pol, Matthias Klumpp
Version 0.14.4
~~~~~~~~~~~~~~
Released: 2021-06-22
Features:
* qt: Expose setter and getter for pool cache location
* utils: Use GLib's gstring_replace if available
* its: Allow to mark release descriptions as non-translatable
* compose: Point people at the specification if metadata license is invalid
Specification:
* docs: Clarify which metadata licenses are permitted
* docs: Fix a typo on the icon cache page
* spec: Add a paragraph about which license to put in <project_license>
* Add documentation for YAML release type and urgency
* Add documentation for YAML provides
Bugfixes:
* component: Don't strip ";" from keywords before translating them
* utils: Don't strip modifiers when stripping encoding
* compose: Check optipng is there before we use it
* Improve text line wrapping, especially if many newlines are present
* Make word-wrap function unicode-aware
* Make license_is_metadata_license parse more complex expressions
* Improve cache refresh code, don't flag cache as updated if update failed
* Use system cache even if we had to drop some invalid metadata
* Assign more string class members safely
* Fix flashed firmware generating incorrect XML
* Fix YAML having wrong names for the firmware data
Contributors:
Aleix Pol, Iain Lane, Philip Withnall,
Robert Ancell, Matthias Klumpp
Version 0.14.3
~~~~~~~~~~~~~~
Released: 2021-03-08
Specification:
* spec: Mention that license-IDs are case-sensitive
* spec: Fix case of LicenseRef-proprietary in the spec
Bugfixes:
* compose: Don't loop endlessly if external desktop l10n function is set
* Never create a predictable dir in /tmp for caching
Contributors:
Philip Withnall, Matthias Klumpp
Version 0.14.2
~~~~~~~~~~~~~~
Released: 2021-03-02
Features:
* qt: Implement missing Pool::componentsByCategories
* Share one user-owned read-only system metadata cache between all applications
* pool: Clean up user sysdata caches if we start to use the system cache
* Port over some parsing improvements for desktop-files from asgen
* compose: Add helper for reading desktop-entry files
* compose: Handle bad UTF-8 in desktop-entry files even better
* search: Perform partial token matches instead of prefix matches
* search: Unconditionally perform partial term matching after exact matching
* news-to-metainfo: Recognize the "Contributors" section
* Update our own metainfo file for appstreamcli
Bugfixes:
* Read descriptions from collection XML correctly again
* tests: Fix a few memory leaks
* Make people acknowledge they know the ascompose API is unstable
* search: Make whole-search string matching a lot more strict
* validator: Resolve false-positive when testing remote icon URL validity
* utils: Improve textwrap if text is just one excessively long word
* compose: Permit U+00AD SOFT HYPHEN in string values
* Validate our own metainfo file
* compose: Don't assume lowest priority for desktop-entry-only components
* search: Only replace full words with greylist terms, not partial ones
* ascli: Take all positional parameters as search terms when searching
Version 0.14.1
~~~~~~~~~~~~~~
Released: 2021-02-16
Features:
* Switch back from Soup to cURL for HTTP(S) (Matthias Klumpp)
* validator: Check a few more things on requires/recommends items (Matthias Klumpp)
* Only download the first bytes of a file when checking URLs for validity (Matthias Klumpp)
Specification:
* spec: Officially mark <mimetypes/> tag as deprecated (Matthias Klumpp)
Bugfixes:
* qt: Return better errors in AppStream::Metadata (Matthias Klumpp)
* Do not automatically clean up errors that will be propagated (Matthias Klumpp)
* Remove overall extern "C" to make very new (2.67+) GLib versions happy (Matthias Klumpp)
* ascli: Don’t use GNU C extension type names (Philip Withnall)
* build: Use c11 rather than gnu11 and define vendor extensions separately (Philip Withnall)
Version 0.14.0
~~~~~~~~~~~~~~
Released: 2021-02-02
Notes:
* Component data-IDs gain a fifth part for a "branch". If you parse the IDs with AppStream's
functions, this change is fully backwards compatible. If you do your own parsing of these
IDs, please check if you have 4-part or 5-part IDs and split accordingly.
The branch is not used by AppStream (it is just passed through), but needed in GNOME Software
for Flatpak and Snappy support.
* AppStream-Generator depends on libappstream-compose now, however the API is still not stable, so
please do not use it unless you either are appstream-generator or like using experimental code.
Features:
* news-to-metainfo: Interpret placeholder release dates as denoting a dev version
* Make as_utils_build_data_id public API
* Add AsReview for attaching user reviews to software components
* Add compile-time version test macros
* Add a branch element to component data-IDs
* Add branch property to AsComponent
* utils: Add data-ID hashing and matching functions
* utils: Make as_gstring_replace public API
* Add branch info to on-disk cached components
* content-rating: Add as_content_rating_add_attribute API
* Rename INPUTMETHOD component kind enum to INPUT_METHOD
* Add "cabinet" bundle type for firmware deployments
* Make AsTokenMatch public API
* Add function to AsScreenshot to get image closest to preferred size
* Allow AsComponent to directly ingest desktop-entry data
* Make as_pool_build_search_tokens API public
* Add "origin" token match
* Make as_component_add_provided_item API public
* Add some useful image dimension constants
* compose: Add blur function from asglib
* Add more efficient load_from_bytes method to AsComponent
* Add methods to load metadata directly from GBytes
* compose: Make image loading code more versatile
* Add editorconfig
* Make more use of RefString in AsComponent
* Revamp version comparison algorithm
* ascli: Add native profiling support
* compose: Reduce Hint memory usage, allow to retrieve var list
* compose: Allow clients to add their own, new hint tags
* compose: Allow hints to be created from tags, include validator hints in pool
* compose: XML-escape validator explanations
* compose: Add a few more methods from asgen's GeneratorResult
* compose: Add helper method for metainfo validation
* compose: Add metainfo parsing helper function
* Implement "filename" property for release artifacts
* ascli: Add new `os-info` subcommand
* Add code to validate platform triplets
* validator: Validate more release-tag specific issues
* Add utils helper function to install a variety of metadata
* Improve desktop-entry tests, always add "launchable" tag
* Update AppStream format version
* qt: Add bindings for relations API (requires/recommends)
* Use ref-strings for locale hash tables and token tables
Specification:
* docs: Update revision and date
* spec: Add "cabinet" bundle type for firmware deployments
* spec: Allow "filename" tag in release artifacts
* docs: Clarify section on release artifact platform triplets
* spec: Properly mark mailto: links in contact URLs as deprecated
Bugfixes:
* parse-desktop: Do not try to propagate a null error (Aleix Pol)
* Retain loaded context in AsMetadata and allow external media base url changes
* meson: Use project arguments instead of global arguments
* ascli: Improve text reflow in console output
* metainfo-to-news: Use "*" instead of "-" for markdown enumerations
* Drop unneeded compiler warning override
* Fix small memory leak in AsTranslation
* Avoid extra strlen() call when loading metadata from file
* Fix a few more memory leaks
* validator: Add some more tests
* ascli: Remove some code duplication, improve help summary text
* meson: Hardcode less paths
* tests: Add version comparison tests from appstream-glib, to ensure we compare the same
* gir: Ensure as_version_string shows up in introspection data
* ascli: Improve display of indented long-text output
* compose: Fix build with GLib < 2.66
* Make sure there are no duplicate operating-system components
* compose: Ensure font selection for symbolic fonts actually works
* validator: Ensure we return false in API functions if validation failed
* Ignore minimal translations in metainfo description texts
Version 0.13.1
~~~~~~~~~~~~~~
Released: 2020-11-30
Bugfixes:
* Install enum types headers to the right location
* qt: Construct library using libappstream dependency object
* validator: Improve check for invalid hyperlinks to reduce false-positives
Version 0.13.0
~~~~~~~~~~~~~~
Released: 2020-11-30
Notes:
* This release introduces a new library, libappstream-compose, designed to
provide building blocks for composing AppStream metadata. This includes GUI
stuff like font and SVG rendering, which libappstream deliberately does not
provide. The new compose library is not API/ABI stable and should - for now -
only be used by appstream-generator.
Features:
* qt: add missing Provided::KindId enum (Aleix Pol)
* Add experimental libappstream-compose (Matthias Klumpp)
* Implement support for display_length relation kind (Matthias Klumpp)
* Implement "tv-remote" input control kind (Matthias Klumpp)
* Refactor AsRelation to use GVariant internally (Matthias Klumpp)
* content-rating: Align the OARS/CSM mappings of sex-* (Philip Withnall)
* content-rating: Add content rating system APIs from gnome-software (Philip Withnall)
* content-rating: Expand translator comments to link to OARS website (Philip Withnall)
Specification:
* spec: Specify display_length requires/recommends item (Matthias Klumpp)
* spec: Add tv-remote user input control type (Matthias Klumpp)
Bugfixes:
* Use glib-mkenums to create the GType of all the available enums (Corentin Noël)
* Set FD_CLOEXEC on the LMDB FD manually (Fabian Vogt)
* Never ship with an embedded convenience copy of Highlight.js (Matthias Klumpp)
* Don't fail doc install if global highlight.js wasn't found (Matthias Klumpp)
* Properly escape markup when fixing invalid description data (Matthias Klumpp)
* validator: Don't pass NULL to vprintf, it's not an allowed value (Matthias Klumpp)
* meson: Kill deprecation warning for pkgconfig.generate (Matthias Klumpp)
* validator: Demote cid-contains-uppercase-letter from INFO to PEDANTIC (Matthias Klumpp)
* Change some AsPool GIR annotations to only transfer container,
as workaround for issue in GIR (Matthias Klumpp)
* Properly parse YAML font provides entry (Matthias Klumpp)
* content-rating: Lower the OARS/CSM mapping of sex-homosexuality/intense (Philip Withnall)
* Change return annotation of as_agreement_get_sections to "transfer none" (Rico Tzschichholz)
* contrib: Vala expects element-type of PtrArray to reflect their ownership (Rico Tzschichholz)
Version 0.12.11
~~~~~~~~~~~~~~
Released: 2020-05-12
Features:
* Auto-update static category data from fd.o
* Implement support for input control relations
* validator: Validate input control relations
* validator: Put AppStream technical terms and tag names in backticks in
explanation texts
* Modernize the README
* validator: Check for uppercase letters in cids
* Strip beginning/trailing newlines in a number of places
* Make AsContext getter for AsComponent public API
* qt: Add support for name_variant_suffix
* Make component sort-score API public API
* Implement a YAML representation of release artifact information
Specification:
* Build specification and docs with DAPS
* docs: Add (HTML) anchors for requires/recommends items
* spec: Specify user input control recommendations
* docs: Don't show reference to nonexistent provides->service tag for services
* spec: Encourage the use of only lowercase letters for component-IDs
* docs: Document --explain flag in ascli manual page as well
* docs: Add permalink anchors to some list entries
* Formally support BLAKE2b/s as hash functions for release artifacts
* docs: Link to the MetaInfo Creator webapp in a few places
Bugfixes:
* Be less noisy about ignoring excessively long search tokens
* Tighten the "free license" check and prevent false positives
* cache: Use correct fts value per result (David Hewitt)
* validator: Control items can't have a version
* validator: Reduce download timeout
* yaml: Strip encoding when serializing keyword lists
* Allows arbitrary indentation when converting NEWS files
* Ignore NULL values silently in our stringstrip function
* Only dump valid metainfo description markup, sanitize it otherwise
Version 0.12.10
~~~~~~~~~~~~~~
Released: 2020-01-18
Notes:
* This release drops its optional dependency on Curl in favor of a non-optional
dependency on libsoup.
Features:
* Sort addons less prominently than applications (Aleix Pol)
* validator: Display wrong data hint if metadata_license is invalid (Matthias Klumpp)
* Split tokens for descriptions as well (Matthias Klumpp)
* validator: Replace curl with libsoup for download tests (Matthias Klumpp)
* Update content rating for OARS 1.1, make CSM age conversion public API (Matthias Klumpp)
* tests: Don't duplicate XML/YAML preambles in test data (Matthias Klumpp)
* Add asynchronous method for loading the metadata pool (Matthias Klumpp)
* Try to reuse initial temporary cache when loading data into pool (Matthias Klumpp)
* Reduce minimum required GLib version to 2.58 (Matthias Klumpp)
* Implement support for "runtime" component type (Matthias Klumpp)
* Use SPDX JSON and filter out license exceptions in static data (Matthias Klumpp)
* Update SPDX and TLD data (Matthias Klumpp)
* Implement support for the WITH operator in recent SPDX (Matthias Klumpp)
* Add function to test if a license string is for free software (Matthias Klumpp)
* qt: Add wrappers for license exception and freeness tests (Matthias Klumpp)
* ascli: Add vercmp shorthand for compare-versions subcommand (Matthias Klumpp)
* ascli: Don't print validation issues in color and bold - color is enough (Matthias Klumpp)
* its: Mark name_variant_suffix as translatable (Matthias Klumpp)
* Make AsContext public API (Matthias Klumpp)
* Add convenience methods to direcly serialize a component to XML (Matthias Klumpp)
Specification:
* docs: Adjust Freedesktop spec URLs to their new redirect locations (Matthias Klumpp)
* Document & implement the new name_variant_suffix tag (Matthias Klumpp)
* spec: Specify the "runtime" component type (Matthias Klumpp)
* spec: Permit alternative IDs in appstream URIs (Matthias Klumpp)