activity_files 0.3.2
activity_files: ^0.3.2 copied to clipboard
A pure Dart toolkit for loading, editing, validating, and exporting workout activity files—covering GPX, TCX, and FIT — with diagnostics, normalization, and CLI tooling.
Changelog #
0.3.2 #
- wrong version in pubspec.yaml
0.3.1 #
Fixed #
ActivityFiles.load/convertnow honor theencodingparameter for GPX/TCX byte payloads (without BOMs), so Latin-1 and other single-byte exports no longer throwFormatException.ActivityParser.parseBytesexposes anencodingargument for callers that read non-UTF-8 text files directly into byte buffers.
0.3.0 #
Added #
ActivityFiles.exportproduces encoded payloads with optional validation, normalization, and aggregated diagnostics in a single helper.ActivityFiles.convertAndExportexposes the same workflow directly from raw sources, including optional validation.ActivityFiles.exportAsyncandconvertAndExportStreammirror the export workflow off the UI thread and for streamed payloads.ActivityExportRequestandActivityFiles.runPipelinelet callers describe parse → normalize → export pipelines with consistent isolate controls.- Diagnostic summary getters (
warningCount,hasErrors,diagnosticsSummary, etc.) are now available on load, conversion, and export results to simplify UI surfacing. ActivityProcessingStatsandNormalizationStatscapture normalization and validation metrics alongside export diagnostics.- Facade convenience wrappers expose common transforms (
sortAndDedup,trimInvalid,smoothHeartRate,crop), structural validation, and channel snapshots. RawActivityandRawActivityBuildergained device metadata and namespace aware GPX extension support, enabling richer encoder output without custom glue.DiagnosticsFormatterprovides reusable helpers for summarisingParseDiagnosticcollections across logs and UI surfaces.- Stream-aware builder/export helpers (
builderFromStreams,convertAndExportwithlocation/channels) accept timestamp/value tuples so backends can export without manual model translation. ActivityFiles.registerSportMappersupplies pluggable sport inference and ships string/ID heuristics for common wearable categories.- GPX encoders honour builder-supplied metadata/track names and expose helper
factories (
gpxActivityLabelNode,gpxDeviceSummaryNode) for custom extensions with automatic namespace registration.
Changed #
- GPX encoder now emits device metadata and custom extensions, automatically declaring any additional namespaces used.
- TCX encoder/parser preserve device metadata and custom extensions, and FIT files now round-trip device metadata, including explicit manufacturer/product identifiers supplied via
ActivityDeviceMetadata. ActivityFiles.convertandconvertAndExportnow acceptexportInIsolate, bringing isolate offloading parity while ensuring FIT byte caches refresh when the encoded payload changes.
Fixed #
RawEditor.markLapsByDistancenow reports per-split distances correctly and always emits a trailing partial lap when applicable, ensuring summary totals stay accurate.RawEditor.downsampleTimekeeps the final point in the activity and performs sample matching without quadratic scans, avoiding data loss on closely spaced tracks.- Channel deduplication retains the most recent sample when multiple readings share the same timestamp instead of discarding later values.
ActivityFiles.channelSnapshotnow uses binary search when resolving channel samples, reducing lookup cost from O(n) to O(log n) for large time-series streams.
0.2.0 #
Added #
- Asynchronous parsing surface:
ActivityParser.parseAsync,parseBytesAsync, andparseStreamoptionally offload work to isolates for smoother UIs and streaming IO. ActivityFilesfacade providing ergonomicload,convert, andedithelpers tailored for app integrations.RawActivityBuilderfor incremental creation of activities.- Asset-backed integration tests cover
ActivityFiles.load,detectFormat, and conversion flows with real GPX/TCX/FIT fixtures.
Changed #
- GPX, TCX, and FIT parsers emit structured diagnostics instead of raw strings.
- Converter, CLI, documentation, examples, and tests now surface diagnostics in output flows.
- README/example now highlight the high-level facade and builder workflows.
- Added facade-focused regression tests covering format detection and builder seeding.
Deprecated #
ActivityParseResult.warningsremains available but now forwards to the new structured diagnostics; it is marked deprecated to encourage migration.ActivityConverter.convertstill accepts thewarningsparameter, which is deprecated in favor of the richerdiagnosticssink.
0.1.2 #
- pub.dev score fix.
0.1.1 #
- Fix README.
0.1.0 #
- Handle FIT compressed timestamp headers and ensure unknown message types advance the reader instead of hanging.
- Add
ActivityParser.parseBytes, broadenActivityConverter.convertinput support, and let the CLI operate on raw FIT binaries without manual base64. - Document the new FIT workflow and add regression coverage for compressed headers.
0.0.2 #
- Upgrade dependencies and SDK.
- Add
example/main.dartillustrating a minimal GPX round-trip.
0.0.1 #
- Initial release of
activity_fileswith GPX/TCX parsing, editing, validation, and encoding utilities plus a conversion/validation CLI scaffold.