phoc (0.28.0) experimental; urgency=medium

  [ Newbyte ]
  * NEWS: Fix typo.

  [ Sebastian Krzyszkowiak ]
  * layer-shell: Make find_osk public.
    This is going to be useful in order to reveal shell when fullscreen view
    requests the keyboard and to draw the keyboard inside window thumbnails.
  * output: Reveal the shell when a fullscreen view requests the keyboard.
    Without that, the keyboard would stay hidden unless the user revealed
    shell surfaces manually.

  [ Guido Günther ]
  * output: Only care about mapped views when checking shell reveal.
    This avoids when a surface is marked to become fullscreen but isn't mapped
    yet (doesn't have a wlr_surface attached).
    This happens e.g. when starting electron apps fullscreen.
  * layer-surface: Allow to get and set alpha
  * output: Make layer surface iterator public.
    Name it consistently with the view iterator. We need a forward
    declaration of PhocLayerSurface until we cleanup up more headers.
  * output: Add helper to get layer surfaces in render order.
    We need this in several places.
  * render: Allow to use alpha for layer surfaces
  * layer-shell-effects: Drop unused destroy signal
  * layer-shell-effects: Allow to set surface alpha.
    Extend the protocol with a new effect that allows to set a layer
    surface's alpha value. Bump the protocol version for that.
  * layer-shell-effects: Fix surface typos
  * examples: Allow to test layer surface alpha.
  * layer-shell-effects: Add a test for setting alpha.
    We skip this under pixman. wlroots 0.16 should allow us to
    enable this test permanently.
  * property-easer: Document that we don't ref the object.
    This makes sure that easing of properties stops as soon as the object
    that we track is disposed.
  * desktop: Remove unused code.
    Fixes: a8992d3124442c19d65d1db66ba35727c80ec3f4
  * desktop: Dispose settings
  * desktop: Make settings private.
    We'll add more settings and that makes sure they're in one place
  * desktop: Track whether animations should be used.
    Track the enable-animations GSetting to figure out if we want
    to use animations in the compositor.
    We also add a debug flag to disable animations from the command
    line or in tests.
  * tests: Disable animations.
    Disable animations so the screenshots continue to work. For that
    pass the debug flags to the created compositor.
  * output: Mark cutout texture rendering as unlikely.
    It's a debugging tool after all
  * animatable: Improve documentation
  * timed-animation: Allow to dispose animations when done.
    Setting the dispose-on-done property will dispose the animations so it
    doesn't need to be tracked.
  * tests: Add simple tests for timed animation
  * output: Implement animatable interface.
    This makes it very simple to use an output to drive a
    PhocTimedAnimation without requiring the animated object
    to implement PhocAnimatable itself.
    We currently ignore the case of the output going away while the
    animatable is being driven.
  * view: Add getter for output.
    We want to make all of View's methods use PhocOutput instead of
    wlr_output but let's do that later to avoid more noise.
  * view: Make surface alpha a property
  * view: Animate surface map.
    We fade the surface of a stack in when animations are enabled.
  * view: Make want_automaximize public.
    This can be useful elsewhere and we'd need to move it up anyway
    (or add a forward declaration) as we want to use it in view_map.
  * view: Disable fade in animation when automaximize is in use.
    While the fade in would be nice for slow staring apps (where splash is
    already gone) it introduces flicker for applications using
    xdg-activation. This can be fixed once we landet the xdg-activation
    cleanups.
  * tests: Disable animation for xdg-decoration test.
    The other tests have it disabled.
    Fixes 4a107d661e51f7d0b962c14829aacb2f8e4e36b1
  * layer-shell: Avoid crash when surfaces width or height become negative.
  * Allow to cycle backwards through windows

  [ Alistair Francis ]
  * keyboard: Forward on the super key if pressed by itself.
    If the super key is the only key pressed (so it isn't used as a
    modifier) we want to pass the event onto Phosh. This handles the complex
    logic of looking for the key being pressed and released in Phoc allowing
    Phosh to just easily react to the event.
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/563

 -- Guido Günther <agx@sigxcpu.org>  Thu, 25 May 2023 14:52:59 +0200

phoc (0.27.0) experimental; urgency=medium

  [ Guido Günther ]
  * xwayland: Make wlr_xwayland_signalhandlers private.
    These should be private to the surface object.
  * xwayland-surface: Allow to get the wlr_xwayland_surface.  PhocOutput,
    PhocRenderer and PhocSeat access this directly atm.  Allow to get this in
    favour of keeping the whole structure public (blocking other cleanups).
    We'll cleanup that call sites.
  * xwayland: Drop PhocXWaylandSurface from header
  * xwayland-surface: Reindent according to style
  * xwayland-surface: Use type casts directly
  * xwayland-surface: Nuke phoc_xwayland_surface_from_view
  * xwayland: Drop xwayland.[ch]
    We can remove that middle layer now
  * xwayland-surface: Use `self` instead of `phoc_surface`
    Now that the code is moved over to the class implementation use self
    consistently
  * server: Set flags early. This makes sure that e.g. PhocDesktop can access
    these during construction.
  * server: Add a flag to start XWayland.  This allows us to enable XWayland
    without having to modify the config file
  * main: Add command line flag to launch XWayland.  Can be useful when
    XWayland is disabled in the config
  * ci: Install xwayland. Just until we updated the image
  * tests: Allow to pass flags when creating the compositor
  * tests: Add initial XWayland test.  This makes it simple to check that we
    didn't break things completely.
  * phosh-private: Use view's GObject signals
  * seat: Use view's GObject signals
  * view: Drop wl_signals. We use the GObject based ones now.
  * seat: Use consistent name for seat_view
  * view: Reindent toplevel-handle related functions.
  * view: Make view_create_foreign_toplevel_handle static.
  * view: Make toplevel-handle private.
  * view: Make child_surfaces private
  * view: Move private functions to separate header.
    Reduce view's API surface by moving functions that are meat to be only
    used by derived classes of view into a private header.
  * testlib: Allow to create xdg toplevels without a buffer.
    This is needed for finer grained tests where we want more control
    over the attached buffer. It's also useful for toplevel-decoration
    which wants the decoration set before the buffer is attached.
  * testlib: Handle empty buffers graciously.  This helps when we e.g. create
    a PhocTestXdgToplevelSurface but never fill the buffer.
  * protocols: Generate headers for xdg-toplevel-decoration-unstable-v1
  * tests: Bind bind xdg-toplevel-decoration-unstable-v1
  * tests: Add test for toplevel decoration
  * xdg-shell: Reindent according to codestyle
  * xdg-shell: Use g_assert ()
  * xdg-shell: Don't crash when decoration goes away before the surface.
    This is a protocol error but we need to guard against it nevertheless.
  * ci: Add python3-docutils. We can drop this when we update the image
  * doc: Add a manpage.
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/245
  * event: Drop duplicate Return: doc
  * timed-animation: Remove frame callback after the animation ended.
    If we remove the callback based on the time for the next frame we fail
    to render the last frame of the animation.
  * layer-shell-effects: Don't remove signals when layer-surface is already gone.
    The client should destroy the effects first but we shouldn't crash if it
    doesn't.
  * xdg-surface: Drop xdg_surface_from_view() Just use the type case generated
    by glib.
  * view: Reindent several functions according to codestyle
  * view: Use g_free()
  * view: Make several members private 
  * output: Use phoc_view_is_mapped()
  * text_input: Use phoc_view_is_mapped()
  * view: Make get_wlr_surface_at a virtual functions.
    This unclutters the code in PhocDesktop's view_at
  * testlib: Fix transfer annotations
  * settings: Reindent according to codestyle
  * settings: Match on PhocOutput.
    Follow the pattern that we want to pass Phoc* objects around
    to public functions
  * output: Allow to get the output's name
  * settings: Avoid peeking into wlr_output for vendor/make/model
  * settings: Use GSList for output list.
    While at that add phoc_output_config_{new,destroy} to make
    the code a bit more expressive.
  * settings: Use less generic name for config loading function
  * settings: Split config loading and path handling.
    This will allow us to load config from e.g. memory too
  * settings: Allow to parse data from memory
  * server: Use config object rather than file path.
    This allows to create servers from in memory data. We could move the
    flags and debug_flags here too.
  * settings: Add automatic cleanup
  * settings: Use a GSList for the modes
  * tests: Add config parsing tests
  * server: Deduplicate XWayland config.
  * build: Drop config.h template.  Makes sure we don't have to maintain
    variables in two places
  * build: Add an app-id for phoc
  * build: Setup i18n. This will allow us to use translations
  * main: Init gettext. This allows us to have translated strings in the
    compositor
  * view: Add getter for app-id
  * idle-inhibit: Use app-id of inhibiting view if possible.
    If we have an app-id for the view that inhibits idle use it's app-id
    when requesting the inhibitor.
    This makes sure applications listing inhibitors can print information
    about the inhibiting application. This is e.g. the case for phosh's
    end-session-dialog.
  * data: Add and install desktop file
  * packaging: Install new files. Switch to dh 13 so we detect missing files.
  * render: Fix surface counting in count_surface_iterator.
    We need to increment the value at the pointer location, not the pointer.
    This fixes fullscreen views with popovers as scan_out_fullscreen_view
    now detects these correctly.
    Fixes: 7632c59b2b98190ced94cc261d7e24fb454d8d4b
  * packaging: Ignore Part-Of in commits added by magit
  * xwayland-surface: Ignore size hints < 0.
    E.g. electron apps set this to `-1` when fullscreened.
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/299
  * xwayland-surface: Order signal handlers.
    Use the same ordering as in the struct.
  * xwayland-surface: Don't forget to remove request_fullscreen handler
  * packaging: Ignore Part-Of in commits added by magit
  * server: Drop flag in docstring too.
    Fixes: 75e8003587c9c80716863e8c4ea3f935454bd88a

  [ Sam Hewitt ]
  * data: Add icon

 -- Guido Günther <agx@sigxcpu.org>  Thu, 27 Apr 2023 16:31:46 +0200

phoc (0.26.1) experimental; urgency=medium

  [ Guido Günther ]
  * xwayland: Make wlr_xwayland_signalhandlers private.
    These should be private to the surface object.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Allow to get the wlr_xwayland_surface.
    PhocOutput, PhocRenderer and PhocSeat access this directly atm.  Allow
    to get this in favour of keeping the whole structure public (blocking
    other cleanups).
    We'll cleanup that call sites.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland: Drop PhocXWaylandSurface from header.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Reindent is_movable.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use type casts directly in close.
    Avoid the phoc_xwayland_surface_from_view redirection
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use type casts directly in set_fullscreen.
    Avoid the phoc_xwayland_surface_from_view redirection
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use type casts directly in is_moveable.
    Avoid the phoc_xwayland_surface_from_view redirection
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use type casts directly in set_active.
    Avoid the phoc_xwayland_surface_from_view redirection
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use type casts directly in move.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use type casts directly in resize.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Reindent move_resize.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use type casts directly in move_resize.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use type casts directly in want_auto_maximize.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Nuke phoc_xwayland_surface_from_view.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland: Drop xwayland.[ch]
    We can remove that middle layer now
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Reindent remaining two functions.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * xwayland-surface: Use `self` instead of `phoc_surface`
    Now that the code is moved over to the class implementation use
    self consistently
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * server: Set flags early.
    This makes sure that e.g. PhocDesktop can access these during
    construction.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * server: Add a flag to start XWayland.
    This allows us to enable XWayland without having to modify
    the config file
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * main: Add command line flag to launch XWayland.
    Can be useful when XWayland is disabled in the config
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * ci: Install xwayland.
    Just until we updated the image
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * tests: Allow to pass flags when creating the compositor.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * tests: Add initial XWayland test.
    This makes it simple to check that we didn't break things
    completely.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/427>
  * phosh-private: Use view's GObject signals.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * seat: Use view's GObject signals.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * view: Drop wl_signals.
    We use the GObject based ones now.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * seat: Use consistent name for seat_view.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * view: Reindent toplevel-handle related functions.
    We'll rework these in the next commits. No functional change.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * view: Make view_create_foreign_toplevel_handle static.
    We don't move the function around (to avoid the forward declaration)
    to keep code move under control.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * view: Make toplevel-handle private.
    We move the listseners and the handle over.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * view: Make child_surfaces private.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * view: Move private functions to separate header.
    Reduce view's API surface by moving functions that are meat to be only
    used by derived classes of view into a private header.
    Keeping them in th public header is misleading as calling them from
    elsewhere without doing the derived classes specific setup might not
    give the expected result.
    We don't change function names to keep review simple.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/437>
  * testlib: Allow to create xdg toplevels without a buffer.
    This is needed for finer grained tests where we want more control
    over the attached buffer. It's also useful for toplevel-decoration
    which wants the decoration set before the buffer is attached.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * testlib: Handle empty buffers graciously.
    This helps when we e.g. create a PhocTestXdgToplevelSurface
    but never fill the buffer.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * protocols: Generate headers for xdg-toplevel-decoration-unstable-v1.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * tests: Bind bind xdg-toplevel-decoration-unstable-v1.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * tests: Add test for toplevel decoration.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * xdg-shell: Reindent decoration_handle_destroy.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * xdg-shell: Reindent handle_xdg_toplevel_decoration.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * xdg-shell: Use g_assert ()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * xdg-shell: Don't crash when decoration goes away before the surface.
    This is a protocol error but we need to guard against it nevertheless.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * xdg-shell: Unify indentation.
    There's wasn't much left so just fix it up.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/439>
  * ci: Add python3-docutils.
    We can drop this when we update the image
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/441>
  * doc: Add a manpage.
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/245
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/441>
  * event: Drop duplicate Return: doc.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/442>
  * timed-animation: Remove frame callback after the animation ended.
    If we remove the callback based on the time for the next frame we fail
    to render the last frame of the animation.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/442>
  * layer-shell-effects: Don't remove signals when layer-surface is already gone.
    The client should destroy the effects first but we shouldn't crash if it
    doesn't.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/442>
  * layer-shell-effects: Document that effects should be destroyed before layer-surface.
    This was unspecified before. We'll enforce that in a later version.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/442>
  * xdg-surface: Use self in move_resize()
    Rename xdg_surface to self for consistency
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * xdg-surface: Use wlr_xdg_surface in resize()
    Rename wlr's xdg_surface to wlr_xdg_surface for consistency
    with other functions.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * xdg-surface: Drop xdg_surface_from_view()
    Just use the type case generated by glib.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Reindent view_update_size()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Reindent view_update_decorated()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Reindent view_set_title()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Reindent view_set_parent ()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Reindent view_update_position()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Reindent view_update_output()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Use g_free()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Use g_free in subsurface_destroy()
    This makes it match the g_new0
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Make fullscreen_output private.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * output: Use phoc_view_is_mapped()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * text_input: Use phoc_view_is_mapped()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * desktop: Reindent view_at()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * desktop: Reindent desktop_view_at()
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * view: Make get_wlr_surface_at a virtual functions.
    This unclutters the code in PhocDesktop's view_at
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/443>
  * testlib: Fix transfer annotations.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Reindent.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Match on PhocOutput.
    Follow the pattern that we want to pass Phoc* objects around
    to public functions
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * output: Allow to get the output's name.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Avoid peeking into wlr_output for vendor/make/model.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Use GSList for output list.
    While at that add phoc_output_config_{new,destroy} to make
    the code a bit more expressive.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Use less generic name for config loading function.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Split config loading and path handling.
    This will allow us to load config from e.g. memory too
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Allow to parse data from memory.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * server: Use config object rather than file path.
    This allows to create servers from in memory data. We could move the
    flags and debug_flags here too.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Add automatic cleanup.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * settings: Use a GSList for the modes.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * tests: Add config parsing tests.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * server: Deduplicate XWayland config.
    Having it as flag and config option was duplication. Now that we have
    pulled config parsing out of the server itself we can deduplicate it.
    Fixes 15373e454a75f4415888a807e0f251a6c5c2f27a
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/444>
  * build: Drop config.h template.
    Makes sure we don't have to maintain variables in two places
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>
  * build: Add an app-id for phoc.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>
  * build: Setup i18n.
    This will allow us to use translations
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>
  * main: Init gettext.
    This allows us to have translated strings in the compositor
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>
  * view: Add getter for app-id.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>
  * idle-inhibit: Use app-id of inhibiting view if possible.
    If we have an app-id for the view that inhibits idle use it's app-id
    when requesting the inhibitor.
    This makes sure applications listing inhibitors can print information
    about the inhibiting application. This is e.g. the case for phosh's
    end-session-dialog.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>
  * data: Add and install desktop file.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>
  * packaging: Install new files.
    Switch to dh 13 so we detect missing files.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>
  * render: Fix surface counting in count_surface_iterator.
    We need to increment the value at the pointer location, not the pointer.
    This fixes fullscreen views with popovers as scan_out_fullscreen_view
    now detects these correctly.
    Fixes: 7632c59b2b98190ced94cc261d7e24fb454d8d4b
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/448>

  [ Sam Hewitt ]
  * data: Add icon.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/446>

 -- Guido Günther <agx@sigxcpu.org>  Thu, 27 Apr 2023 16:30:31 +0200

phoc (0.26.0) experimental; urgency=medium

  [ Affe Null ]
  * Implement input method keyboard grab.
    Based on https://github.com/swaywm/sway/pull/4932

  [ Guido Günther ]
  * layer-surface: Fix indentiation.
    We indent by two spaces, sigh.
  * layer-surface: Fix indent
  * desktop: Reformat and rename signal handler.
    Make it match coding style before we make more changes.
  * desktop: Avoid dereferencing desktop->output.
    This avoids another direct member access.
  * renderer: Reformat iterators.
    We're getting closer to have this file consistent as well.
  * output: Tweak format of phoc_output_layer_handle_surface.
    It's all about reading speed
  * layer-shell-effects: Fix confusing variable name.
    It's a PhocLayerSurface not a wlr_layer_surface
    Fixes an overly eager replacement in
    92f9365ba68878701902280d283f58122a6b614b
  * xdg-shell: Use type casts.
    It was quite a bit of work to make PhocView a parent of PhocXdgSurface
    so lets leverage this by using GObject's generated type casts instead of
    direct member access.
    Enhances 83f96cfef3186a1e34f20fc61b13337990309160
  * xwayland: Use type casts.
    It was quite a bit of work to make PhocView a parent of PhocXwayland so
    lets leverage this by using GObject's generated type casts instead of
    direct member access.
    Enhances 83f96cfef3186a1e34f20fc61b13337990309160
  * cursor: Fix indentation in mixed tabs vs space lines
  * input-device: Fix indentation in mixed tabs vs space lines
  * gesture-single: Fix indentation in mixed tabs vs space lines
  * input: Fix indentation in mixed tabs vs space lines
  * main: Fix indentation in mixed tabs vs space lines
  * virtual: Fix indentation in mixed tabs vs space lines
  * xdg-surface: Fix indentation in mixed tabs vs space lines
  * output: Check enable pending state when an enable commit is pending.
    This can happen in case of failure and we want to retry
    it in this case.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/900
  * xdg-surface: Move all handlers out of xdg_shell.
    This only moves the code, reformatting happens in a later commit.
    For the moment we keep subsurface and popup handling there to keep code
    movement under control.
  * xdg-surface: Wrap phoc_xdg_surface_get_wlr_surface_at.
    This way PhocDesktop doesn't have to worry about the relationship
    between PhocXdgSurface and the resulting wlr_surface avoiding
    direct member access.
  * xdg-surface: Make phoc_xdg_surface_from_view static.
    This just wraps the PHOC_XDG_SURFACE() cast making the code harder to
    read. We can drop it in xdg-surface.c later on too.
  * xdg-surface: Drop PhocXdgSurface definition from header
  * view: Initialize self->desktop in init.
    No point in letting surface specific handlers do it.
  * xdg-surface: Simplify handle_*
    Simplify the functions that were in xdg_shell by using `self`
  * xdg-surface: Reindent class methods
  * xdg-surface: Set view properties during object construction.
    No need to do things at two places. We only leave the app id handling
    behind so we don't leak gtk_shell1 into xdg-surface.
  * xdg_shell: Reindent handle_xdg_shell_surface
  * view: Nuke view type.
    Since we have a type system we don't need to store it explicitly.  We'll
    be able to eliminate lots of special casing later on by using class
    virtual function fields.
  * view: Make alpha private
  * view: Make scale private
  * view: Add type check asserts to public functions.
    We want to be sure we have the right types there. As we want to use
    phoc_view_get_instance_private we need to drop const from two public
    functions.
  * view: Make view decoration private.
    The current implementation (even before these changes) is not great
    as it hardcoded the parameters in several places but as we don't
    want to risk any functional changes leave it like that a little longer.
    It'll need more work once we improve decorations visually anyway.
  * view: Reindent state getters.
    They're one liners and we'll add more code.
  * view: Make state private
  * Fix indentation in mixed tabs vs space lines.
  * helpers: Add indent test.
    For now we test for tab instead of whitespace but keep a list of files
    to clean up.
  * Drop unused code in several places
  * layer-shell-effects: Don't leak drag-surface in error path
  * main: Use G_NORETURN.
    Avoids a clang warning
  * main: Don't fail on format-nonliteral.
    There's not much we can do about the warning itself as we need
    to pass the format on to g_logv().
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/173
  * build: Don't cover submodules.
    They have their individual coverage
  * ci: Allow doc build fail.
    We ignored this as we hit a gi-docgen crash. This was fixed with
    82a162004a2cef0a444cac43cb8f5ce455cdd125.
  * ci: Use meson where possible.
    Consistent with e.g. phosh and avoids warnings
  * build: Set fast_unwind_on_malloc=0 in tests.
    Makes ASAN simpler (we have that in phosh since some time) as
    we get better backtraces of the allocations.
  * render: Destroy wlr_renderer on finalize
  * render: Don't forget to chain up in finalize.
    This had no bad consequences in practice so far as the renderer class
    doesn't do much yet.
    This lets the `run` and `server` tests pass under ASAN.
  * output: Avoid changing the list we iterate over.
    This avoids an illegal access on shutdown when the compositor
    is used with another client and phosh is started separately.
  * event: Add function for automatic cleanup
  * cursor: Don't leak PhocEvent.
    Fixes a8992d3124442c19d65d1db66ba35727c80ec3f4
  * layer-shell-effects: Don't leak hashmap
  * tests: Add leak suppressions
  * tests/testlib: Add a helper to update the attached buffer
  * tests/testlib: Don't forget to cleanup the cairo surfaces in image comparisons
  * tests/testlib: Don't leak test filename
  * tests/testlib: Don't forget to disconnect test client from the display
  * tests/testlib: Destroy globals on client cleanup
  * tests/testlib: Don't leak toplevel handle
  * tests/property-easer: Don't leak cmp_obj.
    We get a ref from g_object_get ().
  * tests/client: Don't leak surface
  * tests/xdg-shell: Rename automaximize check.
    Make it easy to distinguish from maximizing by other means
  * tests/xdg-shell: Test maximization via foreign-toplevel
  * tests/phosh-private: Don't leak keyboard events
  * tests: Don't leak screencopy frames.
    This lets the layer-shell test pass under ASAN
  * tests: Use a single timeout.
    We bump the timeout to 10s to pass under ASAN with
    fast_unwind_on_malloc=0. Individual tests can bump it should
    the need a longer one.
  * ci: Add asan test.
    Run tests under ASAN (based on what phosh does)
  * ci: Add xwayland dependency for alpine.
    Unbreaks the alpine CI pipeline
  * ci: Fix test coverage collection
  * gtk-shell: Include glib.h.
    Needed for G_BEGIN_DECLS and friends
  * leak-suppress: Add suppresson for gvfs.
    See https://gitlab.gnome.org/GNOME/gvfs/-/issues/577. We'll
    need this in the next commit.
  * tests: Wrap in g_test_dbus()
    idle-inhibit will talk to DBus and we don't want to interfere with the
    test system. As this also clears env vars preserve/set them in the test
    fixtures.
  * view: Add mapped property.
    This allows us to connect to `notify::mapped` for map state changes.
  * view: Add "surface-destroy" signal.
    This makes things consistent with the "input-destroy" and
    "output-destroy" signals.
    With that in place we can drop events.{view,destroy} in the view cleanup
    series.
  * Add idle-inhibit implementation.
    This allows programs that don't talk to gnome-session to inhibit screen
    blank (which will also inhibit suspend).
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/143
  * desktop: Wire up idle-inhibit.
    Instead of adding even more to PhocDesktop's public interface add it as
    a instance private instead.
    This will also allow us to make more bits private (and we can drop it
    again once the whole structure becomes private).
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/143
  * keybindings: Document return value
  * keyboard: Clarify doc strings.
    Returning `false` in case the event should be propagated further.  This
    does not necessarily mean it's propagated to wayland clients yet.
  * keyboard: Move state check into the individual functions.
    Let the individual handlers decide if they want to act on key
    press or release. This unclutters `phoc_keyboard_handle_key`
  * phosh-private: Fix description
  * phosh-private: Add missing comment
  * phosh-private: Forward key release as well.
    Forward the key release event so clients can decide whether they
    want to react press or release and do things like long press.
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/186
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/248
  * view: Clarify comment
  * view: Reindent resize
  * view: Remove unused variable
  * view: Resize is not optional
  * view: set_activate is not optional.
    Let's drop the check and rename the public method
  * view: Use self in view_resize ()
  * view: Make view_resize static and prefix.
    It's only used in PhocView
  * view: Move resize is not optional so no need to have fallback code
  * view: Reindent view_resize
  * view: Prefix view_resize
  * view: Document optional virtual methods.
    Mark those as optional that have a fallback *and* where at least
    one of the derived classes doesn't provide an implementation.
  * view: Remove checks for set_maximized.
    It's implementation is mandatory
  * view: Add default implementation for for_each_surface.
    Instead of checking if there is an implementation and falling back
    provide a default implementation.
  * view: Add default implementation for get_geometry.
    Instead of checking if there is an implementation and falling back
    provide a default implementation.
  * view: Remove unused code in view_move
  * view: Add default implementation for move.
    Instead of checking if there is an implementation and falling back
    provide a default implementation.
  * view: Make tile direction private.
    Just a matter of using the already present getter
  * view: set_fullscreen is not optional.
    So drop the check
  * view: want_auto_maximize is not optional.
    So drop the check
  * view: Close is not optional.
    So remove check and add prefix
  * view: Add fallback for set_tiled virtual method
  * view: Make required virtual functions purely virtual.
    This makes sure we don't forget to implement them on new view types
    of when refactoring code.

 -- Guido Günther <agx@sigxcpu.org>  Mon, 27 Mar 2023 12:46:52 +0200

phoc (0.25.0) experimental; urgency=medium

  * build: Untabify
  * build: Use summary.
    More in line with other projects and uses colors
  * output: Add getters for scale.
    We want to get rid of direct member access
  * server: Use g_clear_handle_id.
    Less code and easier to read.
  * server: Add getter for desktop.
    Will allow us to reduce direct member access, similar to the renderer.
    We're not updating existing code yet to keep the diff noise under
    control.
  * settings: Strip whitespace from value.
    No need to fail parsing due to this
  * output: Move enums before type definition.
    Just to match coding style, no functional change.
  * build: Build static and shared lib.
    Otherwise gir fails as it trips on the not resolved symbols from
    gmobile.
  * build: Drop gtk_doc vs embedded wlroots restriction.
    With a shared libphoc this works too (see previous commit)
  * Add gmobile as git submodule.
    We're not using the wrap as the submodule makes
    it simpler for distros to bundle it.
  * server: Parse device-tree compatibles.
    This will allow us to query display cutout information for our own
    consumption or to provide it to client.
  * server: Add debug flag to debug cutout information.
    This allows us to overlay the rendering  of notches and cutouts for
    debugging purposes.
  * ouput: Allow to render display cutout.
    This currently is used on all outputs but as it's for debugging
    only that's fine for the moment.
  * Add test data for a tiny layout.
  * build: Bump meson dependency to 0.56.0
  * build: Avoid deprecated get_pkgconfig_variable()
  * build: Avoid deprecated build_root()
  * build: Use a static dependency to link phoc.
    Otherwise it defaults to dynamic linking and we don't want to
    ship a libphoc atm.
  * ci: Switch to Debian bookworm
  * ci: Update base image.
    It's been a while
  * d/control: Use packaged gi-docgen.
    It trickled into distributions.
  * xdg-activation: Fix indentation
  * keyboard: Minor indentation cleanup.
    Make the 'Handle translated keysyms' part match the 'Handle raw
    keysyms'. It took me a second to convince myself that they match.
  * keyboard: Fix indentation.
    We want the opening brace of a function on a new line
  * keyboard: Check the power key after subscribed bindings.
    This gives clients the possibility to listen to power button presses.
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/206

 -- Guido Günther <agx@sigxcpu.org>  Sun, 26 Feb 2023 09:41:46 +0100

phoc (0.24.0) experimental; urgency=medium

  * doc: Add small getting started document.
    Add some hints how to run phoc from sources on constrained
    devices like phones.
  * server: Align enum valus at '='
    This matches what we e.g. do in view.h.
  * layer-shell-effects: Use wlr_layer_surface consistently.
    This is similar in spirit than 88b1550aff32c639b1056ee76207295cb46723f5
    and helps to identify the types in use.
  * layer-shell: Remove unused parameter
  * layer-surface: Fix names for output list.
    The list members are PhocLayerSurface and on the output it's
    called layer_surfaces.
    Fixes: afae4a3a ("output: Use a single list for all layer surfaces")
  * layer-shell: Allow to dump layer-surfaces.
    Add a debug option to figure out the current layer surfaces, their order
    and margins.
    This will become more useful with
    https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/352
    but as it's off by default we can have it right now.
  * layer-shell-effects: Don't assert on NULL layer-surface.
    Don't abort the compositor when the client already destroyed the layer
    surface but not yet the drag surface.
    Except for phoc_draggable_layer_surface_slide the functions
    don't actually access the layer-surface but it's easier to be
    consistent in case we need to access it later on when adding new
    features.
  * layer-shell-effects: Don't access data before asserts.
    Check the data before accessing it. Also clarifies some comments
    related to data access.
  * phoc-layer-shell-effects: Fix argument name.
    We set mode, not state
    Fixes 0820da00 ("Add layer-shell-effects protocol")
  * output: Allow to remove frame callbacks by animatable
  * layer-surface: Remove all frame callbacks on finalize.
    When the object goes away we want to drop all animations. This frees
    users of the animatable interface to worry about when the surface goes
    away since the difference between the wlr-layer-surface's destroy
    signal and finalize can be tricky to track.

 -- Guido Günther <agx@sigxcpu.org>  Sat, 28 Jan 2023 16:26:17 +0100

phoc (0.23.0) experimental; urgency=medium

  * build: Add configure file to generated sources.
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/310
  * Rename config.h to phoc-config.h.
    This makes sure we don't accidentally include a config.h from another
    project - e.g. when include paths aren't set up correcty.
  * gitignore: Remove copy / paste artifact.
    Fixes: c960805d9f87c157b4d9b0ae0fadd6cfdad5459b
  * Switch development branch to main (Closes: #256)
  * keybindings: Remove unused property getter / setter
  * keybindings: Don't chain up to contruct twice.
    We already do so at the top of phoc_keybindings_constructed
  * ci: Collect junit reports.
    Phosh added this about 1y ago, let phoc catch up
  * render: Pass wl_shm_buffer to phoc_renderer_render_view_to_buffer.
    So far only the pointer to the data was passed. This is error prone as
    the data pointer is constrained by wl_shm access restrictions. We also
    reduce the number of parameters passed around.
  * render: Don't access interleaving shm buffers
    wl_shm_buffer_{begin,end}_access docs say
    It is safe to nest calls to these functions as long as the nested calls
    are all accessing the same buffer.
    So let's not access interleaving buffers.
    This fixes the pixman renderer. (Closes: #290)
  * tests: Run thumbnail test when using pixman renderer.
    When we're pretty certain we're using pixman we can enable the
    thumbnail tests.
  * ci: Use pixman renderer for tests.
    This allows us to run the thumbnail tests again
  * d/gbp.conf: Bump meson version automatically.
    Less manual work

 -- Guido Günther <agx@sigxcpu.org>  Thu, 12 Jan 2023 11:24:10 +0100

phoc (0.21.1) byzantium; urgency=medium

  [ Guido Günther ]
  * xdg-surface: Fix crash on close with open popups
  * view: Improve doc strings for {get,set}_scale_to_fit
  * view: Allow to set activation token
  * view: Reindent and prefix view_activated
  * xdg-activation: Delay token submission

  [ Joerg ]
  * seat: Check if touch point is valid (Closes: #278)

  [ Sebastian Krzyszkowiak ]
  * desktop: Allow to pass NULL as sx and sy to view_at
  * render: Handle viewports and transforms when rendering to buffer
  * cursor: Consider root surface for layer-shell check in handle_touch_down
  * layer-shell: Adjust focus order to match rendering and input

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Thu, 01 Sep 2022 10:54:22 +0200

phoc (0.21.0) byzantium; urgency=medium

  [ Guido Günther ]
  * layer-shell-effects: Make sure we remove the mapping

  [ Sebastian Krzyszkowiak ]
  * xdg-shell: Use correct state for maximized and fullscreen flags
  * xdg-surface: Don't schedule configure when the size doesn't change
  * output: Don't check for empty buffer damage in damage_surface_iterator
  * view: Handle initial mapped state of PhocViewChild
  * layer-shell-effects: Calculate slide duration based on distance to travel
  * layer-shell-effect: Split accept_drag out of drag_update
  * layer-shell-effects: Accept drag immediatelly during an animation
  * render: Keep the aspect ratio when rendering into buffer
  * render: Don't take view scale into account when drawing into buffer
  * render: Apply geometry before scaling to buffer coordinates
  * render: Simplify scale handling when rendering to buffer
  * render: Position the surface using matrix when rendering to buffer
  * layer-shell: Move handling of mapped property out of commit handler
  * desktop: Ignore unmapped surfaces in layer_surface_at
  * layer-shell-effects: Make sure to apply new margin on animation end

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Thu, 04 Aug 2022 12:38:07 +0200

phoc (0.21.0~beta1) byzantium; urgency=medium

  [ Guido Günther ]
  * output: Use g_assert()
  * layer-surface: Move subsurface list init into object
  * layer-shell: Pass wlr-layer-surface as property
  * layer-surface: Move handle_output_destroy to layer-surface
  * layer-shell: Drop NULL check
  * Add PhocAnimatable interface
  * output: Allow to add and remove frame callbacks
  * layer-surface: Implement animatable interface
  * layer-shell-effects: Don't access renderer directly
  * layer-shell-effects: Calculate animation progress based on frame clock
  * tests: Sort alphabetically
  * Add timed animations
  * layer-shell-effects: Use PhocEasing
  * Move open coded shield to PhocOutputShield object
  * examples: Add an example that binds to phosh-private protocol
  * output: Fix typo
  * cursor: Use consistent naming in phoc_cursor_handle_touch_motion
  * cursor: Use phoc_ prefix
  * cursor: Use consistent naming
  * layer-shell: Name PhocLayerSurface layer_surface in arrange_layer()
  * layer-shell: Name PhocLayerSurface layer_surface in find_osk()
  * layer-shell: Name struct wlr_layer_surface wlr_layer_surface in handle_surface_commit()
  * layer-shell: Name PhocLayerSurface layer_surface in handle_surface_commit()
  * layer-shell: Name PhocLayerSurface layer_surface in handle_destroy()
  * layer-shell: Name struct wlr_layer_surface wlr_layer_surface in handle_map()
  * layer-shell: Name PhocLayerSurface layer_surface in handle_map()
  * layer-shell: Name PhocLayerSurface layer_surface in handle_unmap()
  * layer-shell: Name struct wlr_layer_surface wlr_layer_surface in wlr_layer_surface in handle_layer_shell_surface()
  * layer-shell: Name PhocLayerSurface layer_surface in handle_layer_shell_surface()
  * layer-shell: Name PhocLayerSurface layer_surface in update_cursors()
  * layer-shell: Name struct wlr_layer_surface wlr_layer_surface in wlr_layer_surface in arrange_layer()
  * layer-shell: Name PhocLayerSurface layer_surface in phoc_layer_shell_update_focus()
  * layer_shell: Use g_assert() everywhere
  * layer-shell: Pass PhocOutput instead of wlr_output
  * xwayland-surface: Reindent phoc_xwayland_surface_from_view()
  * xwayland-surface: Document phoc_xwayland_surface_from_view()
  * cursor: Add element-type to phoc_cursor_add_gesture
  * view: Add transfer annotation to phoc_view_from_wlr_surface()
  * gesture: Drop superfluous since: annotation
  * input: Add transfer annottation for phoc_input_seat_from_wlr_seat()
  * xdg-surface: Document phoc_xdg_surface_from_view()
  * seat: Document phoc_seat_get_focus()
  * seat: Document currently focused view()
  * output: Indent arguments of "for-each" helpers
  * output: Document iterators
  * desktop: Reindent layer_surface_at()
  * layer_shell: Reindent change_osk()
  * output: Use a single list for all layer surfaces
  * output: Init fixed values in phoc_output_init()
  * time-animation: Use some more links
  * timed-animation: Drop pointless since: annotation
  * output-shield: Fix property name in doc string
  * gesture-zoom: Drop unused parameter in doc string
  * gesture-zoom: Make variable name in declaration match the doc string
  * output: Fix doc string parameter
  * output-shield: Fix docstring
  * timed-animation: Add transfer annotations
  * layer-shell-effects: Document phoc_draggable_layer_surface_get_layer_surface
  * layer-shell-effects: Drop phoc_draggable_layer_surface_is_draggable
  * layer-shell-effects: Make declaration match definition
  * event: Use Phoc prefix
  * build: Add generated enum sources to gir build
  * anim-enums: Fix reference
  * anim-enums: Drop empty line
  * helpers: Add a helper to filter doc gen warnings
  * xdg-surface: Use phoc_ prefix consistently
  * view: Add PhocViewChildInterface typedef
  * layer-surface: Use phoc_ prefix consistently
  * switch: Use phoc_ prefix consistently
  * layer-shell: No need to assign twice
  * desktop: Use g_assert() for consistency with the rest of the code
  * desktop: Make scale-to-fit a property
  * view: Reindent view_update_scale
  * view: Update scale when global scale changes
  * view: Rename and reindeint view_set_app_id()
  * view: Handle scale-to-fit changes via property binding

  [ Arnaud Ferraris ]
  * cursor: avoid NULL pointer dereference

  [ Sebastian Krzyszkowiak ]
  * gitlab-ci: Enable octarine repo in PureOS build jobs
  * Revert "ci: Mark PureOS byzantium job as manual"
  * d/rules: Workaround false positive warnings with Byzantium's GCC version
  * render: phoc_renderer_render_view_to_buffer: Use public wlroots APIs
  * PhocInputMethodRelay: Introduce phoc_input_method_relay_is_enabled method
  * PhocLayerShell: Only elevate OSK if focused layer also has IM relay focus
  * debian: Update "Breaks" relationship with phosh
  * render: Remove broken fullscreen scan out debug code
  * layer-shell-effects: Add phoc_draggable_layer_surface_get_state
  * layer-shell-effects: Add phoc_draggable_layer_surface_is_unfolded
  * output: Add phoc_output_has_shell_revealed
  * output: Reveal shell when a layer-surface is unfolded, focused or dragged
  * layer-shell: Don't ignore TOP layers when setting focus w/ fullscreen view
  * seat: set_focus_layer: Only arrange a single output after unsetting focus
  * output: Add force_shell_reveal and update_shell_reveal methods
  * seat: Update output's shell reveal status on focus layer changes
  * layer-shell-effects: Update output's shell reveal status on state changes

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Sun, 26 Jun 2022 19:32:37 +0200

phoc (0.20.0) byzantium; urgency=medium

  [ Guido Günther ]
  * render: Simplify render_layer invocations
  * render: Use output directly
  * render: Rename _box to box
  * editorconfig: Bump line length to 100
  * testlib: Include header only once
  * test-layer-shell: Fix indent
  * tests: Add code that lets us create layer surfaces easily
  * output: Fix some indentation
  * config.h: Add some comments
  * Add gesture support
  * Add layer-shell-effects protocol
  * layer-shell-effects: Prevent drag in the wrong direction when unfolded
  * Attach draggable surfaces to gestures
  * Add layer-shell-effects example
  * testlib: Fetch layer-shell-effects protocol
  * tests: Add initial layer-surface-effects test
  * xdg-shell: Reformat xdg_popup_unconstrain()
  * xdg-shell: Use toplevels output when unconstraining popups
  * subproject: Update wlroots to 0.15.1 plus our fixes
  * d/control: Bump wlroots dependency to 0.15.1
  * ci: Work around a crash in g-ir-compiler
  * ci: Switch docker container to sid
  * ci: Use wlroots 0.15.1 based container image
  * ci: Mark PureOS byzantium job as manual
  * Remove startup-id compilation
  * build: Drop output power management related checks
  * Adjust to render changes
  * render: Allow to fail initialization
  * desktop: Reindent handle_new_output
  * output: Handle failure to create renderer
  * renderer: Make sure the modifier list isn't empty
  * build: Require wlroots 0.15.1
  * output: Clear list of layers on finalize
  * cursor: Handle touch frame event
  * layer-shell-effects: Adjust to wlroots 0.15.x
  * gtk-shell: Namespace phoc_gtk_surface_from_resource
  * gtk-shell: Add getter for app_id
  * gtk-shell: Make PhocGtk{Shell,Surface} private
  * layer-shell-effects: Make drag-surface related structs private
  * tests: Move xdg-suface helpers to testlib
  * gtk-surface: Drop NULL check
  * view: Make tiled state a bit mask
  * view: Add getter for tile direction
  * gtk-shell: Send edge constraints
  * build: Sort gesture source files alphabetically
  * gesture: Use Phoc prefix consistently
  * seat: Don't use assert and g_error for the same thing
  * cursor: Track and use compositor side touch points
  * gesture: Add helpers needed for zoom and cancel
  * Support zoom gestures
  * build: Check for wlr_seat_touch_send_cancel at build time
  * cursor: Cancel touch gestures

  [ Pablo Barciela ]
  * server: Fix [-Wmissing-field-initializers] warning
  * testlib: Fix [-Wmissing-field-initializers] warning
  * tests: move 'struct _PhocTestXdgToplevelSurface' to 'testlib.h'

  [ Arnaud Ferraris ]
  * utils: Add new function for calculating output scale
  * output: Automatically compute scaling factor

  [ Sebastian Krzyszkowiak ]
  * Adjust to wlroots 0.15
  * layer-shell-effects: Add phoc_draggable_layer_surface_get_layer_surface
  * cursor: Use phoc_draggable_layer_surface_get_layer_surface
  * subprojects: Switch wlroots repo to patch-queue/pureos/octarine branch

  [ anteater ]
  * desktop: Revert output enable when commit fails

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Mon, 30 May 2022 20:03:25 +0200

phoc (0.13.1) byzantium; urgency=medium

  [ Sebastian Krzyszkowiak ]
  * view: move_resize: Cancel a pending move_resize
  * render: scan_out_fullscreen_view: Get rid of view centering

  [ Guido Günther ]
  * testlib: Convert the whole buffer during abgr_to_argb conversion
  * layer_shell: Move surfaces between layers before rearranging
  * tests: Remove superfluous surface commit
  * layer-shell: Test set_layer

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Wed, 30 Mar 2022 20:10:58 +0200

phoc (0.13.0) byzantium; urgency=medium

  [ Pablo Barciela ]
  * pointer: remove unused struct member
  * keyboard: declare some parameters with const
  * testlib: Fix weird assignment

  [ Guido Günther ]
  * scale-to-fit: Split printing of into separate function
  * scale-to-fit: Make shellcheck happy
  * seat: Don't dispose input
  * seat: Invoke finalize
  * cursor: Finalize object
  * cursor: Move wlr_xcursor_manager init from seat to cursor
  * desktop: Destroy output layout
  * desktop: Make xcursor manager depend on XWayland
  * desktop: Avoid indirection
  * settings: Reindent and modernize public functions
  * Drop ini file parser
  * settings: Use GKeyFile
  * settings: Don't exit when parsing settings
  * settings: Drop remainin users of roots_config_*
  * settings: Use g_free() to match the g_* allocations
  * settings: Drop unused prefixes
  * settings: Use g_assert()
  * settings: Remove unused includes
  * settings: Use PHOC_CONFIG_DEFAULT_SEAT_NAME
  * server: Invoke phoc_config_destroy
  * Don't include wlr_log.h
  * server: Sort debug flags alphabetically
  * view: Use PhocView consistently
  * view: Use PhocViewType
  * view: Use PhocViewInterface consistently
  * view: Fix parameter name
  * view: Add doc string for view
  * view: Link PhocChildView to PhocView
  * d/control: Add dependencies for embedded wlroots build
  * server: Add and use renderer getter
  * render: Use g_clear_list
  * render: Move damage tracking rendering to separate function
  * render: Don't set clear color again
  * render: Move fullscreen scanout into scanout_fullscreen
  * render: Simplify scanout check a bit
  * output: Add and use phoc_output_has_fullscreen_view ()
  * render: Use faster list empty check
  * output: Remove listeners in the same order as in the struct
  * output: Use g_clear_list
  * render: Invoke 	wlr_renderer_end(wlr_renderer earlier
  * view: Fix more doc links
  * output: Document phoc_output_damage_from_view
  * output: Add docstring for PhocOutput
  * server: Add docstring for PhocServer
  * server: Add docstring for PhocKeyboard
  * seat: Add getters to query seat capabilities
  * layer-surface: Add getter for namespace
  * cursor: Avoid seat round trip for handle_pointer_motion
  * cursor: Avoid seat round trip for handle_pointer_motion_absolute
  * cursor: Avoid seat round trip for handle_pointer_button
  * cursor: Avoid seat round trip for handle_pointer_axis
  * cursor: Avoid seat round trip for handle_pointer_frame
  * server: Fix indentation
  * output: Fix indentation
  * output: Improve indentation
  * layer-surface: Document link
  * layer-surface: Add and use phoc_layer_shell_get_output()
  * desktop: drop last_frame
  * output: Drop last_frame
  * output: Use typedef for iterator
  * render: Make output_render a method
  * render: Make view_render_to_buffer a method
  * render: Use cast
  * view: Drop unused declaration
  * utils: Fix doc string
  * view: Add a GObject as first element
  * Make xdg-surface a minimal GObject
  * xdg-surface: Make destruction private
  * xdg-surface: Add xdg-surface property
  * xdg-surface: Add xdg_surface_get_geometry
  * xdg-surface: Move view interface implementation over
  * server: Move xwayland include out of header
  * Rename xwayland surface's to PhocXWaylandSurface
  * Use phoc_xwayland_surface_from_view()
  * Make PhocXWayland a minimal GObject
  * xwayland-surface: Set PhocXWaylandSurface on the wlr surface
  * xwayland-surface: Remove listeners in finalize
  * xwayland-surface: Move view interface over
  * Update wlroots submodule
  * build: Conditionally check for wlr_xdg_activation_v1_add_token
  * Handle xdg-activation
  * gtk-shell: Submit startup-id as token to xdg-activation
  * Make PhocView a GObject
  * view: Use PHOC_VIEW () as it does type checks
  * view: Move fixed value init to _init()
  * view: Drop destroy
  * view: Move destruction into finalize
  * view: Drop view_destroy()
  * view: Drop custom impl
  * view: Introduce private data
  * view: Make settings private
  * view: Make title and app_id private
  * view: Drop view_init
  * view: Document virtual functions
  * view: Prefix view types with PHOC_
  * view: Move PhocViewDecoPort
  * view: Move deco parts into phoc namespace
  * Use PhocViewDecoPart everywhere
  * desktop: Drop roots_
  * build: Add xdg-surface.h to sources
  * build: Add xdg-activation-v1.h to sources
  * view: Make PhocSubsurface private
  * view: Drop roots_xdg_toplevel_decoration forward declaration
  * view: Make roots_xdg_toplevel_decoration private
  * view: Make roots_xdg_popup private
  * view: Move phoc_xdg_surface_from_view to xdg-surface.h
  * view: Move phoc_xwayland_surface_from_view to xwayland-surface.h
  * view: Remove now unneeded forward declarations
  * view: Drop xdg-* headers
  * Revert "gitlab-ci: Allow PureOS job to fail"

  [ Doug Wood ]
  * scale-to-fit: Query current state if called with just the app id.

  [ Sebastian Krzyszkowiak ]
  * view_render_to_buffer: Gracefully handle buffer creation failure
  * desktop: Handle cases where only some outputs are on in toggle_output_blank
  * desktop: toggle_output_blank: Ignore outputs that aren't part of the layout
  * layer-shell: Don't give focus to TOP layer when there's a fullscreen view
  * cursor: Update layer-shell focus when (un)revealing shell

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Fri, 25 Mar 2022 16:47:20 +0100

phoc (0.12.0) byzantium; urgency=medium

  [ Andreas Streichardt ]
  * remove xkb default assumptions

  [ Guido Günther ]
  * desktop: Enable xdg-foreign support
  * seat: Drop NULL check
  * seat: Make object allocation consistent
  * seat: Fix indentation
  * seat: Use g_critical instead of wlr_log
  * layer-shell: Use g_critical instead of wlr_log
  * desktop: Use g_critical instead of wlr_log
  * settings: Use g_critical instead of wlr_log
  * text-input: Use g_debug instead of wlr_log
  * d/control: Use << for smaller than relationships
  * d/copyright: Drop references to nonexistent files
  * d/control: Bump standards version
  * desktop: Don't remove startup-id listener when not connected
  * desktop: Drop unused code
  * desktop: Move xwayland configuration to seprate function
  * desktop: Deconfigure xwayland only when created
  * desktop: Handle XWayland startup errors
  * Use g_setenv() consistently
  * desktop: Enable viewporter
  * output: Remove redundant check in phoc_view_accept_damage()
  * view: Add and use phoc_view_is_mapped
  * view: Rename and reindent view_child_init to phoc_view_child_init
  * view: Use typedefs for child views as well
  * view: Reindent child views
  * view: Clarify "base" classes
  * view: Use typedefs in the header
  * view: Clarify source "object" on `new_subsurface`
  * subsurface: Rename subsurface_create to phoc_view_subsurface_create
  * subsurface: Make phoc_view_subsurface_create void
  * subsurface: Use g_new0 when allocating subsurface
  * view-child: Use the shorter `child` in structs that embed it
  * view: Drop output.h include
  * view: Prefix and reindent view_apply_damage
  * output: Allow phoc_output_damage_from_view() to optionally damage the whole view
  * output: Drop phoc_output_damage_whole_view()
  * view: Make view_damage_whole  match phoc_view_apply_damage
  * view-child: Start tracking mapped state
  * view-child: Add phoc_view_child_{apply_damage,damage_whole}
  * xdg-popup: Use phoc_view_child_damage_whole()
  * view: Move subsurface initialization to separate function
  * view: Rename and reindent view_child_destroy to phoc_view_child_destroy
  * view: Move public function to the end
  * view-child: Use child specific damage function when destroying child
  * view-child: Make sure to init a childs children
  * view-child: Document where `link` links to
  * view: Reindent and rename view_child_handle_new_subsurface
  * view-child: Invoke the child specific creation function
  * view: Use the passed in surface
  * view: Drop remaining use of `struct roots_subsurface`
  * view: Drop remaining use of `struct roots_view_child`
  * view-child: Document struct members a bit
  * view: Only damage child on subsurface map/unmap
  * view: Reindent and rename view_child_handle_new_commit
  * view-child: Only damage child on commit
  * view: Make PhocSubsurface private
  * output: Rename surface iterator to PhocSurfaceIterator
  * text-input: Add typedefs
  * text-input: Separate summary
  * text-input: Move member documentation to docstring
  * text-input: Modernize phoc_text_input_create()
  * text-input: Modernize relay_handle_text_input
  * text-input: Modernize phoc_input_method_relay_{init,destroy}
  * text-input: Modernize phoc_input_method_relay_set_focus()
  * text-input: Modernize relay_handle_input_method()
  * text-input: Use Phoc* types
  * text-input: Make PhocTextInput private
  * text-input: Handle text-input being registered late
  * output: Use PhocView
  * desktop: Use PhocView
  * xwayland: Use PhocView
  * xdg_shell: Use PhocView
  * cursor: Use PhocView
  * keybindings: Use PhocView
  * seat: Use PhocView
  * gtk-shell: Use PhocView
  * input: Use PhocView
  * layer-shell: Use PhocView
  * phosh-private: Use PhocView
  * render: Use PhocView
  * Rename roots_view_from_wlr_surface
  * view: Fix comment
  * output: Use G_N_ELEMENTS() for layers consistently
  * view: Add phoc_ prefix to view_set_fullscreen
  * output: Unfullscreen when output damage goes away
  * output: Free output-damage releated bits in handle_output_damage_destroy
  * output: Only emit output-destroy from phoc_output_destroy()

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Tue, 25 Jan 2022 14:28:19 +0100

phoc (0.11.0) byzantium; urgency=medium

  [ Sebastian Krzyszkowiak ]
  * Update to wlroots 0.13 and drop support for older versions
  * Adjust to subsurface handling changes in wlroots 0.14
  * desktop: Switch to wlr_primary_selection_v1
  * desktop: Remove unused wlr_list header
  * render: Visualize touch points with rects instead of circles
  * Depend on wlroots 0.14
  * Thumbnail rendering with wlr_allocator

  [ Guido Günther ]
  * build: Allow wlroots >= 0.14.1
  * ci: Use system wlroots on Debian
  * ci: Print package list on Debian
  * ci: Switch to wlroots 0.14.1
  * input: Add guard to public function
  * testlib: Use g_test_message for buffer match messages
  * testlib: Print all mismatches
  * tests: Update empty.png
  * tests: Update test-xdg-shell-maximized-1.png
  * tests: Update test-xdg-shell-normal-1.png
  * tests: Update test-phosh-private-thumbnail-simple-1.png
  * tests: Update layer-shell screenshots
  * test-layer-shell: Reverse layer surface distruction
  * tests: Add resolution for headless backend
  * tests: Hide thumbnail test behind PHOC_TEST_HAVE_DRM
  * gitlab-ci: No need for xvfb when collecting coverage
  * gitlab-ci: Run tests through meson
  * gitlab-ci: Allow PureOS job to fail

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Wed, 15 Dec 2021 21:04:53 +0100

phoc (0.10.0) byzantium; urgency=medium

  [ Guido Günther ]
  * cursor: Drop unused struct member
  * Use g_debug() instead of wlr_log()
  * build: Sort settings correctly
  * text-input: Fix doc string
  * input: Add a doc string
  * seat: Make a GObject
  * Add input-device class
  * pointer: Use PhocInputDevice
  * touch: Move public function and _init() to the end of the file
  * touch: Remove unused dispose
  * touch: Use input-device as base class
  * touch: Remove unused headers
  * touch: Add doc string
  * pointer: Add doc string
  * data: Add systemd unit and config to simplify phoc development
  * data: Make dev user id configurable
  * output: Untangle includes
  * output: Remove unused includes
  * output: Use 'pragma once' and G_{BEGIN,END}_DECLS
  * view: Untangle includes
  * view: Use 'pragma once' and G_{BEGIN,END}_DECLS
  * input: Drop unneeded includes
  * dekstop: Untangle includes
  * Use #pragma consistently
  * xcursor: Use PHOC_ prefix
  * Make layer-surface a GObject
  * layers: Use PhocLayerSurface
  * cursor: Use PhocLayerSurface
  * output: Use PhocLayerSurface
  * desktop: Use PhocLayerSurface
  * layer_shell: Use PhocLayerSurface
  * layer-surface: Remove compat define
  * README: Fix embed-wlroots option
  * phosh-private: Properly name callback
  * output: Fix debug message
  * build: Make sure g-ir-scanner knows if XWayland is enabled
  * build: Rename server_protos_sources to protos_sources
  * seat: Drop superfluous line breaks
  * Replace PhocSeat leftovers
  * view: Add typedefs for views
  * view: Fix doc string
  * desktop: Document phoc_desktop_surface_at
  * layer-surface: Add doc string
  * layer-surface: Move unmap into layer-surface
  * layer-surface: Move object destruction to finalize
  * input: Add seat to list of known seats
  * input: Document phoc_input_get_seat
  * seat: Don't hold a ref on the input
  * server: Unref input
  * input: Unref seat
  * view: Don't leak title
  * view: Don't leak app_id
  * view: Use g_strdup ()
  * desktop: Disconnect wlr signal listeners
  * ci: Add helpers to build prebuilt docker images
  * gitlab-ci: Use prebuilt images
  * data: Set `version` in configuration data too
  * input: Add G_{BEGIN,END}_DECLS
  * input: Replace forward declaration by include
  * input: Add type checks to public functions
  * input: Move _init and _new downwards
  * build: Use glib >= 2.64.0
  * input: Use GSList instead of wl_list
  * input: Move PhocInput out of header
  * input: Drop unused declraration
  * Move get_last_active_seat
  * input: Use PhocView
  * seat: Make arguments names match docstring / definition
  * touch: Add G_{BEGIN,END}_DECLS
  * touch: Use correct parent class
  * cursor: Use surface relative coordinates for touch motion (Closes: #212)
  * server: Set debug flags early
  * desktop: Allow to override auto-maximize via a debug flag
  * utils: Add helpers to get an instance from it's private data
  * input-device: Add getter for device name
  * input-device: Add 'device-destroy' signal
  * touch: Drop "touch-destroyed" signal
  * pointer: Use "device-destroyed" signal
  * seat: Use a GSList to track pointers
  * pointer: Move PhocPointer out of header
  * seat: Use a GSList to track touch devices
  * touch: Move PhocTouch out of header
  * HACKING: document callback names
  * seat/cursor: Add TODOs
  * keyboard: Remove trailing semicolons from defines
  * keyboard: Add G_{BEGIN,END}_DECLS
  * seat: Drop unused header
  * keyboard: Drop unused incudes
  * keyboard: Document parameter in `phoc_keyboard_next_layout`
  * input: Drop unused include
  * keyboard: Move list membership removal to seat
  * keyboard: Derive PhocKeyboard from PhocInput too
  * keyboard: Use destroy signal from input_device
  * keyboard: Add "activity" signal
  * keyboard: Move keyboard listeners from seat to keyboard
  * seat: Use a GSList for keyboards
  * keyboard: Add getter for meta key
  * keyboard: Move PhocKeyboard out of header
  * keyboard: Make phoc_keyboard_handle_{key,modifiers} static
  * tablet: Make a minimal GObject
  * tablet: Use seat from PhocInput
  * tablet: Use device from PhocInputDevice
  * tablet: Use "device-destroy" signal
  * tablet: Remove unused struct members
  * seat: Use a GSList for tablets
  * output: Add helper to match on make/model/serial
  * desktop: Add method to find an output by make/model/serial
  * desktop: Add method to find built-in output
  * desktop: Merge #ifdef PHOC_XWAYLAND blocks
  * input-device: Add type getter
  * input-device: Drop unneeded cast
  * input-device: Add getters for vendor and product id
  * seat: Move variable inits to _init ()
  * seat: Make device-destroy handler names consistent
  * seat: Don't track device mappings on pointer changes
  * seat: Drop seat_reset_device_mappings()
  * seat: Track input-output mappings
  * output: Use g_* logging functions consistently
  * output: Improve logging output
  * input: Fix annotation errors
  * seat: Hide cursor on tablet proximity out
  * run: Select a suitable backend for nested

  [ Sebastian Krzyszkowiak ]
  * view: Report toplevel's parent via wlr_foreign_toplevel_management
  * xdg-shell: Send frame done events on configure and close to invisible views
  * view: Always recenter a floating view in auto maximize mode
  * xdg-shell: Only compensate size in pending_move_resize for floating views
  * xwayland: Only compensate size in pending_move_resize for floating views
  * roots_view_interface: Rename activate and maximize functions
  * view_arrange_tiled: Handle view scale
  * view: Take geometry into account when maximizing and tiling
  * view: Add set_tiled to roots_view_interface
  * xdg-shell: Implement set_tiled interface
  * keybindings: Restore the view when trying to tile it again
  * view_move_resize: Move immediately if size doesn't change
  * debian: Reintroduce pkg.phoc.embedwlroots build profile support
  * debian/control: Bump meson dependency to 0.54
  * gitlab-ci: Add an optional job to build a deb with ASan and UBSan
  * xdg-shell: Use output's usable area for popup positioning
  * layer-shell: Reformat the code in arrange_layers
  * layer-shell: Split and rename arrange_layers
  * phoc_layer_shell_arrange: Iterate over a list of layers

  [ Arnaud Ferraris ]
  * seat: don't add POINTER capability to tablets

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Wed, 15 Dec 2021 20:19:07 +0100

phoc (0.9.0) byzantium; urgency=medium

  [ Guido Günther ]
  * ci: Drop unneeded tags
  * ci: Drop support for bullseye and amber
  * ci: Add the arm64 job explicitly
  * server: Don't assert when we fail to initialize the backend
  * cursor: Rename to PhocCursor and reindent
  * Make PhocCursor a GObject
  * seat: Unref cursor
  * cursor: Use g_debug() instead of wlr_debug()
  * seat: No need to poke cursor directly
  * seat: Rename structs to Phoc* and reindent
  * wlroots: Update to 0.12.x
  * gitignore: Ignore more package build files
  * Add dir-locals.el
  * Rename phosh to phosh-private to match protocol name
  * phosh-private: Rename test as well
  * phosh-private: Make a GObject
  * phosh-private: Make screencopy frame private
  * phosh-private: Use g_new0
  * phosh-private: Remove unused define
  * phosh-private: Remove panel tracking
  * phosh-private: Make phoc_phosh_private_from_resource static
  * phosh-private: Mark unused interfaces and requests
  * testlib: Wire up gtk_shell1 protocol
  * phosh-private: Allow clients to be informed about application startup
  * protocols: Update toplevel management
  * protocols: Update layer-shell
  * seat: Ignore docs for internal comments
  * seat: Fix doc strings
  * utils: Fix doc strings
  * settings: Remove unused declarations
  * settings: Move doc comments to c file
  * keyboard: Ignore docs for inline function
  * build: Use shared wlroots
  * desktop: Add doc header
  * build: Add headers to list of sources
  * build: Rename phoc_dep to libphoc_dep
  * d/control: Add deps for doc build
  * build: Add gi-docgen
  * build: Forbid doc generation with embedded wlroots build
  * build: Add doc generation via introspection data
  * protocols: Use custom_target instead of generate
  * gitlab-ci: Update and publish docs
  * Update screencopy-unstable protocol
  * wlroots: Update submodule
  * xwayland: Forward startup-ids as well
  * desktop: Handle xwayland startup-id removal
  * Adjust section headers for gi-docgen
  * desktop: Cleanup headers
  * server.c: Add doc string
  * output: Use correct base class for signal
  * touch: Remove unused headers
  * touch: Use correct base class for signal
  * gitlab-ci: Use bookworm
  * Bump minimum wlroots version to 0.12.0
  * build: Generate enum types
  * server: Set name for wayland source
  * input: Drop nowadays unused config argument
  * output: Handle desktop prop as GObject
  * phosh-private: Remove 'desktop' property
  * Make renderer a GObject
  * gitlab-ci: Fix branch name for publishing
  * README: link to API docs
  * utils: Add ease in/out helpers
  * phosh-private: Add shell state protocol and property
  * server: Allow to pass mode flags
  * main: Add shell mode command line option
  * renderer: Emit signals at start and end of rendering loop
  * server: Render shield until shell is attached

  [ Sebastian Krzyszkowiak ]
  * seat: Trigger layer arrangement when unsetting layer focus
  * xwayland: Guard set_startup_id listener removal with PHOC_HAVE_WLR_SET_STARTUP_ID
  * seat: Don't allow to start resizing a fullscreen window
  * cursor, seat: Allow to move fullscreen windows between outputs
  * view: Don't center tiled views in view_setup
  * view: Turn roots_view::saved into wlr_box
  * view: Guard roots_view::saved usage by wlr_box_empty checks
  * view: Center the surface when resizing after (0, 0) configure
  * view: Move view_update_output to update_position/size
  * view: Fix updating surface's fullscreen state when exiting fullscreen
  * view: Rename PHOC_VIEW_STATE_NORMAL to FLOATING and explicitly initialize
  * view: Revamp view_is_[state] functions
  * output: Turn damage_whole_decoration into damage_whole_view
  * view: Don't recreate GSettings object on every window resize
  * gtk-shell/xdg-shell: Use app_id from gtk_surface::set_dbus_properties
  * phosh-private: Fix zwlr_screencopy_frame_v1_flags handling
  * view: Don't allow unfocused surfaces to make themselves fullscreen
  * view: Implement fullscreen view handling in view_move_to_next_output
  * view: Allow to pass output to center the view on to view_center
  * view: Check whether the view is floating before attempting to center
  * view: Center the view in view_move_to_next_output

  [ Evangelos Ribeiro Tzaras ]
  * server: Stop using deprecated g_spawn_check_exit_status()

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Wed, 27 Oct 2021 16:56:10 +0200

phoc (0.8.0) byzantium; urgency=medium

  [ Guido Günther ]
  * desktop: Don't create idle-inhibit
  * settings: Drop device configuration from config file
  * input: Drop references to config file
  * input: s/roots/phoc/
  * settings: Drop cursor handling
  * Make pointers proper GObjects
  * input: Remove unused headers
  * pointer: Handle some touchpad configuration (Closes: #70)
  * build: Require gsettings-desktop-schemas
  * pointer: Handle left-right mode on touchpads
  * pointer: Handle mouse settings
  * settings: Drop switch configuration

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Sat, 10 Jul 2021 02:02:33 +0200

phoc (0.7.1) byzantium; urgency=medium

  * cursor: g_assert on NULL cursor.
    Don't try to go on without a cursor (which can only happen when calloc
    fails). wlroots also only returns NULL in case of memory problems. This
    allows to remove the NULL checks elsewhere
  * tests/phosh: Use GrabStatus.
    The current accelerator tests try to encode two boolean values
    into two variables making it a bit hard to read. Use a single
    enum instead.
  * tests/phosh: Make tested keybindins more obvious.
    Currently one needs to look up what's tested in an array but each most
    of the keys are only used a single time. So drop that array and use a
    define for the single key that is used multiple times so it's clear we
    just add an accelerator.
  * tests/phosh: Set and check both test vars.
    Always set and check both keybinding results. This tests that
    we don't invoke the wrong callback accidentally.
  * phosh: Don't crash when we failed to parse the accelerator.
    Passing an invalid keybinding otherwise doesn't end well.
  * phosh: Allow to bind misc keys.
    Until we allow to bind all keys let's allow for these as well since
    this block includes e.g. PrintScreen for screenshots.

 -- Guido Günther <agx@sigxcpu.org>  Sun, 13 Jun 2021 13:05:17 +0200

phoc (0.7.0) byzantium; urgency=medium

  [ Sebastian Krzyszkowiak ]
  * gitlab-ci: Use "needs" keyword to specify dependencies
  * debian: Drop pkg.phoc.embedwlroots build profile support
  * gitlab-ci: Switch to CI job templates for amber-phone and byzantium
  * gitlab-ci: Exclude non-package jobs when PKG_ONLY variable is set
  * view: Allow to explicitly set an output when tiling or maximizing
  * cursor: Implement snap-to-edge behavior for tiling and maximizing
  * cursor: Define PHOC_SHELL_REVEAL_*_THRESHOLD in layout pixels
  * Take view geometry into account when dealing with saved state
  * xdg-shell: Adjust position for updated geometry
  * Make all views appear activated when automaximizing is enabled
  * text-input: Don't leave dangling roots_text_input signal listeners
  * text-input: Use text_input_clear_pending_focused_surface in handle_pending_focused_surface_destroy
  * text-input: Remove relay's signal listeners when seat is destroyed
  * text-input: Assert a non-null surface in text_input_set_pending_focused_surface
  * seat: Update the cursor in roots_seat_end_compositor_grab
  * roots_passthrough_cursor: Reset the cursor when there's no surface under it
  * seat: Fix primary touch tracking
  * cursor: Add preliminary touch support for move and resize
  * render: Use wlr_presentation_surface_sampled_on_output for fullscreen surfaces
  * render: Use wlr_output_test to check whether fullscreen scan out is possible

  [ louib ]
  * Add build-dep command to README

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Fri, 19 Mar 2021 03:20:49 +0100

phoc (0.6.0) amber-phone; urgency=medium

  [ Clayton Craft ]
  * utils: apply phosh code formatting styles
  * output: apply phosh code formatting styles
  * Move rotate_child_position to phoc_utils_rotate_child_position
  * output: convert roots_output to PhocOutput gobject
  * desktop: add handler for new output
  * desktop: add handler for output destroy
  * Use PhocOutput instead of roots_output
  * touch: emit g_signal on touch destroy
  * seat: use touch-destroy signal from PhocTouch
  * desktop: add input_output_map hash for tracking mapping of input-->output
  * seat: create mapping of touch devices to outputs
  * seat: disable touch events when mapped output is disabled

  [ Sebastian Krzyszkowiak ]
  * d/rules: Enable all hardening options
  * Reintroduce a5bdd630bbb67a680aa5308a32c2e69aef0a08e5 (!210) back
  * server: Don't set _WAYLAND_DISPLAY
  * view_move: Cancel pending move_resize when moving
  * seat: begin_move: Try to put the surface behind the cursor when unmaximized
  * cursor: Update cursor immediately when move/resize/rotate ends
  * cursor: Don't error out on a unhandled meta key+mouse button press
  * view: Add view_is_tiled function
  * view: Split view_restore from view_maximize
  * view: Don't backup state when the surface is already maximized or tiled
  * view: Move tiling logic into view_arrange_tiled
  * view: Move state saving into dedicated function
  * view_restore: Don't restore saved state
  * view_set_fullscreen: Correctly restore previous window state when leaving fullscreen
  * view: Properly restore maximized/tiled views when moved or resized
  * automaximize: Don't draw surfaces that aren't part of the current stack
  * desktop: Rename desktop_surface_at to phoc_desktop_surface_at
  * output: Don't accept damage from views that aren't visible
  * render: Don't send frame done events to views that aren't visible
  * view_unmap: Damage the newly activated stack when in automaximize mode
  * view_activate: Damage the output when disabling forced shell reveal
  * Remove view rotation handling
  * Replace struct memcpy's with assigment operator
  * view_center: Try to clamp the view size into available space
  * roots_handle_shell_reveal: Do not require surface to be non-null
  * gitlab-ci: Add package-deb-without-wlroots:arm64 job
  * roots_handle_shell_reveal: Null-check wlr_output_layout_output_at result
  * phoc_desktop_view_is_visible: Check for the view being unmapped
  * view_unmap: Remove from the view list after destroying children

  [ Guido Günther ]
  * cursor: Fix missing-default-case warning

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Mon, 04 Jan 2021 20:38:41 +0100

phoc (0.5.1) amber-phone; urgency=high

  [ Dorota Czaplejewicz ]
  * text_input: Don't forward events from unfocused text inputs

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Wed, 18 Nov 2020 21:20:45 +0100

phoc (0.5.0) amber-phone; urgency=high

  [ Guido Günther ]
  * phosh: Allow to bind rebular keys plust <SUPER> modifier
  * gitlab-ci: Remove build artifacts in ..
  * output: handle_output_manager_apply: Make both loops use the same logic
  * Drop PHOC_HAS_WLR_OUTPUT_POWER_MANAGEMENT
  * output: handle_output_manager_apply: Don't disable already disabled outputs
  * phosh: Define keysym for older libxkb-common
  * phosh: Allow to bind more keys

  [ Dorota Czaplejewicz ]
  * keyboard: Do not override keymap on virtual keyboard

  [ Sebastian Krzyszkowiak ]
  * view: Allow to switch outputs of fullscreen surface
  * output: Refresh fullscreen view when its output is reconfigured
  * gitlab-ci: Don't pull wlroots from sid
  * virtual: Allow suggested_output usage on recent enough wlroots

  [ Alexander Mikhaylenko ]
  * meson: Compile gschemas on install

  [ Clayton Craft ]
  * input: remove unused PhocInput members
  * touch: add new PhocTouch gobject for touch input devices
  * seat: use PhocTouch for touch input devices

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Sat, 14 Nov 2020 17:54:34 +0100

phoc (0.4.4) amber-phone; urgency=medium

  [ Guido Günther ]
  * desktop: Refresh all views when auto-maximize changes.
    So far this only affected new views but when e.g. unplugging an
    external (switching to 'phone' mode) we want running apps to
    behave.
  * phosh: Drop rotate-display.
    The rotate_display served us well but it's too simplistic (no events,
    degrees instead of transforms, ...). Since phosh now uses
    wlr-output-management for bid to use this part of the private protocol.
  * d/control: Add breaks for older phosh.
    These require the rotate_display private protocol bit
  * phosh: Fix indentation
  * phosh: Ungrab accelerators.
    This lead to a compositor crash so far

  [ Clayton Craft ]
  * input: convert roots_input to PhocInput gobject
  * input: apply phosh code formatting styles.
    This is a cosmetic change that applies code formatting styles from
    Phosh's style guidelines to input.c/h.
  * Use PhocInput objects instead of roots_input

 -- Guido Günther <agx@sigxcpu.org>  Tue, 27 Oct 2020 09:01:06 +0100

phoc (0.4.3) amber-phone; urgency=medium

  [ Guido Günther ]
  * Drop xdg_shell_V6 support
  * xdg-shell: Drop mention of v6 protocol
  * desktop: Adjust to wlr_xcursor_manager_load 0.11.0 API change
  * server: Unblock SIGUSR1 when spawning child
  * desktop: Reindent handle_layout_change
  * desktop: Refresh all outputs on layout changes

  [ Arnaud Ferraris ]
  * src: add utility function to fix rotation on wlroots v0.11+

  [ Sebastian Krzyszkowiak ]
  * xwayland: Don't apply size constraints to maximized windows
  * xwayland: Correctly handle windows that are maximized on map
  * xwayland: Automaximization support
  * seat: Check whether moving and resizing is allowed
  * xwayland: Don't allow to move non-regular windows
  * xwayland: Don't automaximize non-resizable windows
  * layer-shell: Recenter non-maximized views when rearranging
  * Update wlroots submodule

  [ Dorota Czaplejewicz ]
  * input method: Forward only supported state

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Thu, 08 Oct 2020 01:40:58 +0200

phoc (0.4.2) amber-phone; urgency=medium

  [ Evangelos Ribeiro Tzaras ]
  * d/control: Use Rules-Requires-Root: no
  * Implement keyforwarding with a new interface in phosh-private protocol

  [ Guido Günther ]
  * phosh: Damage output after rotation

  [ Sebastian Krzyszkowiak ]
  * render: Allow view_render_to_buffer to indicate failure
  * phosh: Handle view_render_to_buffer failing in thumbnail_frame_handle_copy
  * render: Check whether the root surface isn't NULL in view_render_to_buffer

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Thu, 06 Aug 2020 14:42:40 +0200

phoc (0.4.1) amber-phone; urgency=high

  [ Sebastian Krzyszkowiak ]
  * render: Rework damage tracking debug mode
  * render: Use G_(UN)LIKELY for debug flags
  * render: Use defines for color values
  * cursor: Put a touched view into focus
  * debian: Add sign-tags=true to gbp.conf
  * gitlab-ci: Un-silence grep invocations
  * gitlab-ci: Set package jobs dependencies to empty
  * render: Don't try to render a surface with no texture
  * cursor: Avoid damaging the whole output in touch points debug mode
  * render: Catch up with wlroots' wlr_client_buffer
  * render: Make the EGL context current when rendering to texture

  [ &t ]
  * Add --version flag

  [ Yann Büchau ]
  * scale-to-fit: Default to "on" without extra argument

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Wed, 22 Jul 2020 15:47:52 +0200

phoc (0.4.0) amber-phone; urgency=high

  [ Guido Günther ]
  * server: Always print socket on startup
  * phosh: Reindent
  * phosh: Remove leftovers from the xdg interface

  [ Sebastian Krzyszkowiak ]
  * Scale down oversized views
  * Make auto-scaling configurable per application
  * phoc.ini.example: Drop outdated entries
  * phosh: Make sure thumbnail dimensions aren't set to zeros
  * phosh: Remove signal listener from view when destroying screencopy frame
  * Send wl_surface_{enter,leave} events to subsurfaces

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Tue, 30 Jun 2020 16:52:02 +0200

phoc (0.1.9) amber-phone; urgency=medium

  [ Arnaud Ferraris ]
  * gtk-shell: fix typos

  [ Sebastian Krzyszkowiak ]
  * protocols: Add wlr-foreign-toplevel-management-unstable-v1
  * Create render.h header to hold declarations from render.c
  * view: Make view_get_geometry accessible outside of view.c
  * view: Store a pointer to view in wlr_foreign_toplevel_handle data
  * meson: Depend on GLESv2
  * protocols: Update wlr-screencopy-unstable-v1 to version 2
  * Update wlroots submodule
  * Implement window thumbnails via phosh-private+wlr-foreign-toplevel-management+wlr-screencopy protocol hybrid
  * tests: Introduce PhocTestScreencopyFrame and generalize screencopy logic
  * tests: Fix inverted condition in phoc_test_buffer_equal
  * tests: phoc_test_client_capture_output: Handle ARGB/XRGB format mismatch
  * tests: Basic window thumbnail test
  * protocols: Add a description for thumbnail interface in phosh-private
  * CI: Move coverage gathering to separate step

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Tue, 23 Jun 2020 13:56:47 +0200

phoc (0.1.8) amber-phone; urgency=medium

  [ Guido Günther ]
  * d/control: Bump wlroots dependency.
    Bumped to 0.10.0 since this is sufficient to build and run
    although 0.10.1 is preferred.
  * build: Bump project version.
    This makes it match the version in the changelog
  * PhocServer: Move startup command from config.
    No need to tuck away the command we run in config, it's only
    configurable via the command line.
  * main: Use automtic cleanup for mainloop
  * main: Use automatic cleanup for the server
  * server: Get hold of the main loop.
    This allows the server to exit cleanly
  * server: Exit when session exits.
    This allows e.g. a systemd unit to properly restart compositor
    and shell in case of session crash. It also allows to support
    logout under display managers like GDM.
    Prerequisite for phosh#117 since we also need to updte gnome-session
    for this.
  * Remove output mapping for devices and cursors.
    For cursors we don't have a real use and for devices we're going
    to make this default properly.
  * output: Add helper to detect built-in panels.
    This is similar to what phosh does.
  * roots_seat_configure_cursor: Pass roots_output.
    This avoids going back and forth between roots_ and wlr_output;
  * seat: Map touch screens to build in displays by default.
    This is currently hard coded and can not be changed
  * seat: Map tablet devices as well
  * seat: Fix wrong struct type.
    Touch is not a pointer but 'struct roots_touch'
  * server: Fix odd indentation
  * server: Introduce debug flags.
    This keeps the number of arguments and variables under control.
  * Parse debug flags from environment.
    This makes things more consistent with other glib applications
    and allows us to use expressive comma separated lists instead
    of command line flags.
  * Use PHOC_SERVER_DEBUG_DAMAGE_TRACKING.
    This avoids passing boolean flags around
  * Use PHOC_SERVER_DEBUG_TOUCH_POINTS.
    This avoids passing boolean flags around
  * server: Introduce no-quit debug flag.
    This allow to not quit the session which is useful for e.g.
    phosh development where one wants to replace the running shell
    without the compositor caring.
  * README: Document PHOC_DEBUG
  * gitlab-ci: Enable coverage information
  * README: add coverage information.
    This makes current coverage very visible
  * README: fix cut'n'paste error
  * d/copyright: Use correct licenses.
    As per de56ea6b1e3cfa41981fd4dd349b0eef852aee23 we default to GPL-3+
    (same as phosh). That's also consistent with the COPYING file.
    We keep `src/*` separate to respect the copyright notices brought
    over from rootston and keep the protocols under their initial
    licenses.
  * server: Fix method name.
    We use it as finalize() but called it dispose().
  * Don't destroy xwayland in phoc_server.
    We create it in phoc_desktop so it should be destroyed there as well.
    This also fixes a crash on server shutdown when the desktop wasn't even
    created.
  * server: Track multiple setup.
    We currently track whether the singleton was inited which
    is broken since we have a weak ref. Rather make sure we
    don't setup the instance multiple times.
  * server: Fix error output.
    We only create the backend, it's started later on in _setup().
  * tests: Add simple test that runs a main loop
  * server: Remove wayland source on shutdown
  * server: Unset envvars on shutdown.
    It's always better to clean up but this also allows to run
    two tests using the wayland backend in the same process.
  * tests: Properly finalize the server.
    So far we used the same server instance in all the tests
    which fails when we allow to run init just once.
  * tests: Pass a phoc.ini.
    This one disables Xwayland since that causes trouble when
    restarting it multiple times and we currently don't need it.
  * server: Use self conistently.
    We call the first method argument self elsewhere so this consistently in
    all methods.
  * server: Move wl_display_destroy_clients() to dispose.
    This allows clients to shut down properly, we'll call into
    already freed objects like input.
    Note that wl_display_destroy() was never run since the wl_display was
    already NULL when and we were using g_clear_pointer().
  * server: Call wlr_backend_destroy() in dispose.
    This allows wlroots to clean up and we can call wl_display_destroy ()
    in finalize.
  * input: Guard against NULL input.
    This one pops up often when wlroots or the server cleans
    up and this makes it obvious at a glance what's wrong.
    We can't use PHOC_IS_INPUT yet since it's not a gobject yet.
  * README: document how to run the tests.
    This allows us to mention xvfb-run which is needed for screenshot
    comparison tests.
  * protocols: Generate client protocols.
    These are needed by the tests
  * protocols: Add wlr-screencopy-manager
  * tests: Add testlib.
    This allows to run a wayland client against the compositor
    and to take and compare screenshot of the output. (Closes: #40)
  * tests: Add simple client test.
    This validates that clients can connect and find their globals
    and also demos the library usage.
  * tests: Add layer shell test.
    Initial tests to test layer-shell layout (since we had several
    surprises there). This also demos the screenhost machinery.
    For tests to succeed they need to run under e.g. xfvb since
    the mouse cursor might get placed differently otherwise.
  * gitlab-ci: Don't reset xvfb between test runs.
    This should avoid connection failures with multiple tests. We
    do the same with libhandy.
  * seat: Be consistent with whitespace.
    Let's not mix tab and spaces in the same function.
  * seat: Don't notify activity on `set_cursor`
    Rather notify on tool set_cursor activity where it is important.
    This avoids setting activity events on `set_cursor` when nothing
    really changed.
    To see what thi fixes blank the screen using `lock sreen` in phosh
    with https://source.puri.sm/Librem5/phosh/-/merge_requests/300
    applied and see it wake up right away.
  * desktop: Add getter/setter for maximization
  * tests: testlib: Add server prepare hook.
    This allows to tweak the compositor configuration before
    launching the client
  * tests: Wire up xdg_wm_base.
    This will be used in followup commits for xdg-shell testing
  * tests: Add initial xdg-shell tests
  * output: Enable new outputs by default.
    This was done by wlroots but isn't in 'recent' versions (which gives
    the compositor more room). (Closes: #130)
  * phosh: Drop xdg-switcher interface.
    Instead of requiring a phosh/phoc lockstep upgrade post an error if a
    client wants to bind the protcol. This keeps the code we need carry
    minimal but we can still be backward compatible (this is not breaking
    clients that don't use that part of the protocol).
  * input: Make_device_type() public
    public. While at that rename to phoc_get_device_type ()
  * Rename virtual_keyboard.[ch] to virtual_[ch]
    We handle virtual pointer there as well.
  * virtual: Use g_return_if_fail () instead of wlr_log ()
    We can turn this into a type check later on and it makes
    sure log domains work correctly.
  * Implement virtual pointer protocol

  [ Arnaud Ferraris ]
  * d/copyright: fix upstream files list and improve readability

  [ Nícolas F. R. A. Prado ]
  * Use default switch cases where they make sense.
    This removes -Wswitch-default warnings.
  * Use default switch cases to report invalid values.
    This removes -Wswitch-default warnings.
  * Add -Wswitch-default to compile flags

  [ Jordi Masip ]
  * build: add missing dependency 'libdrm' used for 'drmModeModeInfo'

  [ Sebastian Krzyszkowiak ]
  * cursor: Fix touch point surface attachment.
    Touch points should remain attached to surface they originate from
    regardless of the touch point position on screen.

 -- Guido Günther <agx@sigxcpu.org>  Wed, 10 Jun 2020 17:14:04 +0200

phoc (0.1.7) amber-phone; urgency=medium

  [ &t ]
  * keybindings: Declare roots_seat as incomplete type
  * cursor: Don't shadow sx and sy
  * build: Add -Wshadow to cflags

  [ Sebastian Krzyszkowiak ]
  * Guard wlr-output-power-management usage with header existence check
  * gbp.conf: Set multimaint-merge as default when generating changelogs

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Thu, 26 Mar 2020 17:04:53 +0100

phoc (0.1.6) amber-phone; urgency=medium

  [ Guido Günther ]
  * Add arm64 build
  * Move server setup into PhocServer
  * build: Build phoc_lib
  * Add initial test
  * gitlab-ci: Run unit tests
  * debian: Run tests via xvfb
  * settings: Don't init logging twice
  * server: Move command line parsing to main()
  * tests: Test option passing
  * Adjust to wlroots 0.8.1 layer shell changes
  * debian: Add breaks on older phosh
  * build: Drop custom tags generation
  * gitlab-ci: Run lintian and autopkgtests
  * Add superficial autopkgtest
  * Add wlr-output-power-management protocol
  * Update wlroots submodule
  * Drop roots_output_from_wlr_output
  * Support wlr-output-power-management

  [ Sebastian Krzyszkowiak ]
  * view: Simplify roots_view_get_from_wlr_surface
  * view: Rename roots_view_get_from_wlr_surface to roots_view_from_wlr_surface
  * main: Fix uninitialized debug_damage value
  * Touch point visualization
  * Update to wlr_output's atomic API and wlroots 0.9.x branch
  * layer-shell: Fix incorrect variable passed to debug log
  * layer-shell: Handle layer changes
  * Update git submodule to 8fd62aaa18bd4f31933e99ef5d5fd15aff5b6c5e (wlroots 0.10.0)
  * CI: Update to deal with newer wlroots
  * debian: Update wlroots dependency version
  * Update wlroots submodule

  [ Dorota Czaplejewicz ]
  * doap: Fix malformed Person tag

  [ Simon Ser ]
  * Update to new presentation-time API

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Tue, 24 Mar 2020 15:59:24 +0100

phoc (0.1.5) amber; urgency=medium

  [ Guido Günther ]
  * input: Use g_* for logging.
    This makes log domains work for input as well.
  * seat: Don't initialize tablets if we don't have libinput.
    This leads to crashes otherwise e.g. on the wayland backend
  * phosh: Fix indentation
  * view: Introduce helper to find a roots_surface from a given wlr_surface.
  * protocols: Add gtk-shell v3.
    Taken from gtk 3.24.8. This will allow to implement raising surfaces on
    their request and startup notifications if we want these before there's a
    mainlineable protocol.
  * Implement gtk-shell's handle_request_focus.
    This allows to raise windows on their request.
    See https://source.puri.sm/Librem5/phoc/issues/93
  * desktop: Wire up gtk-shell

  [ Sebastian Krzyszkowiak ]
  * view: Hide shell overlay when activating a fullscreen window.
    Without that, the overlay stays needlessly visible after selecting a
    fullscreen window in the activity switcher until further input event.

 -- Guido Günther <agx@sigxcpu.org>  Thu, 02 Jan 2020 23:52:47 +0100

phoc (0.1.4) amber; urgency=medium

  [ Guido Günther ]
  * build: drop rootston=false from wlroots submodule build
    rootston is no longer part of wlroots so the option causes
    a warning during build.
  * view: Add helper to move windows between outputs
  * keybindings: allow to move windows to left/right output
  * Update submodule.
    This pulls in the gbm fix.
  * Add doap file.
    This helps to identify project maintainers and contact points.
  * d/control: Add Sebastian to uploaders
  * xdg_shell_v6: Implement get_geometry.
    As long as these are around there's no reason why v6 should
    be worse than stable
  * Introduce view_is_maximized.
    This will allow us to introduce a tiled state as well.
  * view: Simple left right tilig.
    This uses the 'maximized' state to get rid of GTK's drop
    shadows until we have fixed
    https://gitlab.gnome.org/GNOME/gtk/issues/2171
  * view: Differentiate between tiled and normal on unmaximize
  * keybindings: bind left and right tiling
  * d/control: Depend on gsettings schemas.
    Not having them makes us not start

  [ Sebastian Krzyszkowiak ]
  * Update wlroots submodule.
    Forward to 9fb251c33fc404f106f0b4e3b6839de9d4753a4c for virtual
    keyboard keycode 0 fix.

  [ Simon Ser ]
  * render: set surface as sampled for presentation.
    This is necessary after [1].
    [1]: https://github.com/swaywm/wlroots/pull/1798
  * Fix presentation feedback when scanning out fullscreen views.
    References: https://github.com/swaywm/sway/pull/4667

 -- Guido Günther <agx@sigxcpu.org>  Tue, 17 Dec 2019 17:54:07 +0100

phoc (0.1.3) amber; urgency=medium

  [ Guido Günther ]
  * wlroots: Update submodule
  * desktop: Allow to blank/unblank all outputs
  * keyboard: Blank/unblank all outputs on power button press (Closes: #86)

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Sat, 23 Nov 2019 00:27:10 +0100

phoc (0.1.2) amber-phone; urgency=medium

  [ Sebastian Krzyszkowiak ]
  * layer-shell: Don't apply exclusive zones of unmapped surfaces
  * Revert "Use old gamma control protocol if available"
  * Update wlroots submodule
  * Add a way to reveal shell on a fullscreen surface
  * layer-shell: Create/destroy layer_subsurface objects on parent map/unmap

  [ Guido Günther ]
  * gitlab-ci: Remove redundancy in alpine deps
  * Add libgnome-desktop-3-dev
  * Turn keyboard into a gobject
  * keyboard: Read keyboard config from gsettings
  * settings: Remove superfluous include
  * keyboard: fix indentation
  * Use g_clear_object
  * keyboard: Set wlr_keyboard's data to phoc_keyboard
  * keyboard: Add method to witch to next layout
  * keybindinds: Listen to switch-input-source changes

  [ Simon Ser ]
  * Remove orbital screenshooter and gamma-control
  * rootston: add support for direct scan-out
  * Remove all wayland-server.h includes

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Mon, 18 Nov 2019 22:48:51 +0100

phoc (0.1.1) amber-phone; urgency=medium

  [ Dorota Czaplejewicz ]
  * text_input: Add asserts guarding focus state
  * Clear pending surface before setting it to a new value
  * text_input: Eliminate excessive messages
  * layer shell: Adjust position of osk depending on presence of the prompter

  [ Guido Günther ]
  * gitlab-ci: Disable the deb build for the moment
  * build: Delay config file creation
  * build: print detected wlroots version
  * desktop: Include config.h early
  * Use old gamma control protocol if available
  * debian: Allow to build against 0.7.0
  * switch: Drop switch handling
  * keyboard: Reformat keyboard_execute_binding
  * Add PhocKeybindings
  * Use PhocKeybindings
  * Drop old bindings related code
  * gitlab-ci: De-duplicate build logic
  * gitlab-ci: Specify the docker image to use
  * gitlab-ci: Build against Debian Bullseye as well
  * keybindings: bind toggle-maximized too
  * view_arrange_maximized: Drop unused variable
  * keybindings: Pass settings to add_keybindings
  * view: Drop view_cycle_alpha
  * gitlab-ci: Allow alpine linux build to fail but not break ci
  * Include config.h first in all .c files
  * render: Use PHOC_XWAYLAND instead of WLR_HAS_XWAYLAND
  * outpout: Use PHOC_XWAYLAND instead of WLR_HAS_XWAYLAND
  * Update wlroots submodule
  * server: Drop redundant 'extern struct'
  * server: Turn into a GObject
  * Use the PhocServer singleton
  * server: Move server init/deinit into constructor/dispose
  * keybindings: Fix missing chain-up in constructed()
  * debian: Add gbp.conf

  [ Sebastian Krzyszkowiak ]
  * layer_surface_at: Fix the order of surface processing to match rendering
  * seat: Call roots_input_method_relay_set_focus for layer-surfaces
  * layer-shell: Elevate layer of OSK when same or higher layer is focused
  * meson: Don't add wlroots as subproject when embed-wlroots is disabled
  * xdg-shells: Block interactive resize when in auto-maximizing mode
  * layer-shell: Update focus order in arrange_layers
  * phosh: Fix rejection of multiple clients binding to phosh private protocol
  * seat: Handle unfocusing layer-surface with no other focusable view
  * layer-shell: Handle subsurfaces and nested popups
  * desktop_surface_at: Set a "view" argument in case of fullscreen surface
  * Clean up desktop_surface_at calls

  [ Simon Ser ]
  * Remove orbital screenshooter
  * layer-shell: Don't give focus to unmapped layer surfaces

  [ Aleksis ]
  * layer-shell: Remove unused "configured" variable

  [ Bart Ribbers ]
  * gitlab-ci: Build and unit test for Alpine Linux edge as well

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Mon, 14 Oct 2019 23:08:40 +0200

phoc (0.1.0) purple; urgency=medium

  [ Guido Günther ]
  * Avoid conflict with close(2)
  * Add HACKING.md
  * Drop wlroots CONTRIBUTING to avoid confusion
  * Use glib main loop
  * Rename roots_server to phoc_server
  * main: Block SIGUSR1 early
  * Maximize xdg_shell surfaces by default
  * desktop: Allow to toggle maximization via dconf
  * helpers: Add helper to toggle maximization
  * Add run script
  * Add editorconfig from libhandy
  * desktop: Allow to toggle maximization via dconf
  * Revert "Avoid conflict with close(2)"
  * Don't access views directly
  * Avoid conflict with close(2)
  * Switch to wlroots 0.5.0
  * outpout: Check for PHOC_XwAYLAND instead of WLR_HAS_XWAYLAND
  * xwayland: Don't include config.h twice
  * rootston: Also iterate layer shell popups
  * render: Don't use rootston's types and headers
  * Add phosh private protocol (Closes: #2)
  * view: Move want_maximize upwards
  * view: Introduce maybe_maximize()
  * Update wlroots to 930e37eae97e2ae965f7ae3a05d2fdd700827688
  * layer-shell: Don't dereference gone output
  * Update wlroots to 0.6.0 (Closes: #14)
  * run: Avoid word splitting
  * main: Fix indentation
  * main: Launch client in idle main loop
  * xdg_shell: Don't move windows with auto_maximize == true (Closes: #8)
  * main: Block SIGUSR1 instead of ignoring it (Closes: #20)
  * Use glib logging (Closes: #21)
  * gitlab-ci: Build a deb
  * debian: Add compositor parts (Closes: #16)
  * build: Allow to toggle using the embedded wlroots
  * debian: Use a build profile for linking against embedded wlroots
    (Closes: #17)
  * gitlab-ci: Use build profile
  * gitlab-ci: Build against packaged wlroots as well (Closes: #25)
  * debian: Add missing build-dep for x11 backend with embedded wlroots
  * Turn desktop in a PhocDesktop GObject
  * PhocDesktop: Use constructed and finalize
  * PhocDesktop: Use g_signal_connect_swapped
  * desktop: Fix type check
  * Only set a cursor when we have a pointer device (Closes: #31)
  * Update submodule
  * view: Make maximaziation logic match the comment
  * Add logging domains
  * Log wlroots messages as 'phoc-wlroots'
  * view: Take geometry into account when centering views
  * view: Use sane geometry when impl is missing
  * view: Default geometry x,y to 0
  * render: Clear to black background
  * Add some debugging hints
  * view: Take usable area into account when centering views (Closes: #45)
  * roots_seat: Add roots_set_get_cursor ()
  * phosh-private: Add a close request
  * phosh: Implement phosh-private's close request
  * phosh: Use g_* logging
  * Update wlroots submodule
  * protocols: Remove unused protocols
  * protocols: Drop client protocol generation
  * protocols: Don't generate unused server protocols
  * text_input: Don't forget to send enter events (Closes: #51, #28, #12)
  * cursor: Drop btn left emulation for touch
  * Update submodule
  * switch: Drop switch handling
  * keyboard: Reformat keyboard_execute_binding
  * Add PhocKeybindings
  * Use PhocKeybindings
  * Drop old bindings related code
  * Revert "Drop old bindings related code"
  * Revert "Use PhocKeybindings"
  * Revert "Add PhocKeybindings"
  * Revert "keyboard: Reformat keyboard_execute_binding"
  * Revert "switch: Drop switch handling"

  [ emersion ]
  * data-device: refactor wlr_drag
  * rootston: cancel drag on invalid serial
  * rootston: move part of desktop.c to view.c, use an interface for views
  * rootston: add a view child interface
  * rootston: make roots_view embedded and remove unions
  * rootston: refactor rendering
  * rootston: fix rotated views rendering
  * rootston: fix Xwayland children rendering when fullscreen
  * rootston: split rendering code into render.c
  * rootston: fix input events for rotated views
  * xwayland: don't set DISPLAY
  * rootston: add output-management-v1 support
  * rootston: update output-management-v1 state when output is modeset
  * output-management-v1: support applying configuration
  * output-management-v1: update protocol, add set_custom_mode
  * rootston: disable then enable outputs when applying output-management state
  * output: remove lx, ly

  [ Sebastian Krzyszkowiak ]
  * rootston: surface_at: check for fullscreen surfaces in between TOP and OVERLAY layers
  * Auto-maximize unfullscreened surfaces
  * phosh: Fix incorrect type being passed to sizeof in calloc
  * seat: Move view damage in set_focus to where the drawing list is handled
  * Handle stacks (xdg_toplevel::set_parent relationships) (#4)
  * seat: Move focus back to first shell surface when unfocusing layer surface
  * xdg_shell(_v6): Take maximize/fullscreen state into account on view init
  * seat: Don't try to raise unmapped surfaces in stacks
  * Update wlroots submodule
  * view: Move want_maximize above view_maximize
  * view: Don't allow to unmaximize auto-maximized surfaces
  * view: Null-check output in view_arrange_maximized
  * view: Rename "maximized" argument in view_maximize
  * view: Move want_maximize logic into protocol code
  * Auto-maximize before mapping the surface
  * Update wlroots submodule
  * layer_shell: Guard against negative exclusive zone
  * view: Create foreign-toplevel-handle before focusing
  * Move wlr-foreign-toplevel-management support into view
  * Refine the ordering of layer-shell surfaces
  * Update cursor focus on popup unmap
  * Update wlroots submodule

  [ Ryan Walklin ]
  * s/lid_switch/switch_device

  [ Ilia Bozhinov ]
  * rootston: remove disabled outputs from the output layout
  * rootston: add support for foreign-toplevel fullscreening

  [ Alyssa Ross ]
  * Fix missing headers when building without X11

  [ Simon Ser ]
  * rootston: use wlr_output_preferred_mode
  * output-damage: refactor API
  * output: rename needs_commit to needs_frame
  * rootston: don't submit too much damage
  * rootston: fix damage tracking debug mode

  [ Drew DeVault ]
  * Remove wlr_wl_shell

  [ Dorota Czaplejewicz ]
  * build: Link supplied wlroots statically
  * debian: Use build profile for shared wlroots build

 -- Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>  Mon, 16 Sep 2019 19:17:34 +0200

phoc (0.0.0) purple; urgency=medium

  * Initial release

 -- Guido Günther <agx@sigxcpu.org>  Mon, 25 Feb 2019 19:31:00 +0100
