Releases: charles8051/frame-flow
Releases · charles8051/frame-flow
Release list
v0.8.0-alpha.1
The first release since v0.7.0-alpha.1 that changes the libraries rather than the publish workflow. 53 files under src/, +3194/-255. Minor bump per the 0.x rule: two public types moved assembly and one public property changed shape. The package family is unchanged at 22. BREAKING - ScrubSeekDispatcher moves from FrameFlow.Avalonia to FrameFlow.Media, and PresenterTickMeter from FrameFlow.Avalonia.Windows to FrameFlow.Media. Namespaces follow: FrameFlow.Media and FrameFlow.Media.Diagnostics. Both were platform-agnostic and only the namespace tied them to Avalonia, which put them out of the SDL side's reach. No type forward is shipped, so a compiled consumer sees a TypeLoadException rather than a warning. Update the using. - H264EncoderOptions.EncoderName is now string? and defaults to null, having been string defaulting to "libopenh264". Null resolves the encoder against what the loaded FFmpeg has, libopenh264 first and then h264_videotoolbox. The fixed default threw on every Mac: FrameFlow ships no FFmpeg for macOS, the bootstrapper resolves a Homebrew ffmpeg@7 keg, and that build has no libopenh264. Pin the old behaviour by setting EncoderName = "libopenh264". Fixes - FrameFlow.Inference.Ort held a tensor address past the pin that made it valid. OrtValue.CreateTensorValueWithData neither copies the buffer nor takes ownership of it, and the pin was released at the end of the binding call, so ORT read a pointer the GC was free to move behind it. A probe on pooled buffers showed them relocating. The pin now lives as long as the OrtValue. - Diagnostics reported the hardware backend that was bound, not the one decoding, so a silent fall back to software read as hardware. - SdlVideoSink never overrode GetDiagnostics, so every SDL session reported an empty video-sink snapshot into the pipeline: zero frames presented and no A/V drift, whatever was on screen. It reports for real now. - Linux native staging: the staged ffmpeg tools carry an $ORIGIN rpath, ffprobe says what it could not load instead of failing opaquely, and a FrameFlow.Native pack with no natives in it fails rather than shipping empty. New - VideoPresentationLag on the playback diagnostics snapshot: how far the clock has run past the picture on screen, measured from the presented frame's window end so a pipeline that is keeping up reads zero. - A diagnostics snapshot delta and its interpretation, and session generation that advances on teardown as well as on creation. - FrameFlow.Graph gains a sync-window join for media-time correlation. - AudioClockAnchor and PresenterTickReport widen from internal to public. - Lateness-driven decode skip, off by default. A pipeline that cannot keep up walks an ordered path of readback thinning and then decode discarding, and walks back down when it recovers. Everything but LatenessRecoveryOptions is internal. docs/adr/lateness-driven-decode-skip.md carries the decision and one open acceptance condition, which is why nothing turns it on. FrameFlow.MotionClip still ships as the self-contained executable attached to this Release rather than as a nupkg; its PackAsTool nupkg exceeds nuget.org's size limit.
v0.7.0-alpha.4
Completes the nuget.org release that v0.7.0-alpha.3 published only part of. No library change since v0.7.0-alpha.1 — every diff so far is in the publish workflow. Publishes 22 packages, including FrameFlow.Native.Runtime, the package six projects reference and which has never been on a public feed. FrameFlow.MotionClip is deliberately not published. PackAsTool makes its nupkg the whole self-contained tool at roughly 253 MB against nuget.org's 250 MB limit; docs/DEFERRED_WORK.md tracks the reduction work. It ships as the self-contained executable attached to the GitHub Release instead. What alpha.3 taught, now enforced: the push walks packages one at a time, so an oversized package publishes everything before it and then fails. A size assertion runs over the push set before the OIDC exchange, so that fails the release instead of leaving half of one behind. Graph, Video, Native, Yolo and Avalonia.Windows already exist publicly at 0.7.0-alpha.3 from that partial run. This adds alpha.4 alongside; the gap in alpha.3 cannot be filled.
v0.7.0-alpha.3
First release published to nuget.org. No library change since v0.7.0-alpha.1 — every diff is in the publish workflow, so this is an iterate of the same milestone rather than a new version. - Publishes to nuget.org via Trusted Publishing. The publish job exchanges its OIDC token for a short-lived key, scoped by the `nuget.org` environment; no publishing secret is stored. - Stops pushing to GitHub Packages. The reseed left every FrameFlow.* package there owned by frame-flow-archive, and a package is scoped to its owning repository, so this repository's token cannot write to them. - Asserts the package family is complete before publishing. The expected set is derived from the solution plus FrameFlow.Native.Runtime, so a partial release fails rather than ships. - Clears packages/ before packing, so a .nupkg left by an earlier tag on the persistent self-hosted workspace cannot be published alongside this release, and requires every package to carry this tag's version. v0.7.0-alpha.2 was tagged but never published: its run failed on the GitHub Packages 403 described above, before reaching nuget.org.
v0.7.0-alpha.2
First release published to nuget.org. No library change from v0.7.0-alpha.1 — the only diff is the workflow that publishes it, so this is an iterate of the same milestone rather than a new version. - Adds the nuget.org publish path via Trusted Publishing: the publish job exchanges its OIDC token for a short-lived key, scoped by the `nuget.org` environment. No publishing secret is stored. - Adds a fail-loud completeness gate. The expected package set is derived from FrameFlow.slnx plus FrameFlow.Native.Runtime, so a partial release fails rather than ships. - Clears packages/ before packing. The self-hosted workspace outlives the job, so a .nupkg from an earlier tag could otherwise be published alongside this release. - Asserts every package carries this tag's version. FrameFlow.Native.Runtime reaching nuget.org is the point: six projects take a PackageReference on it, and until now it existed only in a private feed, so a public clone could not restore them.