Skip to content

Releases: charles8051/frame-flow

v0.8.0-alpha.1

v0.8.0-alpha.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Sep 15:26
9b276f4
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

Choose a tag to compare

@github-actions github-actions released this 01 Sep 01:02
84b1fb3
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

Choose a tag to compare

@github-actions github-actions released this 31 Aug 23:41
ff9a83f
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

Choose a tag to compare

@github-actions github-actions released this 31 Aug 22:10
740a191
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.