appstream_dart 0.3.0
appstream_dart: ^0.3.0 copied to clipboard
High-performance AppStream XML parser with C++23 FFI bridge. Streams catalog metadata into SQLite with Drift ORM and FTS5 search.
0.3.0 #
- Licensing: adopt SPDX license headers (
SPDX-License-Identifier/SPDX-FileCopyrightText) across all source files; addTHIRD_PARTY_LICENSEScataloging every direct dependency. - LICENSE file replaced with the compact SPDX-standard Apache-2.0 text.
- Dependency bumps:
sqlite3^2.4.0 → ^3.3.1,lints^4.0.0 → ^6.1.0 (applies to both the main package and the Flutter example). - Public API documentation: add dartdoc comments to all exported classes,
fields, and constructors in
lib/appstream.dart,lib/src/database/database.dart, andlib/src/database/tables.dart.
0.2.2 #
- pub.dev publishing hygiene:
- Add
lib/appstream_dart.dartre-export so the primary library name matches the package name. The originallib/appstream.dartimport continues to work. - Rename
docs/→doc/andtests/→native_tests/to match the pub package layout (singulardoc/, no clash with the Darttest/directory). - Add
.pubignoreto keep build artifacts, the cachedappstream.xml/catalog.db, the Flutter example sub-package, and legacy/dev shell scripts out of the published archive.
- Add
- Native build: gate the C++ test suite behind
-DAPPSTREAM_BUILD_TESTS=ONso thepackage:hooksbuild hook and downstream consumers no longer fetch GoogleTest or build the test executable by default. - Reliability and security fixes surfaced by clang-tidy:
- Fix 8 use-after-move bugs in
AppStreamParser(member key strings were re-checked via.empty()after being moved). - Mark
SqliteWriter::~SqliteWriternoexceptand wrap its body in a try/catch so a logging failure during teardown can no longerstd::terminatethe parsing process. postString(FFI) now returns success/failure and a stack-allocated OOM sentinel (-2) is posted if the malloc fails, instead of the progress message being silently dropped.- Document path-handling expectations on
appstream_parse_to_sqlite: paths are passed directly toopen(2)/SQLite with no normalization or sandboxing, so callers accepting them from untrusted input must validate first.
- Fix 8 use-after-move bugs in
- Tooling: add
.clang-formatand.clang-tidyat the repo root so formatting and lint runs are deterministic. - Flutter example (
example/flathub_catalog): drive the package's CMake build viaExternalProject_Addsolibappstream.sois always built and bundled before the runner is linked.
0.2.1 #
- Add
std::expectedpolyfill for Clang 18 (Flutter's default Linux toolchain), removing the hard requirement on Clang 19+ - Rename package from
appstreamtoappstream_dartand fix example imports to match
0.2.0 #
- Multi-language translation support: store
xml:langfield translations incomponent_field_translationstable, select at runtime with locale fallback chain - Streaming XML parser: replace mmap with fd-based 256 KB sliding buffer, reducing peak memory from ~64 MB to ~22 MB
- Drift ORM database layer with 20 tables, FTS5 search, locale-aware queries
- Native asset build hook (
hook/build.dart) for automatic C++ compilation - Flutter example app with catalog browsing, language picker, screenshot viewer, and AppStream HTML rendering
- Security hardening: SQLITE_TRANSIENT bindings, URI scheme validation, FTS5 query sanitization, numeric entity overflow protection
0.1.0 #
- Initial release
- C++23 XML parser with FFI bridge
- Streaming pipeline: XML to SQLite via ComponentSink
- Dart API with isolate-based parsing and progress events
- CLI tools for downloading, parsing, and querying Flathub catalog