livi (0.1.0) experimental; urgency=medium

  [ Guido Günther ]
  * screenshots: Update to something recent.
    The design changed.
  * data: Fix appstream metainfo
  * tests: Disable the network access when running the.
    This allows to run them in isolated build environments. We switch
    form deprecated appstream-util to appstream-cli for that too.
  * ci: Run tests in build step.
    This is mostly validation so don't bother with an extra job
  * flatpak: Update gstreamer.
    Taken from https://github.com/flathub/org.sigxcpu.Livi/pull/6/files
  * ci: Move flatpak job to packaging stage.
    This will make it easy to identify once we have more jobs
  * ci: Add scripts for common jobs
  * po: Allow check-po to pass.
    This makes sure we don't regress and translators
    can run their tools
  * ci: Enable automatic po and commit message checking
  * window: Swap muted/unmuted audio icons.
    More in line with other players
    Closes: https://gitlab.gnome.org/guidog/livi/-/issues/13
  * window: Split mime types
  * shortcuts: Split into general and video section
  * app: Allow to paste uris.
    Pasting an uri into the main window via ctrl-v plays that video.
  * sink: Fix gst debug category
  * build: Add run script.
    We have GSettings now and want to be able to run from the source tree.
  * data: Always compile schemas.
    This allows us to run from the source tree
  * window: Add type checks to public functions
  * window: Use video folder if we don't have an url
  * recent-videos: Track played videos and positions.
    This saves the played videos in GSettings so playback can be resumed.
  * window: Add recent video handler
  * window: Remember position on state state changes
  * window: Remember stream position on close request too
  * window: Seek to old stream pos
  * window: Add ref_uri.
    This is the name we want to refer to the stream. For local files it
    makes no difference. For https:// streams that pass through a URL
    processor the ref_uri is the initial short name and the uri is the
    actual playable backend uri (which e.g. for video sites changes with
    every play).
  * window: Use ref_uri for title.
    For filenames it doesn't matter and for https:// URLs the ref_uri
    is usually the shorter one.
  * application: Track the reference URL too
  * window: Show overlay when resuming a stream or reaching EOS.
    This allows to select whether to resume or start at the beginning.
    At end of stream we only show the Restart option.
  * main: Cleanup on SIGINT and SIGTERM.
    Makes sure we shutdown gracefully cleaning up cache files, sync
    stream state, etc.
  * window: Arm Hide controls timer when entering playing state.
    When the user presses e.g. "space" we want to autohide. We don't want to
    so on touch only devices though.
  * window: Switch to content view when toggling play.
    Otherwise we might e.g.stay on the error page.
  * window: Hide controls in non playback states.
    Error and empty state don't need them and confuse the user.
  * application: Move option handling into class.
    No need to have this split between two files
    Fixes: 7fdcdb8 ("Add LiviApplication")
  * app: Allow to skip automatic resume
  * window: Label SDH subtitles.
    We'll likely need more tag parsing here but the only example I have
    here uses this to annotate the subtitle stream.
  * controls: Make sure there's initially no lang menu.
    If a stream has neither audio streams nor subtitles we don't want to
    present an empty menu.
  * window: Don't forget to init autofree'd pointer.
    Fixes: 5c0962d ("window: Label SDH subtitles")
  * window: Show controls when window becomes active.
    This makes it more obvious the window got focused hence easing
    navigating without pointer / touch.
  * ci: Use meson setup
  * build: Bump required GTK dependency to 4.13.7.
    This allows us to buils using graphics offload
    Add a fallback until this GTK version makes it into distros.
  * recent-videos: Drop unused enum
  * recent-videos: Allow to get URL of recently played videos
  * application: Allow to resume the n-th last video
  * window: Remember if URI is preprocessed.
    When the ref-uri isn't the player uri it got preprocessed.
    We could determine that when needed but it's easier to just cache it
    when set.
  * recent-videos: Track if a video is preprocessed.
    Use that information when picking a specific video to resume.
  * application: Preprocess when picking a specific video to resume.
    If we pick an old video to resume we must preprocess it's URL again if
    needed. If the user forces preprocessing we honor that.
    If an explicit URL is passed we don't get preprocess information
    automatically so the user can control that.
  * recent-videos: Use sort_values.
    Otherwise we access the to be sorted values incorrectly.

  [ Robert Mader ]
  * window: List mkv files in file chooser.
    Additionally to mp4 and webm.
    The app is already registered for these file types in e.g. file
    browsers, but opening files from within the app isn't possible
    without this change.
  * window: Add more elements to hw-decoding check.
    Add stateful v4l2, va-api and vulkan elemnts, as well as av1 elements where
    appropriate, to make the icon and message useful on more platforms.
  * sink: Add support for DMABuf import and graphics offload.
    By implementing support for `GdkDmabufTextureBuilder` and
    `GstVideoInfoDmaDrm`. This allows zero-copy video playback on Wayland
    when paired with hardware video decoding.
    Mostly a straigh forward copy from `GtkGstSink`.
    Note that Gstreamer 1.23.1/1.24 is required.
    We bump the required GTK version due to the change in the UI file, which
    is hard to make conditional.

 -- Guido Günther <agx@sigxcpu.org>  Thu, 14 Mar 2024 21:09:52 +0100

livi (0.0.6) experimental; urgency=medium

  * ci: Make vars match the image.
    We use trixie since some time
  * window: Hide center overlay on play.
    This makes sure we hide it when the new overlay was started
    by a new video (e.g. via a remote instance)
  * css: Only make main window transparent
  * main: Simplify keyboard shortcuts.
    Avoid the need for a variable for each shortcut group
  * window: Remove info bar.
    Use the headerbar instead. This moves us closer to the designs.
  * window: Only show icon when accel is off.
    This follows the "don't irritate the user when all is fine" pattern
  * window: Use adw-toolbar for bottom bar.
    This allows us to avoid a `GtkRevealer` and makes sure top and bottom
    bar have consistent animations.
  * window: Drop margin around controls.
    This makes them align to the window edges getting us closer to the
    designs.
  * Add a shortcuts window.
    Not very useful on mobile but on desktop.
  * Add an about dialog.
    Regular apps ought to have one.
  * window: Add menu button.
    This for now allows to show the keyboard shortcuts and about window.
  * window: Use a vertical menu for playback speed.
    Moves us closer to designs
  * window: Reindent.
    No functional change. Do this in a separate commit to ease rebasing.
  * window: Improve control icons.
    Instead of specifying padding in css just make sure the button is
    squared via width-requests and let them expand. This ensures the
    whole area stays touchable.
    While at that use the gear icon for settings and deemphasize mute and
    settings a bit by using a smaller icon.
  * window: Add a single method to play an URL
  * window: Add initial file open dialog.
    We want to improve the mime types/file patterns and sync it up
    automatically with what we have in the desktop file but let's give users
    a UI way to open files. This helps cases where livi isn't the default
    video player and launched via e.g. nautilus.
  * window: Strip blanks to save space in resources
  * build: gitignore packaging files
  * main: Use AdwApplication.
    No need to init adwaita separately then.
  * Add LiviApplication.
    This allows us to carry application state
  * application: Move startup handler.
    We can handle them via a vfunc in LiviApplication.
  * application: Move activate handler.
    We can handle them via a vfunc in LiviApplication.
  * application: Move command-line handler.
    We can handle them via a vfunc in LiviApplication. This allows us to
    drop the context and properly dispose the url-processor object.
  * application: Avoid g_object_{get,set}
    We have a proper object to keep the state now
  * window: Move empty state closer to designs.
    Add a Open… button and use the camera icon
  * window: Move error state closer to designs.
    Add a "Try Again" button and use the warning icon
  * window: Reindent.
    No functional change. Do this in a separate commit to ease rebasing.
  * window: Use a parameter on the action for seeking.
    We use millisecons resolution as we're limited to int32 ('i') as int64
    ('x') doesnt work.
  * window: Split out controls.
    If we want to make the controls look differently depending
    on width it's nicer to not clutter the window class even
    further.
    We move the controls over 1:1 (not even reindenting ui) and wire these
    up with a minimal amount of setters.
  * controls: Reindent.
    No functional change. Do this in a separate commit to ease rebasing.
  * controls: Add Stack.
    What we have at the moment matches the wide layot
  * Add skip forward/backward icons.
    Taken from phosh 0.34.0
  * controls: Add initial narrow layout
  * controls: Add narrow property.
    If set we use the narrow layout. We need to switch over
    the popover as it can only have one parent
  * window: Toggle narrow and wide layout
  * controls: Clamp and float the wide layout
  * controls: Add skip forward/backwards buttons to wide controls
  * window: Make sure we don't skip < 0
  * window: Avoid icon if we seek to the same position
  * resources: Sort icons alphabetically
  * icons: Add region-symbolic.
    Taken from GNOME Settings 45
  * window: Move stream related bits to struct.
    This allows us to reset in one place
  * Handle multiple audio stream languages.
    We ignore different bitrates, etc for now.
  * window: Add subtitle streams
  * controls: Add style classes to playback speed  menu.
    This makes the title style consistent with the new lang menu
  * controls: Reindent.
    No functional change. Do this in a separate commit to ease rebasing.
  * window: Avoid multiple seeks.
    If a seek is ongoing and we didn't set a new position yet, reject it.
    This avoids the overlay fading out too quickly.
  * Add utils.
    There' some macros we want to share between modules
  * build: Specify gstreamer version in one place.
    Bump to a halfway recent version while at that.
  * window: Use win.ff action for forward/backward skipping.
    We only kept win.rev for the keyboard shortcuts but can also
    handle this by giving the action detail.
  * window: Make player state a property
  * window: Track stream title.
    Without a title try to make some sense of the URI.
  * Export mpris interface.
    This exports the interfaces and wires up raise. No actual functionality.
    Phosh doesn't pick it up yet as we don't set a proper player status yet.
  * ci: Remove unused remote
  * window: Enable visualization for audio only streams.
    We just use waveform for now and fall back to the next best one if that's missing.
  * window: Handle subtitle selection
  * window: Autohide the panel.
    Show on pointer motion, keep open when pointer is over ui elements
    Follow-up commits refine this.
  * window: Hide cursor on inactivity
  * window: Only change icon on fullscreen.
    Let autohide handle the controls / bars
  * window: Unfullscreen when file choser opens.
    Otherwise the portal's dialog can't set this window as proper
    parent.
  * window: Only hide controls during play
  * window: Only hide controls when there's pointer.
    Things are hard to use on touch otherwise. We still auto-hide
    controls on state mode changes to play.
  * application: Use GTK's window.close action.
    No need to have our own.
  * main: Add short-option for --yt-dlp.
    I'm using it often and keep mistyping it
  * window: Use stateful actions for subtitles and audio tracks.
    This makes them automatically render correctly as radio buttons in the
    popover.
  * controls: Hide the wide layout in narrow mode.
    Otherwise widgets in the wide layout can prevent the window from
    shrinking further.
  * controls: Use a bit less horizontal space.
    Othrwise we overflow when the lang menu is open
  * controls: Use win.ff everywhere.
    Fixes: 19aeb15 ("controls: Use a bit less horizontal space")

 -- Guido Günther <agx@sigxcpu.org>  Fri, 19 Jan 2024 17:09:54 +0100

livi (0.0.5) experimental; urgency=medium

  [ Guido Günther ]
  * Update copyright.
    The files this is based on are LGPL 2.1 in GTK so keep it like that.
  * ci: Use Debian trixie
  * build: Require gtk 4.12
  * sink: Avoid deprecated gdk_gl_texture_new.
    See GTK commit fa44d258d090cc44bb3fc6f21b4d9f32212ae2b8
  * paintable: Avoid -Wfloat-equal compiler warning.
    Use G_APPROX_VALUE
  * paintable: Move interface definition to the top.
    As we do it in phosh, etc
  * paintable: Use automatic cleanup for context
  * sink: Use automatic cleanup for the buffer pool
  * sink: Use automatic cleanup for texture
  * sink: Use automatic cleanup for tmp caps
  * window: Add visual feedback when skipping ff/rev/play/pause.
    Show a centered icon indicating what's going on.
  * window: Drop unused variables
  * window: Indiate end of stream
  * window: Track warnings.
    Let's make sure we at least print them to the console
  * window: Show overlay icon on slider value changes
  * main: Don't hardcode window height in two locations.
    We have it in the ui file too
  * window: Use a larger default height.
    Otherwise we cut off parts of the page
  * window: Drop some unused variables
  * url-processor: New class to fetch URLs via yt-dlp
  * main: Add --yt-dlp command line option.
    Closes: https://gitlab.gnome.org/guidog/livi/-/issues/6
  * window: Bubble up url-processor error messages
  * window: Use livi_window_set_error internally too
  * main: Allow F11 as fullscreen shortcut
  * metainfo: Remove .desktop from app-id.
    As per https://freedesktop.org/software/appstream it's not part
    of the app-id.
  * window: Use same margin for info overlay than for controls
  * window: Use AdwApplicationWindow
  * build: Bump Adwaita dependency to 1.4.
    We want to use AdwHeaderBar
  * window: Make top bar transparent. Gets us closer to the designs

  [ Krassy Boykinov ]
  * Rename µPlayer into Light Video
    Closes: #4
  * Fix format string for 32 bit architectures

 -- Guido Günther <agx@sigxcpu.org>  Wed, 20 Dec 2023 20:39:20 +0100

livi (0.0.4) experimental; urgency=medium

  * metainfo: Update URLs and formfactor
  * sink: Use automatic cleanup
  * main: Don't forget to destroy main window.
    Otherwise we won't clean up the GST elements either
    Closes: https://gitlab.gnome.org/guidog/livi/-/issues/2
  * Allow to set playback speed

 -- Guido Günther <agx@sigxcpu.org>  Fri, 28 Apr 2023 18:34:25 +0200

livi (0.0.3) experimental; urgency=medium

  * Initial release

 -- Guido Günther <agx@sigxcpu.org>  Fri, 31 Mar 2023 12:09:19 +0200
