phosh (0.55.0) experimental; urgency=medium

  [ Guido Günther ]
  * lockscreen: Word wrap unlock status.
    Phrog puts PAM responses there which can be very long in the
    case of systemd-homed like
      Password for home asdf is incorrect or not sufficient, and configured
      security token not found either.
    so make sure they wrap. The display of the message is short
    lived so it doesn't matter that we shift things down a bit.
  * lockscreen: Drop property at its default value.
    Fixes: e4ebf45de ("lockscreen: Word wrap unlock status")

  [ nicole mikołajczyk ]
  * Update Polish translation

  [ Марко Костић ]
  * Update Serbian translation

  [ Pierre Michel Augustin ]
  * Update Haitian Creole translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 17 May 2026 11:31:11 +0200

phosh (0.55~rc1) experimental; urgency=medium

  [ Guido Günther ]
  * contributing: Add contributing information.
    As per our https://www.apc.org review as part of
    https://nlnet.nl/project/Phosh-Notch/ the preferred name here is
    CONTRIBUTING.md so let's use that.
    While at that shorten and simplify the document moving the
    coding style recommendations to a web page thus avoiding the
    libhandy reference.
  * ticket-box: Remove currently unused file monitor
  * ticket-box: Don't leak enumerator
  * setting: Close top panel when activating media player.
    This was accidentally dropped when moving the actions to the
    top-panel. With GTK4 we can make the panel closing an action
    too by using `gtk_widget_activate_action()`.
    Fixes: e90c7e33b ("top-panel: Move lauching settings here")
  * tools: Fix indent
  * tools/search: Drop unneeded casts.
    Eases readability and makes things fit in our line length
  * tools/serach: Use g_object_connect.
    Shortens the line
  * tools: Rename `error` to `err`
    Prefer automatic cleanup while at that

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Christian Kirbach ]
  * Update German translation

  [ Pierre Michel Augustin ]
  * Update Haitian Creole translation

  [ Arun Mani J ]
  * status-icons-box: Allow any kind of `GtkWidget`
    This allows the box to be used in places where a `GtkBox` was used.
    While at it, use the proper `GType` name for status-icons than hardcoding.
  * top-panel: Move language label to status-icons box.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1333
  * plugins: Add Syncthing quick-setting.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1267

  [ Evangelos Ribeiro Tzaras ]
  * sensor-proxy-manager: Remove non-existing function from headers
  * ambient: Add has-sensor property.
    This can be used to disable auto-brightness controls.
  * brightness-manager: Add auto-brightness-present property.
    This tells us whether enabling auto-brightness is supported.
  * brightness-settings: Hide auto-brightness setting when there's no sensor.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1303

  [ nicole mikołajczyk ]
  * upcoming-events: Handle plural forms correctly
  * pomodoro: Handle plural forms correctly

  [ Antonio Marin ]
  * Update Romanian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Martin ]
  * Update Slovenian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Ryo Nakano ]
  * Update Japanese translation

  [ Hugo Carvalho ]
  * Update Portuguese translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 10 May 2026 20:28:48 +0200

phosh (0.54.0) experimental; urgency=medium

  [ Guido Günther ]
  * icons: Minimize SVGs.
    Some old ones weren't minimized when adding them.
  * doc: Add missing default value

  [ Bruce Cowan ]
  * Update British English translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Flynn Peck ]
  * Update Cornish translation

  [ Baurzhan Muftakhidinov ]
  * Add Kazakh translation
  * Update Kazakh translation

  [ Ryo Nakano ]
  * Update Japanese translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 05 Apr 2026 08:57:28 +0200

phosh (0.54~rc1) experimental; urgency=medium

  [ Flynn Peck ]
  * Update Cornish translation

  [ Guido Günther ]
  * ci: Switch to libevince-gtk3-dev.
    It got renamed in Debian. While at that drop our phoc override
    for the integration tests as it is no longer needed.
  * toplevel-manager: Add comment why we go by app-id.
  * overview: Only activate if we have a toplevel.
    Avoids a critical when swiping in the overview
  * overview: Only add splash if the app-id isn't already known.
    This if for the case of 2nd activation: app already running and being
    reactivated by another instance.
  * app-tracker: Allow to use longer startup timeout.
    This allows us to easily debug apps that have activation problems.
    We'll notice this by the splash being up for way too long but can
    disable it easily.
  * overview: Show notification when app fails to start.
    Let's leverage some of our recent rework. This helps #602 for the case
    where we're certain that the app failed to start.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/602
  * app-tracker: Don't leak dict
  * connectivity-manager: Don't leak icon name
  * favorite-list-model: Use consistent spelling.
    No point in using the UK spelling in the file name
  * favorite-list-model: Use GStrvBuilder.
    This simplifies the code, we can remove index tracking and no longer
    return a non-NULL terminated GStrv from
    phosh_favorite_list_model_add_app.
    It also makes all three functions use the same `for` style loop

  [ Achill Gilgenast ]
  * phosh-session: Launch dbus session if none is already running.
    In OpenRC we have to manually run the dbus session since (unlike
    systemd) OpenRC isn't already providing one.
    By checking $DBUS_SESSION_BUS_ADDRESS, we can safely assume it is not
    already running (either by systemd or manually added in OpenRC setups).
    Downstream-Issue: https://gitlab.alpinelinux.org/alpine/aports/-/issues/17737
  * layout-manager: Set clock box shift if it intersects clock box.
    Without it, it just sets the shift, if the notch intersects with the
    center clock in the top bar. However the camera cutout can be on the
    left, like nothing,spacewar.
    So instead just check if it's on the top of the display and would
    intersect with the whole clock box.
    Closes: <https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1306>
  * layout-manager: Rename clock_shift to clock_box_shift.
    The variable shifts the whole clock box including lock and power button
    down and not just the clock in settings. So include the "box"-suffix, to
    also avoid confusion with the central clock of the top-bar itself.
  * top-panel: Set top margin of clock box regardless of clock shift.
    The clock box shift also applies when the central clock element is not in
    the center e.g. when the cutout is in the left, and would hide other
    parts of clock box.
  * data: Update list of adaptive apps.
    All three application added the X-Purism-FormFactor tag in GNOME 49.
  * data: Remove gsd-wacom as required component from session.
    The Wacom g-s-d plugin has been removed and therefore Phosh would fail to
    launch since the dependency cannot be fullfilled.
    Ref: https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/416

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Evangelos Ribeiro Tzaras ]
  * docs: Drop G_BINDING_DEFAULT in property bindings.
    The semantics clearly state that it's a no-op.
    Also: Logical OR'ing it won't change anything, as it is zero.

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Martin ]
  * Update Slovenian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Alexander Alexandrov Shopov ]
  * Update Bulgarian translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Asier Saratsua Garmendia ]
  * Update Basque translation

  [ Balázs Úr ]
  * Update Hungarian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Gotam Gorabh ]
  * location-quick-setting: Add status page.
    Allows selecting the maximum location accuracy.

  [ Марко Костић ]
  * Update Serbian translation

  [ twlvnn kraftwerk ]
  * Update Bulgarian translation

  [ Andrey Skvortsov ]
  * connectivity-manager: Use generic terms, when ssid isn't available.
    Captive portal may be used on mobile networks as well. For example, if
    account doesn't have enough money or subscription plan doesn't include
    data plan, mobile operator may redirect user to website with
    corresponding information.

  [ Ryo Nakano ]
  * Update Japanese translation

  [ Arun Mani J ]
  * status-icon: Add `priority`
    This property can be used as a conflict-breaker to determine which icon
    to display in space-constrained places. It will be used in the
    subsequent commits related status-icons-box.
  * tree: Add `PhoshStatusIconsBox`
    This box is roughly similar to a `GtkBox`, but instead of trying to
    squeeze all children within given space, it only allocates for available
    width and gives null allocation for the remaining. As the name says, its
    children can be only `PhoshStatusIcon` or `PhoshRevealer` with a
    `PhoshStatusIcon` as child.
  * tree: Move indicators to `PhoshStatusIconsBox`
  * tree: Allow custom status-icons as plugins
  * top-panel: Load custom status-icons
  * plugins: Add simple custom status-icon
  * tests: Add custom status-icons to screenshots

  [ Anders Jonsson ]
  * Update Swedish translation

 -- Guido Günther <agx@sigxcpu.org>  Thu, 26 Mar 2026 18:23:17 +0100

phosh (0.53.0) experimental; urgency=medium

  [ Guido Günther ]
  * portal: Use Rust based GUI variants by default. We want to drop the C
    variants so let's switch.
  * gvc: Update to latest upstream commit. We landed another bugfix, let's
    grab it

  [ Álvaro Burns ]
  * Update Brazilian Portuguese translation

  [ Quentin PAGÈS ]
  * Update Occitan translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 15 Feb 2026 09:23:10 +0100

phosh (0.53~rc1) experimental; urgency=medium

  [ Efstathios Iosifidis ]
  * Update Greek translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Guido Günther ]
  * run: Use plugin_schema_path.
    We have it already so no need to maintain it in two locations
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1298o
  * util: Allow to activate without actions
  * util: Make platform-data helpers public.  We'll use them for
    notifications
  * util: Determine object path automatically.
    Code taken from xdg-desktop-portal-phosh
  * notification: Activate applications when sending notifications.
    We activate the app and send the signal.
    Should our heuristic to determine the bus name fail to work well we
    can send `org.freedesktop.Notifications.ActivationToken` in
    `on_app_activated` as a future improvement.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/852
  * doc: Document missing plugin schema entries
  * brightness-manager: Use _ID for schema consistently.
    No point in having one schema with that suffix and the other without it.
  * brightness-manager: Use faster up interval.
    The human eye adjust to brightness gains more rapidly.
  * backlight: Round backlight level.
    This gives us more precise values than integer cutoff.
  * brightness-manager: Simplify ending the transition
  * brightness-manager: Smoothen brightness transition.
    Use smoothstep to make things look less jittering
  * monitor-manager: Add night light temperature property.
    This allows us to track whether it is in use
  * brightness-manager: Add additional factor when night light is on.
    Night light reduces contrast as the eye is less susceptible to contrast
    in the red spectrum. Lets make the display a bit brighter in those
    cases.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1292
  * brightness-manager: Drop schema check.  We can assume the 49 schema
    now.
  * brightness-manager: Add auto-brightness offset.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1297
  * util: Fix indent.
    Gbp-dch: Ignore
  * app-tracker: Fix indent.
    We shorten a variable name and add get the shell variable in an extra
    step for readability.
  * app-list-model: Allow app-info lookup by recently launched executable.
    The shell is usually used to launch apps so when launching remember the
    executable. This will allow us look up app-info by exectable.
    This is useful for DBus activated apps too as they still usually `Exec`
    have an exec line in the desktop file.
  * audio-manager: Manage audio devices.
    Track the input and output audio devices
  * audio-settings: Use audio-devices and mixer control from audio-manager.
    This will allow us to use audio devices outside settings
  * audio-devices: Move out of settings.
    They're used in the audio manager now
  * channel-bar: Use proper namespace.
    It's a widget in Phosh so use that namespace. This also removes some
    confusion between the gvc submodule and our internal widget.
  * channel-bar: Rename source files.
    Do that in an extra commit to ease review
  * audio-settings: Avoid channel-bar casts.
    Just use the most specific type right away.
  * audio-settings: Avoid pointless cast
  * channel-bar: Remove unused defines
  * audio-devices: Use type.
    We used gpointer to not leak it into libphosh but the library
    is more self contained nowadays.
  * overview: Use common pattern for find_activity_by_toplevel()
    Return early from the loop instead of breaking and make the `l->data`
    assignment the first thing in the loop.
    Also make sure `g_autoptr ()` is always initialized.
    Again fewer lines with easier to read code.
  * overview: Use most specific type for carousel.
    Avoids the long casts
  * activity: Just use `MIN`
    No need to open code this.
  * activity: Use phosh_util_toggle_style_class consistently.
    We use it to remove the class, use it for adding it too
  * shell: Create splash manager earlier.
    We want to use it from the overview so it has to be there with the
    panels.
  * shell: Allow to get splash manager
  * swipe-tracker: Allow to disable swipes
  * splash: Allow to lower/raise the splash
  * splash-manager: Allow to lower all splashs and to raise base on startup-id
  * overview: Use splash colors instead of fake app.
    The fake app wasn't very useful. Use the splash screen
    colors instead.
  * activity: Show spinner when we don't have a thumbnail.
    Add a spinner and show it when we don't have a thumbnail of the
    application yet.
  * activity: Disable swipe and close button while app is loading.
    We can't stop it sensibly atm.
  * activity: Try harder to get an app-id
  * overview: Show activity for launching apps.
    This gives the user feedback that the app is launching.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/647
  * overview: Add splash manager
  * overview: Raise and lower launch splashs.
    When activating a splash we raise it to the top, when activating
    an activity we lower all splashs so the app becomes visible.
    This is not the ideal place to do it as it doesn't concernt the overview
    but we track the toplevels here only atm (see
    https://gitlab.gnome.org/World/Phosh/phosh/-/issues/327)
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/812
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/813
  * overview: Use light mode based on what the splash manager does.
    We won't switch when the user flips the theme during launch but
    that's o.k. for the moment.
  * activity: Render empty state only on drawing area.
    This makes the thumbnail look more like the app
  * activity: Use slightly rounded corners
  * phosh-session: Drop disable-acceleration-check.
    It is a noop nowadays
  * phosh-session: Avoid the extra shell exec
    gnome-session handles that for us
  * phosh-session: Use name variable.
    This ensures we don't accidentally clash with something set
    in the environment
  * media-player: Avoid nan when track length is empty.
    Zero track length (as happens with gapless) can lead to -NAN
    which trips up the progress bar. Use 0.0 in that case.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1287
  * brightness-manager: Skip brightenss update.
    We can skip the brightness update on night light changes when
    auto brightness is disabled.
  * lockscreen: Sort callbacks alphabetically
  * lockscreen: Use two finger swipe gesture for brightness.
    This works better then trying to fit a zoom gesture. Move
    to the UI file while at that.
    Fixes: 336929ca4 ("lockscreen: Ignore gesture when user wants to zoom")
    Co-authored-by: Arun Mani J <j.arunmani@proton.me>
  * packaging: Update dependencies.
    We need recent schema to start successfully. Drop an ancient
    conflict on calls and require stevia so we always have a working
    OSK (user can still switch ofc).
  * docs: Mention UsesNotifications.
    This is is similar to UsesFeedback.
  * gvc: Switch back to blessed repo.
    Most of our patches are in. The leak fix is still missing but hopefully
    we get that soon.
    Update to 664eba4 ("mixer-control: Document that add_stream is transfer full")
  * overview: Ignore missing activity.
    When an app failed to start and we can't find a matching
    activity that is usually because it crashed or exited
    already. Avoid a critical in that case.
  * toplevel-manager: Drop super-cautious checks.
    The pointer arrays are created in init and never unref'ed or
    free'd until dispose so no need to check this every call.
  * overview: Drop unused arguments from signal handler.
    No need to check types we never use
  * toplevel-manager: Track launched apps.
    When an app is reporting that it launced we track its app-id
    and wait for a matching toplevel in toplevel-manager. When
    that doesn't happen in time, we send out a signal.
  * overview: Remove splash if we never get a toplevel.
    In the unlikely case that we don't see a toplevel from a launched
    app, remove the splash when toplevel-manager tells us that the
    toplevel will likely never show up.

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Fredrik Fyksen ]
  * Update Norwegian Bokmål translation

  [ twlvnn kraftwerk ]
  * Update Bulgarian translation

  [ Flynn Peck ]
  * Add Cornish translation

  [ Arun Mani J ]
  * pokit-auth-agent: Follow our coding style
  * polkit-auth-prompt: Follow our coding style
  * polkit-auth-agent: Uncrustify
  * polkit-auth-prompt: Uncrustify
  * polkit-auth-prompt: Display more information about user.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1229

  [ Rudra Pratap Singh ]
  * top-panel: Add a common parsing function for panel options.
    This way, we can keep the parsing in
    sync for both mobile and non mobile panels.
  * top-panel: Make panel launching actions take parameters.
    Instead of a string we use (sav) parameter type
    so we can pass additional parameters.
  * util: Allow to open settings panel with additional parameters.
    We add a second parameter to
    `phosh_util_open_mobile_settings_panel`, allowing
    one to send panel options alongside. The panel
    name and options can then be packed to remotely
    activate settings app accordingly.
  * caffeine-quick-setting: Allow to open prefs via mobile settings.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1280

  [ Danial Behzadi ]
  * Update Persian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Martin ]
  * Update Slovenian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ AJ Dunevent ]
  * device-row: Use 'alias' instead of 'name' for device display.
    The 'alias' property is preferred as it contains user-defined names
    while falling back to the hardware name if no alias is set.  Stays
    consistent with other UI elements, similar environments, etc.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1300

  [ Artur S0 ]
  * Update Russian translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 10 Feb 2026 18:03:17 +0100

phosh (0.52.1) experimental; urgency=medium

  * gvc: Handle port changes on streams.
    Use a gvc version that handles an existing stream replacing its
    active port.
    This works with pipewire 1.5.84 and wireplumber 0.5.13

 -- Guido Günther <agx@sigxcpu.org>  Tue, 06 Jan 2026 14:04:46 +0100

phosh (0.52.0) experimental; urgency=medium

  * No changes from 0.52~rc1

 -- Guido Günther <agx@sigxcpu.org>  Sun, 04 Jan 2026 15:44:21 +0100

phosh (0.52~rc1) experimental; urgency=medium

  [ Guido Günther ]
  * ruff: Set line length.
    This lets
      meson test -C _build/ --suite lint --print-errorlogs
    pass again.
  * build: Bump minimum glib version to 2.80.
    Needed for `g_log_writer_default_set_debug_domains`
  * tests: Use g_log_writer_default_set_debug_domains directly.
    No need to go through a custom implementation
  * shell: Track log domains
  * debug-control: New DBus interface to control debug settings.
    For now we allow to set log levels via DBus. This is similar
    to what we do in phoc.
  * shell: Export debug control interface.
    Allows to set log domains via DBus
  * log: Drop custom log handling.
    Just use glib's default handler, we can set log domains
    via DBus now.
  * tests/integration: Use DBus call instead of timeout.
    Now that we have a DBus interface that is exported once the
    shell is up we can drop the timeout check in favor of a DBus
    call thus speeding up the tests.
  * ambient: Return early when release got cancelled.
    This means `self` is no longer valid so don't try
    to set any values on it.
  * docs: Document Python dbusmock based integration tests
  * docs: Document the screenshot tests
  * plugin-prefs-standalone: Add option to show lockscreen plugins.
    This allows us to specify the plugin type in all cases.
  * plugin-prefs-standalone: Exit gracefully on SIGTERM.
    This allows e.g. coverage information to be written out.
  * test-take-screenshots: Simplify testing one page
  * plugins-prefs: Screenshot upcoming events prefs too
  * test-take-screenshot: Wait for toplevels rather than sleeping.
    Instead of just guessing whether the app started, make sure it's there
    and check when the dialog opened by counting the toplevels.
    We also send keyboard shortcuts more than once so we don't have to worry
    about them being missed because e.g. the old dialog didn't go away yet
    or the window didn't get focus yet.
  * test-take-screenshots: Screenshot quick setting prefs too
  * test-take-screenshots: Wait for OSD to show
  * test-take-screenshots: Introduce context.
    About all functions want a loop, a timer, a keyboard and a waiter.
    Wrap them in one context.
  * test-take-screenshots: Add and remove a keybinding.
    We have the proxy anyway so let's make sure we can do this without
    throwing any criticals.
  * test-take-screenshots: Drop unneeded cast
  * tests/integration: Check for running process later.
    This improve error reporting as we make sure we read the last output
    bits. This is especially useful when phosh fails to start as we'd
    otherwise completely swallow the error message.
  * tests/integration: Check that we detect Wi-Fi networks.
    This exercises more of our Wi-Fi code
  * tests/integration: Check that we detect VPNs.
    Make sure we can detect VPNs without raising criticals
  * dbus: Fix swapped arguments for PhoshIdleDBus.
    Otherwise targets depending only on the headers can get it wrong.
    See https://gitlab.gnome.org/World/Phosh/phosh/-/jobs/5808582
    Fixes: 6376839df ("build: Separate dbus headers and sources")
  * tests/integration: Build udev mocks manually.
    This will allow us to tweak them in the tests.
  * tests/integration: Test brightness setting
  * brightness-manager: Don't raise brightness on idle.
    When idle dimming is enabled we never want to increase the brightness.
    If current brightness is below target dimming brightness just don't do
    anything.
    Fixes: 57ee80353 ("brightness-manager: Add Brightness DBus interface")
  * tests/integration: Move Wayland socket and runtime dir into a tmpdir.
    This improves test isolation
  * tests/integration: Allow to use keyfile backend.
    We set a separate homedir so we can maintain a custom keyfile and allow
    to pass the settings backend when creating the Phosh object.
  * tests/integration: Load a custom keyfile
  * tests/integration: Load quick settings.
    Load quick settings and check for the hotspot one that it got loaded
  * brightness-manager: Allow to set the adjustment value.
    This makes it simper for other parts of the shell to get and
    set the value avoiding to have to get the adjustment first.
  * brightness-manager: Split out osd handling.
    We'll use it from other places as well
  * brightness-manager: Allow to show the osd.
    Allow to show the OSD when setting the value
  * lockscreen-manager: Add a brightness gesture.
    Two finger swipe left to right increases brightness. The new
    brightness is calculated as offset to the current brightness
    based on the swipe distance.
    This means that if something else sets brightness in the meantime it
    will be overwritten. If we'd just add the difference between two events
    this might be too small to make an actual difference thus increasing the
    brightness too slowly.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/814
  * shell: Don't setup primary monitor handler without one.
    When running nested the window can be closed leaving us without
    a monitor. We shouldn't try to setup any handlers in this case.
  * activity: Fix indent
  * activity: Use _once function for timeout.
    We only run it once. While at that avoid function cast for type
    safety.
  * activity: Drop explicit notify.
    No point in doing so for CONSTRUCT_ONLY properties.
  * activity: Minimize set_property.
    We don't want to have any logic within the `switch` so simplify
    things like we do it in other classes.
  * activity: Clarify set_thumbnail.
    It is transfer full. Make that more obvious by moving the thumbnail
    setting to the top too and adding a doc string.
  * overview: Remove unused headers
  * overview: Simplify has-activities settings.
    Set it in a single place and based on the widgets in the carousel.
    No point in counting toplevels.
  * app-tracker: Avoid casts
  * splash: Modernize.
    Avoid function casts, fix indent.
    No functional change.
  * toplevel-thumbnail: Remove superfluous cast
  * toplevel-thumbnail: Modernize property definition
  * toplevel-thumbnail: Use correct parent class.
    The parent class is PhoshThumbnail not GObject
    Fixes: 58d280ba2 ("Introduce PhoshThumbnail and PhoshToplevelThumbnail")
  * toplevel-thumbnail: Don't assume specific parent class.
    Use `PHOSH_THUMBNAIL_CLASS` to get the class as we do it elsewhere
    to set the vfuncs.
  * toplevel-thumbnail: Use canonical naming
    `self` is the instance of the current type (like everywhere else in
    phosh) while we name the parent class type ones consistently
    `thumbnail`. The code was a mix of both before with hard to read
    casts.
  * toplevel-thumbnail: No need to chain properties up to parent class.
    GObject does that for us.
  * toplevel-thumbnail: Remove unused headers
  * thumbnail: Remove superfluous implementations.
    They're completely empty
  * thumbnail: Unclutter ready handling.
    Lots of indirection to set a boolean. Just use the common pattern
    where the derived classes set the property on the parent so we save
    two vfuncs.
  * thumbnail: Remove set_property.
    Superfluous for read-only properties.
  * battery-manager: New class to track battery and charging.
    Needed to move things out of `PhoshBatteryInfo`
    Helps: https://gitlab.gnome.org/World/Phosh/meta-phosh/-/issues/25
  * shell: Allow to instantiate battery manager
  * battery-info: Name source file properly.
    We use a `-` between words. Another reminiscence from the early days
    cleaned up.
  * battery-info: Use PhoshBatteryManager.
    This avoids having multiple upower clients around.
  * tests/integration: Allow to save DBus traffic.
    This can be helpful to figure out if a message was actually sent
  * integration-test: Test battery manager.
    Test that the battery manager picks up charging related changes
    correctly.
  * util: Unify panel launching.
    This reduces the code and we also pass on platform data for proper
    activation. We'll reuse `phosh_util_activate_action` in other places
    too.
  * util: Pass platform data when launching panels.
    This ensures the app is brought to the foreground if already running.
  * overview: Use g_type_ensure() to ensure types
  * overview: Install properties.
    As we only connect to the notify signal noone noticed.
  * overview: Connect notify::has-focus with the others
  * overview: Connect activity signal with the others.
    Although we strictly don't need overview here we'll do so
    at some later point and also check there's a toplevel (which
    will also be useful later too).
  * overview: Use `g_connect_object`
    Reads a bit better here.
  * overview: Simplify connecting to toplevel_manager
  * overview: Bind app-grid signal via UI template.
    Less to worry about
  * overview: Connect carousel signal handlers via UI file.
    Less to worry about.
  * swipe-away-bin: Fix indent
  * app-grid: Move declaration to the top.
    This is borderline but as we can better indent the
    criteria let's do it.
  * app-grid: Use type checked cast.
    This is no performance critical path
  * app-grid: Simplify app search focus handling.
    Use `gm_str_is_null_or_empty()` and  `phosh_util_toggle_style_class()`
  * splash-manager: Use G_PARAM_STATIC_STRINGS
  * layout-manager: Avoid gmobile deprecation.
    We don't take the effort to handle different radii as with
    xdg-cutouts-v1¹ (adjusted for layer surfaces) we'll get the correct radii
    without having to worry about screen transforms.
    ¹) https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/372
  * torch-info: Always use 100% brightness if torch can't scale.
    If the torch can't scale brightnes we want to show 100% indepent
    from any min and max brightness set via udev.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1293
  * lockscreen: Ignore gesture when user wants to zoom.
    This allows zoom to work in the ticket box again.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1294

  [ Victor Dargallo ]
  * Update Catalan translation

  [ Rafael Fontenelle ]
  * Update Brazilian Portuguese translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Arun Mani J ]
  * wifi-manager: Allow to get active connection
  * tree: Export few symbols of Wi-Fi manager
  * wifi-hotspot-quick-setting: Load `style.css`
    Will be used by status-page in subsequent commits.
  * wifi-hotspot-quick-setting: Add `PhoshWifiHotspotStatusPage`
  * wifi-hotspot-quick-setting: Add status-page.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1259
  * wifi-hotpsot-quick-setting: Uncrustify
  * wifi-hotspot-quick-setting: Use class for style
  * wifi-hotspot-quick-setting: Show hotspot SSID.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1285
  * wifi-hotspot-quick-setting: Close status-page on deactivation.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1286

  [ Martin ]
  * Update Slovenian translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Achill Gilgenast ]
  * ci: Add qrcodegen-dev dependency for Alpine edge
    also removed duplicates and sorted the list again

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Rudra Pratap Singh ]
  * upcoming-events: Use GListStore to store event lists.
    We replace the use of `GPtrArray` with a
    `GListStore` as we can then use it in
    combination with a `GtkFilterListModel`.
  * upcoming-events: Use GtkFilterListModel to filter empty days.
    Additionally make `events_box` a `GtkListBox` instead
    so as to bind it to the filtered model.
  * upcoming-events: Add CSS class for PhoshEventList listbox.
    Allows us to keep styling separate for event-list
    listbox and events listbox.

  [ Artur S0 ]
  * Update Russian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Asier Saratsua Garmendia ]
  * Update Basque translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Anders Jonsson ]
  * Update Swedish translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 29 Dec 2025 18:22:14 +0100

phosh (0.51.0) experimental; urgency=medium

  [ Artur S0 ]
  * Update Russian translation

  [ Evangelos Ribeiro Tzaras ]
  * subprojects: Switch to libcall-ui 0.1.5.
    We have a tagged version now.

  [ Antonio Marin ]
  * Update Romanian translation

  [ Rudra Pratap Singh ]
  * caffeine-quick-setting: Add plugin preferences.
    We now have 'caffeine-quick-setting-prefs'
    preferences that allow one to add or remove
    caffeine intervals.
  * caffeine-prefs: Add empty-state for no intervals
  * caffeine: Close status page on selecting interval
  * caffeine-quick-setting: Activate timer on selecting interval

  [ Martin ]
  * Update Slovenian translation

  [ Guido Günther ]
  * caffeine-quick-setting: Make prefs dialog follow content size.
    Otherwise in bottom sheet mode adding new rows doesn't make the dialog
    resize and the user doesn't see the new rows.
  * backlight: Allow to force non linear backlight scale.
    Add a debug flag that allows us to assume the backlight uses
    a non-linear scale. This is meant for situations where the
    kernel information is incorrect.
  * tests/integration: Use pixman renderer.
    Our udev mocks confuse wlroots when trying to get a render node
    otherwise
  * ci: Use our pytest runner.
    This avoids duplicating env vars in multiple places
  * tests/integration: Allow to launch Phosh under a wrapper.
    Can be used for udev mocks or valgrind
  * tests/integration: Mock and test torch and backlight.
  * caffeine/prefs: Make empty state compact.
    It's for a dialog, not a main window
  * torch-manager: Don't return 0 when torch is on.
    This makes it simpler for UI elements to display a sane value. 0% with
    the LED still on looks confusing and we require
    GM_TORCH_MINIMUM_BRIGHTNESS to indicate a still visible LED brightness.

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Robert Eckelmann ]
  * torch-manager: Add minimum brightness.
    We get it from udev when available and fall back to 5% of maximum
    brightness otherwise.
    The udev rule to provide minimum brightness overrides via hwdb is
    shipped in gmobile.
  * settings: Drop minimum brightness.
    This is now handeld by torch manager

  [ Sabri Ünal ]
  * Update Turkish translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 16 Nov 2025 11:27:16 +0100

phosh (0.51~rc1) experimental; urgency=medium

  [ Rudra Pratap Singh ]
  * upcoming-events: Show appropriate status page in case of no events.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1255
    Fixes: 6614bbd39 ("upcoming-events: Add new setting for skipping non-event days")
  * upcoming-events: Reindent UI file
  * caffeine: Add libcall-ui as dependency
  * caffeine: Refactor icon names into defines.
    No functional change.
  * caffeine: Allow to select caffeine duration.
    With this, we add support for custom intervals
    in caffeine. It will decide how long caffeine
    will stay on for. Intervals can be added/selected
    individually via gsettings keys.

  [ Guido Günther ]
  * layout-manager: Don't forget to init corner shift.
    This ensures we have the correct default in case of no rounded corners.
  * top-panel: Shift gear icon according to corner shift
  * top-panel: Drop `name` property.
    Fixes the
       (phosh:1106322): Gtk-WARNING **: 17:26:18.095: GtkBox does not have a child property called name
    warning on startup.
    Fixes: b567c6ed3 ("top-panel: Add gear button")
  * doc: Use apt instead of apt-get. Let's be modern here.
  * screenshot: Update screenshot. Let's be at least as recent as Wikipedia.
  * ci: Update shared scripts to 7aa7dc1
  * treewide: Update my copyright assignment. Let's use the fiduciary agreement.
  * ambient: Avoid cast. This gives us more type safety
  * ambient: Rename settings to schema.
    The later is more wide spread
  * udev: Handle fake-builtin debug flag. If set assume that the found
    displays are built-in. This allows to test backlight handling in
    nested sessions.
  * auto-brightness: Add interface for turning ambient into display brightness
  * auto-brightness: Add bucket implementation.
    This implementation uses buckets to determine the
    brightness level.
  * shell: Create ambient manager earlier.
    We'll need it for the brightness manager which gets created
    with the panels. We also add a getter.
  * ambient: Track whether display brightness should be adjusted.
    If so emit the ambient brightness values so other parts of the shell can
    consume them.
  * ambient: Track automatic high-contrast.
    Avoids dconf lookups and is a bit easier to read
  * brightness-manager: Track ambient brightness changes.
    When enabled we adjust the backlight brightness according
    to the auto-brightness trackers output.
  * data: Add auto-brightness-symbolic icon.
    I wanted to draw my own but then accidentally found one by
    Jakub Steiner in org.gnome.design.IconLibrary.
  * brightness-manager: Expose auto-brightness-enabled.
    This allows users of the brightness manager to use it
    without having to care about e.g. the ambient manager.
  * settings: Use different icon when autobrightness is in use
  * emergency-calls: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
  * emergency-calls-manager: Use correct types for async callbacks.
    This gives us more type safety
  * build: Allow to codegen object manager too
  * calls: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
  * calls-manager: Use correct types for async callbacks.
    This exposed a real bug where the data argument used the
    wrong type (but was unused).
  * calls: Use correct types for async callbacks.
    Gives us more type safety
  * location-manager: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
  * location-manager: Use correct types for async callbacks.
    Gives us more type safety
  * session-manager: Use default DBus prefix for `ClientPrivate`
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
  * session-manager: Use correct types for async callbacks.
    Gives us more type safety.
  * session-presence: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
  * osk-manager: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
  * osk-manager: Use correct types for async callbacks.
    This gives us more type safety.
  * rfkill-manager: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
  * rfkill-manager: Use correct types for async callbacks.
    This gives us more type safety.
  * mpris: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
  * mpris-manager: Use correct types for async callbacks.
    This gives us more type safety.
  * mpris-player: Use correct types for async callbacks.
    This gives us more type safety.
  * background-manager: Avoid criticals when monitor goes away first.
    We emit a critical when the monitor goes away before the layer-surface.
    However that doesn't really matter to us so make it a debug message.
  * audio-devices: Ignore role loopbacks.
    Users shouldn't switch to the media role loopback devices
  * location-manager: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
    In this case everything get a lot shorter as the `interface_prefix`
    didn't match and we thus had the full `org_freedesktop` in all the
    names.
  * notify-manager: Use default DBus prefix.
    This allows us to move to `dbus_client_protos` so our generated header
    gets added to `generated_dbus_headers` instead of
    `generated_dbus_sources`.
    In this case everything get a lot shorter as the `interface_prefix`
    didn't match and we thus had the full `org_freedesktop` in all the
    names.
  * build: Separate dbus headers and sources.
    The idle monitor needs an object manager. Moving it into
    dbus_server_protos would create one with a `PhoshDBus`
    prefix clashing with the one from `org.gnome.Calls.Call`
    so keep it separate for now but split headers and
    sources already. (Closes: #1276)
  * ambient: Improve readability.
    Get the proxy ones instead of producing overly long cast lines
  * ambient: Guard against `NULL` unit
    g_ascii_strcasecmp() doesn't handle that gracefully and it happens
    e.g. on laptops after resume.
  * ambient: Handle settings changes in a one place.
    Otherwise it is harder to determine if we should claim the sensor
    base on auto-hc and auto-brightness settings.
  * ambient: Reclaim sensor on unblank.
    The current code didn't necessarily do this.
  * ambient: Simplify claim / unclaim callbacks.
    Avoid the casts, bumping readability and making claim and unclaim more
    alike
  * ambient: Release sensor more thorougly.
    Otherwise we don't reclaim. In order to avoid overlapping calls
    of claim and release clearing the flag we make it a counter instead
    of a plain boolean.
  * ambient: Separate HighContrast handling from ambient.
    This makes is easier to invoke it from multiple places. We e.g.
    forgot to stop sampling when the sensor went away.
  * auto-brightness-bucket: Only notify when index changes.
    No need to emit the signal if it didn't and thus brightness
    wouldn't change.
  * backlight: Allow to get brightness levels.
    Will be used in the next commit
  * brightness-manager: Use brightness transition.
    This makes brightness changes less noticeable
  * ci: Drop gstyle check.
    It fails on contrib code that we don't want to modify.
  * media-player: Move media loading to separate function
  * media-player: Don't reload cover art if the URL didn't change.
    Players like kasts trigger a whole lot of meta data updates grinding
    devices like the Librem 5 to halt when loading the icon.
  * brightness-manager: End transition immediately when disabled.
    When the user toggles automatic brightness off we want to end the
    transition right away.
    Fixes: f50546254 ("brightness-manager: Track ambient brightness changes")
  * brightness-manager: Trigger auto brightness transition when enabled.
    Always trigger an auto-brightness transition when enabled. In dark
    environments the ambient sensor might not put out a new value but
    we still want to transition right away when the user enables it.
    Fixes: f50546254 ("brightness-manager: Track ambient brightness changes")
  * brightness-manager: Use relative brightness for keybindings too.
    Instead of calculating based on the brightness range use relative
    brightness and the number of levels the hardware supports.
  * brightness-manager: Use adjustment range [0.0, 1.0]
    This is what we use for the backlights and there's nothing
    gained when we convert to percentage.
  * brightness-manager: Allow to get auto-brightness-enabled
  * backlight: Track scale.
    This allows to track whether the backlight exposes a linear
    or exponential scale.
  * backlight: Use anonymous struct.
    Better groups the variables
  * backlight: Separate backlight level from exposed brightness.
    When we want the brightness curve to be non-linear be need two
    values: those exposed to the user facing side and those values
    actually set in the hardware (called `level`s).
    We do the split here but use a linear mapping only. This will
    change in the next commits.
  * backlight: Use logarithmic scale.
    If the backlight type is unknown or linear we use a logarithmic
    scale to match the human eye's brightness perception, see
    https://en.wikipedia.org/wiki/Weber%E2%80%93Fechner_law
    This lets the brightness slider in settings appear linear over the
    whole scale instead of doing almost nothing in the upper half.
  * brightness-manager: Make slider an offset when auto-brightness is on.
    With autobrightness enabled we want the brightness slider to be an
    offset to the auto brightness target rather than the actual brightness.
  * brightness-manager: Update autobrightness on monitor changes
  * brightness-settings: Remove origin when auto-brightness is enabled.
    As this is an offset now we don't want to draw the origin part
    Helps: https://gitlab.gnome.org/guidog/meta-phosh/-/issues/19
  * brightness-settings: Use icon.
    This makes it consistent with the audio settings
  * brightness-manager: Provide a suitable icon based on current state.
    Similar to other managers provide an icon-name based on the current
    state (auto-brightness enabled or not). We need that for the OSD and can
    then reuse it in other parts of the shell.
  * brightness-settings: Use brightness-manager's icon-name property
  * ci: Update to forky
  * libcall-ui: Update to latest 0.1.x branch.
    Avoids clang build failures
  * plugins: Avoid warning when copying symlinks.
    Otherwise we might end up copying the symlink with newer meson. We
    need to bump the minimum meson version for that.
    Fixes: fda76c376 ("mobile-data: Install icon to user's filesystem")
  * doap: Drop Zander.  Not active since several years. Thanks Zander for
    your work!
  * doap: Add Arun
  * wifi-manager: Fix log domain
  * ci: Use headless backend for integration tests.
    No need to have the tests guess
  * tests/integration: Specify Wayland socket.
    That is more reliable than parsing it from the output
  * tests/integration: Don't always close stdout.
    This allows us to parse phosh's output
  * tests/integration: Ease output checking.
    Allow tests to access phosh's output more easily.
    They can specify if the check should fail when the searched for string
    is already present.
  * tests/integration: Allow to tweak phosh's environment.
    This allows to e.g. set logging levels without polluting `os.environ`.
  * tests/integration: Simplify running pytests locally.
    Setting the env vars can be cumbersome so make it as simple as
  * tests/integration: Make is simple to save test logs
  * tests: Lint Phosh helper too
  * ci: Use pixman renderer for integration tests. Avoids criticals.
  * tests/integration: Disable XWayland.
    We don't need it in CI
  * tests/integration: Add initial system service test.
    We interact with quiet a bit of system services but don't exercise this
    in the tests so far. Make sure we at least look for a modem.
  * tests/integration: Allow phoc to exit cleanly.
    We handle `SIGTERM` gracefully nowadays so allow for that too.
  * ci: Set default build opts.  No need to set them on jobs individually
  * ci: Minimize script sections.  We move the variable setting to
    `variables:`
  * ci: Use phoc 0.51~rc1
  * ci: Collect junit reports from tests run by meson as well

  [ Martin ]
  * Update Slovenian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Nathan Follens ]
  * Update Dutch translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Artur S0 ]
  * Update Russian translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Arun Mani J ]
  * simple-custom-quick-setting: Simplify files.
    Remove unnecessary headers and uses 2 lines separation between
    functions.
  * caffeine-quick-setting: Simplify files
  * dark-mode-quick-setting: Simplify files
  * mobile-data-quick-setting: Simplify files
  * night-light-quick-setting: Simplify files
  * pomodoro-quick-setting: Simplify files
  * scaling-quick-setting: Simplify files
  * wifi-hotspot-quick-setting: Simplify files
  * ci: Ignore deleted files in `check-ui`
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1274
  * tree: Add `PhoshBrightnessSettings`
  * settings: Use `PhoshBrightnessSettings`
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1272
  * settings: Clean up unused headers

  [ Gotam Gorabh ]
  * plugins: Add location quick setting.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/783
  * build: Define 'phosh_plugin_icon_dir'
  * caffeine: Install icon to user's filesystem
  * dark-mode: Install icon to user's filesystem
  * night-light: Install icon to user's filesystem
  * pomodoro: Install icon to user's filesystem
  * scaling: Install icon to user's filesystem
  * wifi-hotspot: Install icon to user's filesystem
  * mobile-data: Install icon to user's filesystem
  * location: Install icon to user's filesystem
  * debian: Install plugin's icon
  * ci: Use common gchar check

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Efstathios Iosifidis ]
  * Update Greek translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 09 Nov 2025 17:25:42 +0100

phosh (0.50.0) experimental; urgency=medium

  [ Guido Günther ]
  * shell: Move osd window here.
    This allows us to use the osd window not only via DBus and
    it doesn't warrant its own manager object.
  * backlight-manager: New object to manage backlight brightness.
    This manages keybindings, OSD, etc as we don't want that put into
    a brightness slider. We can later on use it to manage the brightness
    of different backlights (instead of just the primary one).
  * shell: Instantiate backlight manager
  * brightness-manager: Make keybindings optional.
    The corresponding schema is not very wide spread yet so don't error
    out if the schema isn't recent.
  * simple-custom-quick-setting: Hide in settings by default.
    We don't want to show demo plugins there
  * calendar: Hide in settings by default.
    We don't want to show demo plugins there
  * ci: Trigger libphosh-rs pipeline.
    Adjust to the new repo location
  * monitor-manager: Move mode building to separate function.
    We'll make use of this in the next commit
  * monitor-manager: Only skip unnamed mode if not the current one.
    This helps e.g. when running nested as those configs only have
    a single unnamed mode.
  * monitor-manager: Add default mode when there's no mode list
  * data: Depend on OSK target
    gnome-session >= 49 no longer handles `RequiredComponents`
    in session files. We hence need start the OSK via systemd.
    Do so by providing a target unit. The OSK implementations then
    merely need to fill in the service unit.
  * ambient: Reset theme when turning of auto-hc.
    We want to make sure the users has back its default theme
    when they disable automatic high contrast.
  * session: Start the OSK later.
    We want the layer ordering to happen after the shell is up.
  * brightness: Remove unused variables.
    Fixes: aa0066c5a ("settings/brightness: Use built in brightness handling")
  * backlight: Add and use methods to get and set relative brightness.
    No need to make the calculations in multiple places
  * shell: Allow to get brightness manager.
    We want to get it in `PhoshSettings`
  * brightness-manager: Maintain an adjustment.
    Maintain an adjustment of brightness percentage as model. That frees
    other parts of the shell from doing so.
  * settings: Use brightness manager's adjustment.
    That way we don't need to worry about any monitor changes
    and while at that can get rid of the somewhat arcane code
    (the brightness slider was one of our first features :)).
  * brightness-manager: Add Brightness DBus interface.
    The DBus API XML is from gnome-shell as of:
      e54aa588c ("slider: Use the sprite of the touch event, not the pointer")
  * brightness-manager: Move keybindings schema check to end of init.
    Otherwise we exit early with older schema disabling brightness
    handling completely.
    This allows us to run with schemas < 49.0.
  * settings: Only show brightness slider when useful.
    For now we show it when we have brightness control. We might
    also hide it later on when automatic brightness is enabled.

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 05 Oct 2025 17:02:58 +0200

phosh (0.50~rc1) experimental; urgency=medium

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Philipp Kiemle ]
  * Update German translation

  [ Guido Günther ]
  * treewide: Prefer char over gchar.
  * tests: Use g_timout_add_once.
    Our on_waited never acturally returned `FALSE` to stop the
    timeout.
  * wifi-network-row: Use correct type for transform func
  * wifi-status-page: Use correct function signature.
  * build: Fix indent.
    We can use a list so that the automatic formatter doesn't get confused.
    Fixes: b2fcd0dcf ("build: Format meson files")
  * doc: Update issue template.
    Some information is nowadays easier to maintain, debugging
    is better documented.
  * quick-settings: Enable wifi-hotspot and mobile data by default.
  * settings: Disable launching mobile panels on lockscreen too.
    Fixes: af37b2c74 ("settings: Add action to open mobile settings")
  * top-panel: Move launching settings here.
    This allows us to use it from all places in the top panel
  * icons: Add settings icon. Taken from org.gnome.design.IconLibrary.
  * top-panel: Add gear button. This gives us easy access to the top panel
    configuration
  * treewide: Use stevia. phosh-osk-stub is no more.
  * location-manager: Avoid cast. This gives us more type safety
  * location-manager: Use cancellable more. Cancel these calls too on shutdown
  * proximity-manager: Use cancellable. Fixes a test suite crash
  * location-manager: Dispose connection on shutdown.
    The object returned by `g_bus_get_finish()` is a singleton
    but we need to unref it nevertheless.
  * wwan-mm: Avoid cast.
    This gives us more type safety
  * wwan-mm: Avoid cast.
    This gives us more type safety
  * wwan-mm: Dispose connection on shutdown
  * monitor-manager: Avoid cast.
    This gives us more type safety
  * tests: Make sure gvfs doesn't spawn in tests.
    We don't want it to take any DBus connection that could block
    GTestDBus shutdown.
  * util: Improve phosh_dbus_service_error_warn()
    We usually want to special case "cancelled" and
    "doesn't exist" in the tests.
  * feedback-manager: Ignore service unknown errors.
    These can happen in tests
  * tests: Set XDG_CURRENT_DESKTOP.
    This ensures we pick up Phosh's gsettings defaults
  * ci: Udpate image.
    Let's update to Trixie before we switch to Forky soon.
  * ci: Shuffle dockerfile a bit.
    Update everything first rather than in between. The
    removal of the comment ensures we actuall get the build-deps
    installed again thus speeing up the build.
  * keyboard-events: Check for error.
    It is an initable so lets use it
  * util: Add helper to construct keybindings.
    This happens in different places of the shell and is repetitive
  * top-panel: Use keybindings builder
  * home: Use keybindings builder
  * home: Don't forget to add the super key entries.
    We want to have them in the keybinding names as well so they
    get removed on dispose.
  * run-command-manager: Use keybindings builder
  * screenshot-manager: Use keybindings builder
  * gitignore: Ignore wraplock
  * monitor-manager: Drop change_backlight helper.
    No longer invoked by g-s-d
  * keyboard-events: Drop protocol version check.
    We require a recent enough version since ages
  * shell: Init settings early.
    We want to do as little as possible in constructed
  * shell: Move toplevel manager to init.
    We want to do as little as possible in constructed
  * shell: Set resource path in init.
    We want to do as little as possible in constructed
  * udev-manager: New class to handle udev interaction.
    We need a client for torch and backlight. Track it in a common class
    and add the helpers we'll need for backlight handling.
  * udev-manager: Get us a login session proxy.
    While not strictly udev related torch and backlight both need it
    and there's no point in introducing yet another class.
    We might want to turn that into a more generic "ShellBackend" class that
    could e.g. also track gsettings.
  * shell: Instantiate udev manager.
    It's a singleton but lets give it clear life cycle
  * packaging: Version g-s-d dependency.
    We want one entity to control brightness
  * backlight-sysfs: New class to manage sysfs based backlights.
    There might be others later, e.g. ddc and thus introduce a
    `PhocBacklight` base class. This is inspired by what g-s-d 48 did and
    what mutter 49 does now so we can continue to interact with g-s-d power.
  * monitor: Create backlight.
    The backlight is attached to the monitor so we can look it up
    for brightness handling.
  * settings/brightness: Use built in brightness handling.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1261
  * udev-manager: Support torch subsystem too.
    Use that from the torch-manager

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Anna (cybertailor) Vyalkova ]
  * tests: Don't assume build directory is inside source directory.
    Fixes: 4c58fc4fb ("searchd: Add deamon to gather search results")

  [ Evangelos Ribeiro Tzaras ]
  * meson: Require rst2man for building manpages.
    The build option description already specifies that rst2man is
    required, but it's not codified in the build files.

  [ Nathan Follens ]
  * Update Dutch translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Kristjan SCHMIDT ]
  * Update Esperanto translation

  [ twlvnn kraftwerk ]
  * Update Bulgarian translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 29 Sep 2025 18:05:54 +0200

phosh (0.49.0) experimental; urgency=medium

  [ Guido Günther ]
  * search: Link statically.
    Otherwise searchd would require an additional shared
    library.
  * search: Don't install library.
    We don't want to ship another shared library
  * searchd: Honor meson option.
    Just having an option isn't enough, we also need
    to take it into account.
    Fixes: 4c58fc4fb ("searchd: Add deamon to gather search results")
  * media-player: Load file icon as pixbuf.
    This will allow us to tweak it if needed. It also
    makes the read async.
  * media-player: Add setter for image
  * media-player: Better handle non square icons.
    The thumbnail provided by Firefox for e.g. youtube isn't
    square. Gtk-3 top aligns the thumbnail making it look odd,
    center the thumbnail to make it look better.
  * media-player: Round corners of album art.
    We round corners via cairo in
    https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/704
    and can thus move the logic over here too. This can be dropped
    when we switch to Gtk-4 as it can handle that for us.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/697
  * treewide: Use `-` instead of `_` for swapped-object-signal
  * abi: Allow to access phosh_shell_get_type()
    Plugins should be able to perform type checks.
  * pomodoro-quick-setting: Allow to start timer on screen unlock.
    Otherwise it is easy to forget to turn it on.
  * pomodoro-quick-setting: Start on login.
    For the user this isn't easily distinguishable from a regular unlock.
    Since the top-panel can be recreated we use a global variable.
  * phosh-pomodoro-quick-setting-prefs: Shorten key names.
    They're only used in this compilation unit
  * phosh-pomodoro-quick-setting-prefs: Allow to set 'start-on-unlock'
  * upcoming-events: Use custom icons.
    We indicate empty vs non-empty rows rather than suggesting
    a sorting order.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1245
  * libphosh: Add explicit dependency on generated headers.

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Martin ]
  * Update Slovenian translation

  [ Achill Gilgenast ]
  * phosh-keypad: Use alpha when focused.
    Follow-Up from https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1250
  * phosh-search-bar: Use alpha background color.
    Doesn't look so out of place in the overview

  [ Artur S0 ]
  * Update Russian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Gotam Gorabh ]
  * searchd: Fix crash by passing GStrv instead of GVariant to subsearch.
    Fixes: 4c58fc4f ("searchd: Add deamon to gather search results")

 -- Guido Günther <agx@sigxcpu.org>  Fri, 15 Aug 2025 10:12:52 +0200

phosh (0.49~rc1) experimental; urgency=medium

  [ Arun Mani J ]
  * app-grid: Set max-width to entries.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/703
  * ci: Add `xvfb` package for `check-ui` job
  * tree: Bump `upower-glib` version
  * battery-info: Use asynchronous API of `upower`
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/290

  [ hustlerone ]
  * plugins: Fix compilation on NixOS.

  [ twlvnn kraftwerk ]
  * Update Bulgarian translation

  [ Guido Günther ]
  * mode-manager: Support embedded chassis type.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1242
  * plugins/media-players: Disable prefs plugin.
    There's no prefs atm so remove it from the desktop file as
    otherwise mobile settings doesn't set the gear icon insensitive.
  * ci: Update shared scripts to 7e4c544
  * tests: Use subdir_done.
    Avoids an indent level when using meson format
  * build: Format meson files.
    Format using `meson format -e -i -r` to make contributing
    easier with fewer review rounds.
  * ci: Check format of meson files`
    They're only validated when they change
  * data/portals: Use phrosh portal.
    This way we still fall back to gtk in cases where distros can't ship the
    new portal yet. We'll prefer phrosh over phosh once pfs and wallpaper moved
    over too so we then only use the phosh portal for settings.
  * wwan: Require cell broadcast support in ModemManager.
    It's in a release so no need to conditionalize
  * system-modal: Modernize property definition.
    Match coding style and fix some indent while at that.
  * cell-broadcast-prompt: Limit messages to reasonable size.
    Otherwise the dialog might drop off screen. Since we have
    a store the user can look up overly long messages there.
  * cell-broadcast-prompt: Close dialog on swipe.
    Fixes: b281cc5d3 ("cell-broadcast-prompt: New dialog for cell broadcast message")
  * cell-broadcast-prompt: No need to valign the button
  * cell-broadcast-prompt: Remove the superfluous box
  * cell-broadcast-prompt: Strip whitespace.
    Some messages (e.g. Vodafone test messages) have excessive
    whitespace at the end of the message, strip that.

  [ Zander Brown ]
  * searchd: Add deamon to gather search results
    org.gnome.ShellSearchProvider2.xml taken from gnome-shell as of
    9e5dfa22211677cf71791925a68688a3b3284c7e
    Co-authored-by: Gotam Gorabh <gautamy672@gmail.com>

  [ Evangelos Ribeiro Tzaras ]
  * mock-mm-nm: Execute with intended interpreter.
    Run through `env` so we pick up the correct interpreter from `$PATH`
    when e.g. using venv.

  [ Rudra Pratap Singh ]
  * upcoming-events: Extend API to get number of events for a list
  * upcoming-events: Add icons for expanding/shrinking event list
  * upcoming-events: Add new setting for skipping non-event days
  * upcoming-events: Add button to skip non-event days.
    This will allow users to include/exclude days
    without events.
  * upcoming-events: Show proper date if number of days exceeds 7

  [ Martin ]
  * Update Slovenian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Artur S0 ]
  * Update Russian translation

  [ Danial Behzadi ]
  * Update Persian translation

 -- Guido Günther <agx@sigxcpu.org>  Fri, 08 Aug 2025 19:48:42 +0200

phosh (0.48.0) experimental; urgency=medium

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Álvaro Burns ]
  * Update Brazilian Portuguese translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Artur S0 ]
  * Update Russian translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 30 Jun 2025 08:45:35 +0200

phosh (0.48~rc1) experimental; urgency=medium

  [ Guido Günther ]
  * auth: Drop priv.
    It's unclear why we added that in the first place.
  * auth: Use automatic cleanup
  * auth: Name authentication token properly.
    We had a mixture of `number` and `pin` although we allow for for non-PIN
    passwords since a long time.
    Also name the appdata_ptr properly so it is easier to follow how this is
    passed through to the callback.
  * auth: Copy auth token.
    Otherwise we're dependent on the life cycle of the GtkEntry that
    provides the data.
  * auth: Perform account validity checks.
    We should perform the account validity checks via pam_acct_mgmt too.
  * lockscreen: Don't leak lockscreen on error.
    This is unlikely to happen (it's not the same as auth failing) but let's
    better fix it.
  * media-player: Don't forget to init cancellable.
    Otherwise cancelling will have no effect and we might end up accessing
    free'd memory.
    Fixes 2ca148785 ("media-player: Use MPRIS manager")
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1234
  * media-player: Init fetch icon cancellable.
    Fixes f287f5deb ("media-player: Fetch cover art via http")
  * packaging: Add valac.
    Needed to build the vapi file
  * build: Allow to build vapi files
  * ci: Build vapi when building bindings lib
  * stylesheet: Use accent color for list box rows too.
    Fixes 317ef8e89 ("style-manager: Support accent colours")
  * lockscreen: Always queue a draw when transition ends.
    Otherwise we might not only see an outdated clock (which the
    current workaround adressed) but also outdated plugin state.
  * mpris-manager: Check for valid player sooner.
    This avoids printing debug messages for bus owners that don't
    implement the mpris interface.
  * mpris-manager: Track all players.
    TODO: drop players when gone
  * mpris-manager: Allow to fetch known players list model
  * media-player: Make it a derivable type.
    No functional change
  * default-media-player: New widget that will track the default mpris player.
    This widget will behave the same as media-player did: track the newest
    mpris proxy on the bus.
    In this commit we just add the empty class so we can move existing code
    over to this widget without changing functionality.
  * media-player: Move media player setting to public method.
    This will allow us to track arbitrary mpris DBus proxies
  * default-media-player: Move default player tracking here.
    Free the media player base class from tracking the default player.
    This allows us to use any player with that class.
  * shell: Make mpris manager accessible to plugins
  * media-players: New lockscreen plugin to track all mpris players.
    One often has multiple mpris capable players running (e.g. podcasts
    and music player). The lock screen plugins allows to switch between
    them without effort.
  * tests: Name unit test variable accordingly
  * wall-clock: No need to get `priv` twice
  * wall-clock: Avoid libgnome-desktop in public header.
    Since the API is not stable lets use gdesktop-enums instead
    as we only need the GDesktopClockFormat enum.
  * wall-clock: Add function to strip am/pm from clock strings
  * lockscreen: Use phosh_wall_clock_strip_am_pm
  * wall-clock: Use a regex match to get the stripped clock
    `AM` and `PM` can be localized strings so look for the number part
    when we have any whitespace in the clock format. Otherwise we assume
    24h clock.
    Hours and minutes can be separated by unicode characters so we can't
    just use `:` as separator.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1237
  * portals: Disable currently unimplemented ones.
    Otherwise we'll spawn other, possibly non-working implementations.
  * ci: Drop gcovr workaround.
    This has long been fixed in Debian.
    This reverts commit 1edb73a65e854f8f89d5d6802bcd3cf45c04aed5.
  * ci: Configure locales in images rather than during the ci run.
    This cuts down on ci run times
  * ci: Use updated images
  * ci: Require `Signed-off-by:`
    We do this in the other projects since some time
  * tests: Instantiate metainfo cache once.
    Otherwise it's not getting destroyed and might do funky things
    on shutdown. (Helps: #1240)
  * cell-broadcast: Enable by default.
    MM bits are in released versions and there's support in mobile-settings
    to configure channels so we can flip it on.

  [ fossdd ]
  * data: Update list of adaptive apps.
    Loupe and Showtime already merged the patches to list their form
    factors, while the MR in gnome-calendar is still open.
  * data: Fix typo in override gschema

  [ Arun Mani J ]
  * activity: Avoid using `<packing>`
  * app-grid-base-button: Avoid using `<packing>`
  * quick-setting: Avoid using `<packing>`
  * app-grid: Avoid using `<packing>`
  * emergency-menu: Avoid using `<packing>`
  * home: Avoid using `<packing>`
  * media-player: Avoid using `<packing>`
  * gtk-mount-prompt: Avoid using `<packing>`
  * network-auth-prompt: Avoid using `<packing>`
  * notification-frame: Avoid using `<packing>`
  * polkit-auth-prompt: Avoid using `<packing>`
  * system-modal-dialog: Avoid using `<packing>`
  * check-deprecated-ui-props: Search from source root.
    When run by `meson test`, the current working directory is build root,
    so some UI files (like of plugins) are not searched.
  * check-deprecated-ui-props: Add check for deprecated packing attributes
  * ticket-box: Use `{h,v}expand` instead of `expand`
  * quick-settings-box: Support RTL direction.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1154
  * ci: Allow translation files of GTK 3 in screenshot container
  * ci: Move `SID_PKGS` to `debian.Dockerfile`
  * ci: Update to v0.0.2025-06-06 image

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Martin ]
  * Update Slovenian translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Daniel Rusek ]
  * Update Czech translation

 -- Guido Günther <agx@sigxcpu.org>  Sat, 21 Jun 2025 17:46:50 +0200

phosh (0.47.0) experimental; urgency=medium

  [ Antonio Marin ]
  * Update Romanian translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 18 May 2025 09:35:38 +0200

phosh (0.47~rc1) experimental; urgency=medium

  [ Guido Günther ]
  * abi: Remove symbols duplicated between plugins and shared library.
    Users of the shared lib and plugins should be able to access the quick
    setting and its status pages. Since the shared lib exports the plugins
    symbols there's no point in having different subsets listed in both.
  * docs: Mention the symbols files. Give a hint where to add new symbols.
  * splash: Use larger icon again
    https://gitlab.gnome.org/GNOME/adwaita-icon-theme/-/commit/a1c8a0f61e27e1bcda03412dec772b7a1ed5a795
    removed the spinner icon, hence GTK3 added a one in
    https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8354
    but picks the 16x16 one which is a bit too small.
    The 16x16 icon is fine for the other places we use a spinner, like
    status pages.
    This can go away with the switch to AdwSpinner.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1222
  * build: Depend on libfeedback with sound file support
  * notify-feedback: Handle cellbroadcast events
  * app-grid: Fix missing icon
    emblem-ok-symbolic got remove in the 48 adwaita icon theme:
    See https://gitlab.gnome.org/GNOME/adwaita-icon-theme/-/commit/a00466f12bd5419d6f22c1097a16fd670431c9d4
  * data: Update list of adaptive apps.
    TextEditor announces this via the desktop file now while calendar
    doesn't
  * notify-feedback: Fix inverted logic for cell broadcasts.
    Also guard against `NULL` category
    Fixes af35ea749 ("notify-feedback: Handle cellbroadcast events")
  * notify-feedback: Check basic events.
    The logic is going more complex and we had subtle errors so lets
    add some checks.
  * notify-feedback: Use "notification-missed-generic"
    This is available since feedbackd 0.6.0 and we require 0.7.0 nowadays.
  * notify-feedback: Check for NULL upfront.
    Allows us to use `g_str_equal`.
  * tests: Add options to get core dump on asserts under ASAN.
    Without these ASAN just aborts without a coredump. As it is not useful
    in CI just leave as a comment for now.
  * app-list-model: Fix type of debounce it
    g_timeout_add_* return `guint` not `gulong`.
  * app-list-model: Disconnect debounce on finalize.
    Otherwise we might have running timers when the application quits
  * app-list-model: Expand test.
    Assert that we finalize properly and also check the state
    when app infos got loaded.
  * app-list-model: Track StartupWMClass as well.
    Needed to betterb match toplevels to app-ids
  * util: Simplify return value
  * util: Match on StartupWMClass as well.
    This will allow more cases to work without guessing and we can drop
    some heuristics
  * util: Drop applications that have a proper StartupWMClass.
    No need to track them manually anymore, they all use `StartupWMClass`.
    This makes the expected case the first one so things get a little
    faster too.
  * util: Drop match by last component.
    These apps should have a proper StartupWMClass.
  * lockscreen: Check for info widgets upfront.
    This ensures we have a small clock e.g. when locking the screen with an
    ongoing call. This will also be needed with the following commits as the
    media widget will be visible initially and hence there won't be a
    changed signal.
    We hence move from counting invocations to checking the individual
    widgets.
  * media-player: Don't focus on click.
    We want to avoid the cursor frame when touching the widget as it has no
    use.
  * lockscreen: Set initial focus widget.
    Otherwise we end up with the focus on the first focusable widget which
    is the media player's detail button and that doesn't look nice.
    By setting it to `submit` we ensure that a signal tab gets it to the
    first info widget.
  * mpris-manager: Manager object that tracks MPRIS players.
    This will be used by the media-player widget so we don't have multiple
    places tracking the DBus name owner changes.
  * media-player: Use MPRIS manager.
    This avoids the media widget appearing on the lock screen slightly after
    lock as we don't have to wait for the DBus calls anymore.
  * monitor: Don't track make and model
    wlroots will stop sending these in
      https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5045
    and we don't use them anyway.
  * treewide: Add missing G_PARAM_STATIC_STRINGS.
    Avoids a bunch of allocations on startup.
  * status-pages: Drop signal_emit_by_name argument.
    The `done` signal does not have any parameters. For consistency with
    other `g_signal_emit_by_name` in our codebase we pass `NULL` as the
    return value location (although it could be omitted).
  * notify-manager: Move show-banners to header.
    We want to use it in a status page
  * data: Add chat icons from GNOME's icon library
  * util: Add helper to open mobile settings panels.
    We add a separate function as the parameters are slightly different.
  * settings: Add action to open mobile settings.
    We add a separate action as that makes it more obvious what we're
    opening.
  * feedback-status-page: Add new status page for feedback settings.
    This will allow to enable/disable do-not-disturb mode
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1183
  * quick-settings: Add feedback status page
  * feedback-status-page: Keep feedback in sync with dnd.
    We want to switch to silent when dnd is enabled and back to the old
    profile when disabled.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1095
  * polkit-auth-prompt: Don't set icon pass by polkit.
    Applications usually pass in the app name which we don't have an icon
    for so we usually show the missing icon which is not great.
    Ideally we'd show the user avatar there along with more user details.
  * notifcation-banner: Unref animation on dispose.
    This ensures we run it on gtk_widget_destroy already.
  * shell: Clean up banner correctly.
    The banner is a toplevel so we want to use gtk_widget_destroy on it. We
    connect to the `destroy` signal so in case the layer surface invokes
    `gtk_widget_destroy` we don't do it twice.
    This avoids a sporadic segfault in the tests when the banner was still
    being animated and also avoids a weak pointer where it is not needed.
    Fixes 5d4f590b9 ("notification-banner: Add slide-up animation to banner")
    (which wasn't the cause but exposed the bug).
    Fixes c5556891f ("notifications: maintain a message list")
  * osd-window: Don't let it take all the vertical space.
    Similar in spirit to
      bd8c8c13c ("notifiction-banner: Use valign center")
    so we don't cover the space below the OSD with a transparent window
    swallowing all input.
  * osd-window: Ensure we propagate the width.
    As we don't want to allocate the full width anchor to top and set the
    width on map.
  * wifi-manager: Slightly improve debug messages.
    Use Wi-Fi spelling consistently, make messages a bit more expressive
  * wifi-network-row: Don't set active indicator visible.
    We sync it with a property in `init` so save that extra setup step.
  * wifi-network: Don't unconditionally overwrite active access point.
    We mustn't overwrite the active access point with an inactive one.
    This fixes the missing tick mark in the UI when a network has more than
    one access point.
    The network is still marked as inactive via `reset_active_wifi_network`
    -> `phosh_wifi_network_update_active`.
    Fixes 7b83747fc ("wifi-network: Create PhoshWifiNetwork class")
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1180
  * mobile-data-quick-setting: Make sure the modem is unlocked.
    If the modem's SIM is still locked there's no point in allowing to
    toggle mobile data.
    Fixes 20ac30db5 ("plugins: Add mobile data toggle")
  * app-list-model: Use app_info
    `l->data` is harder to parse and we assigned to `app_info` just above
    Fixup indent while at that.
  * app-list-model: Ignore folders for startup wm class tracking.
    Folder don't have a wm class and otherwise raise a critical
    Fixes 5b9a575c4 ("app-list-model: Track StartupWMClass as well")

  [ fossdd ]
  * calendar-server: Use a non-declared variable name for timezone
  * call-notification: Cast PhoshCallState explicitly to CuiCallState
  * testlib: Declare on_phoc_startup_timeout as noreturn
  * system-prompt: Avoid declaration of unused variable
  * ci: Add debian-trixie-clang CI.
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1218

  [ Baxrom Raxmatov ]
  * Add Uzbek (Latin) translation

  [ Arun Mani J ]
  * status-icon: Add pixel-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it.
    Deprecates `icon-size`.
  * tree: Use pixel-size in status-icon
    `icon-size` is deprecated in status-icon.
  * quick-setting: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it. For the functions that need an icon-size just for namesake,
    let's use `-1` so we can ensure that we have replaced its functionality
    with pixel-size.
  * quick-settings-box-standalone: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it.
  * app-grid-button: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it. For the functions that need an icon-size just for namesake,
    let's use `-1` so we can ensure that we have replaced its functionality
    with pixel-size.
  * app-grid-folder-button: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it. For the functions that need an icon-size just for namesake,
    let's use `-1` so we can ensure that we have replaced its functionality
    with pixel-size.
  * app-grid: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it. For the functions that need an icon-size just for namesake,
    let's use `-1` so we can ensure that we have replaced its functionality
    with pixel-size.
  * activity: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it.
  * lockscreen: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it.
  * app-auth-prompt: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it.
  * gtk-mount-prompt: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it. For the functions that need an icon-size just for namesake,
    let's use `-1` so we can ensure that we have replaced its functionality
    with pixel-size.
  * polkit-auth-prompt: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it. For the functions that need an icon-size just for namesake,
    let's use `-1` so we can ensure that we have replaced its functionality
    with pixel-size.
  * ticket-box: Use pixel-size instead of icon-size
    `GtkIconSize` values are semantic in GTK 4 and no longer contain the
    various values we have in GTK 3. If we need to enforce a specific
    pixel-size, we need to use the `pixel-size` property of image. So let's
    move to it.
  * app-grid: Set pixel-size for images.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1224
    Fixes: 2ed70a190 ("app-grid: Use pixel-size instead of icon-size")
  * subprojects: Update libfeedback revision.
    Fixes: 5bed6427dde4f3c8ca0cf3a4b8f5e2a7ff34b861
  * quick-setting: Use checked instead of active state
    `:checked` is the proper state to describe the "activeness". `:active`
    denotes whether the button is being activated by user, that is, if it is
    being pressed down.
  * audio-device-row: Use `margin-*` instead of `margin`
  * media-player: Use `margin-*` instead of `margin`
  * osd-window: Use `margin-*` instead of `margin`
  * power-menu: Use `margin-*` instead of `margin`
  * top-panel: Use `margin-*` instead of `margin`
  * wifi-status-page: Use `margin-*` instead of `margin`
  * calendar: Use `margin-*` instead of `margin`
    Also add the XML header for easier file identification.
  * emergency-info: Use `margin-*` instead of `margin`
  * launcher-box: Use `margin-*` instead of `margin`
  * ticket-box: Use `margin-*` instead of `margin`
  * upcoming-events: Use `margin-*` instead of `margin`
  * notify-blocks: Use `margin-*` instead of `margin`
  * check-deprecated-ui-props: Add `margin` to list
  * check-deprecated-ui-props: Extend to all UI files
  * app-grid: Use `{h,v}expand` instead of `expand`
  * emergency-menu: Use `{h,v}expand` instead of `expand`
  * lockscreen: Use `{h,v}expand` instead of `expand`
  * notification-content: Use `{h,v}expand` instead of `expand`
  * polkit-auth-prompt: Use `{h,v}expand` instead of `expand`
  * top-panel: Use `{h,v}expand` instead of `expand`
  * check-deprecated-ui-props: Add `expand` to list

  [ Antonio Marin ]
  * Update Romanian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Artur S0 ]
  * Update Russian translation

  [ Álvaro Burns ]
  * Update Brazilian Portuguese translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Martin ]
  * Update Slovenian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ twlvnn kraftwerk ]
  * Update Bulgarian translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Andi Chandler ]
  * Update British English translation

  [ Anders Jonsson ]
  * Update Swedish translation

 -- Guido Günther <agx@sigxcpu.org>  Thu, 08 May 2025 09:09:31 +0200

phosh (0.46.0) experimental; urgency=medium

  [ Sam Day ]
  * build: Remove nonexistent StatusPagePlaceholder symbol exports.
    These were introduces in a recent commit, but the actual symbols don't
    exist.
    This was identified by @fossdd when building 0.46~rc1 downstream in
    Alpine, where clang is being used. Seems that lld is more strict about
    this than gcc is.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1217
    Fixes: f5ca0cf4 ("status-page-placeholder: Propertify child")

  [ Guido Günther ]
  * build: Let plugins depend on generated enum headers.
    Plugins (like dark-mode) use it.
  * data: Only apply override to Phosh.
    We don't want to override the default for other environments.
    Fixes 24a255401 ("data: Disable lockscreen background by default")
  * screenshot-manager: Exit early when saving screenshot fails.
    We shouldn't try to update recent files or save a thumbnail.
    Fixes 0a2228f85 ("screenshot-manager: Create thumbnails of screenshots")
  * screenshot-manager: Move clipboard copying to separate function.
    Pure code move. We only change the g_steal_pointer() of the pixbuf to a
    g_object_ref() to keep a reference.
  * screenshot-manager: Chain copy to clipboard past saving the image.
    The code assumed that saving was faster than the clipboard copy opaque
    timer. If things are I/O is slow the frames would be freed before the
    on_save_to_pixbuf_read would complete and we'd assert.
    To avoid this save to disk first and then to clipboard for the case
    where both is wanted (e.g. power button long press).
    Fixes ca42c89b2 ("screenshot-manager: Allow to save internal screenshots")
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1220

  [ Sicelo A. Mhlongo ]
  * rotation-manager: Do not delay marking accelerometer as released.
    As soon as a request to release the claim on accelerometer is dispatched, mark
    it as released in Phosh, even if a response from iio-sensor-proxy may only be
    received much later.
    This avoids the state inside Phosh getting out of sync with iio-sensor-proxy
    after a suspend-resume cycle, for which the ReleaseAccelerometer response may
    only be received after the system has resumed.
    Closes #1214

  [ Bruce Cowan ]
  * Update British English translation

  [ Sebastian Krzyszkowiak ]
  * stylesheet: Improve legibility of app grid and top bar.
    Add subtle shadows when translucent.
  * stylesheet: Improve legibility of the lockscreen on arbitrary backgrounds
  * stylesheet: Improve legibility of call view on arbitrary backgrounds

  [ Vincent Chatelain ]
  * Update French translation

  [ Vasil Pupkin ]
  * Update Belarusian translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 31 Mar 2025 09:19:21 +0200

phosh (0.46~rc1) experimental; urgency=medium

  [ Guido Günther ]
  * media-player: Bind playable property to player's can-play.
    That way we also show the player when e.g. media play is stopped (rather
    than paused). Let's see if players implement that property properly.
  * overview: Insert app to the right if no parent is found.
    We didn't mean to change the position of new apps, just that of
    children.
    Fixes 6b0a4d539 ("overview: Insert new children right of their parents")
  * media-player: Fetch cover art via http.
    Do that using an async method to not block the UI should the download
    hang.
    We avoided that so far but e.g. shortwave provides http URLs to radio
    stations so lets do it and rather switch to glycene at some point.
  * build: Swap old and new in abi compliance check.
    The symbols we have checked into version control are the ones from the
    old version (at least when you're not a tachyon).
  * package: Update from Debian. This makes sure our packages don't file
    conflict with those in downstreams and also takes the new library
    versioning into account.
  * packaging: Don't build gir package when not building a lib
  * home: Reset overview when folded.
    Resetting the overview's app grid when unfolding introduces flicker when
    clearing the search (when a search term is present). This is very
    visible when there are running apps.
    Avoid the flicker by clearing the search when the app grid isn't
    visible.
    As the former `reset` now mostly refreshes the thumbnails we rename it
    accordingly.
  * top-panel: Set padding via css.
    So far we set the margins on the top panel itself which was fine as long
    as those were symmetric. If we set different margins this would shift
    the clock out of center but setting the margins on the network and
    indicator boxes doesn't work either as the case where we move the clock
    off center needs the margins applied to the clock.`
    So instead of worrying about all those cases use `:first-child` and
    `last-child` css which handles this for us (at the expense of style
    calculations on layout changes).
    This also has the advantage that we don't need to worry about start and
    end in RTL locales.
  * top-panel: Introduce padding towards cutouts.
    If there's a cutout in the indicator areas we use a smaller margin than
    towards the screen edge.
  * layout-manager: Make rectangles const.
    These are the references that should stay the constant.
  * layout-manager: Round float values.
    We want the cutouts bounding box to be at least as large as the physical
    notch.
  * layout-manager: Handle cutouts in the indicator areas.
    Shift elements towards the center unless that would result in massive
    movement.
    For smaller cutouts within the indicator boxes we'll insert stub
    elements at some point in the future.
  * data: Select less noisy default background
  * data: Select accent color matching the back ground
  * background-manager: Remove background when it goes away.
    When we unplug a monitor the widget goes away due to the layer surface
    being destroyed, make sure we remove it from the list of known
    backgrounds as we otherwise might access stale data.
    Instead of dropping on_monitor_removed completely we keep it as
    consistency check.
    That way it doesn't matter if the widget gets destroyed before the
    output or the other way around.
  * treewide: Systemd unit is for development purposes only.
    Clarify that the systemd unit shouldn't be used in production.
  * issue-template: Mention display manager.
    Update some other parts while at that
  * ci: No need to fetch phoc from sid
  * build: Specify the public headers. This ensures abi-dumper doesn't
    care about non public structs. It needs universal-ctags for that.
  * build: Regenrate the ABI dump
  * docs: Add phosh.gsettings manpage.
    We'll document used gsettings here. This makes it easier to contribute
    to than the wiki as everyone can make pull requests and also ensures the
    shipped documentation matches the running shell.
  * feedback-manager: Add emission hook for clicked and row-activated signals.
    This ensures consistent feedback for all "press" related events.
  * treewide: Remove most "button-pressed" emissions.
    Remove those that were triggered by button presses anyway.
  * packaging: Install new manpage.
    This fixes the nightly build. We run with nodoc in CI so we didn't
    notice.
  * style: Close block.
    GTK4's CSS parser catches this
  * wifi-manager: Track whether a WiFi scan is going on.
    Consumers can track the `scanning` property
  * wifi-status-page: Show spinner when a network scan is ongoing.
    This provides better feedback to the user about the ongoing
    operation.
    We use a callback rather than property binding as we'd need transform
    functions for the stack page and related code in this class uses
    callbacks too.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1138
  * wifi-status-page: Reindent UI file.
    No functional change
  * tests/integration: Close stdin and stdout.
    This prevents to prevent the buffers to being filled and phoc entering a
    blocking state.
    I've been able to trigger this locally and could see phoc hanging on
    writing to stdout and thus `wlr-randr` blocking as can be seen in the
    failed tests:
    https://gitlab.gnome.org/World/Phosh/phosh/-/jobs/4884009
  * tests: Make unit tests depend on schema.
    This allows them to run without invoking any extra targets.
    We rename the target as the plugins use `compile_schemas` to locate
    `glib-compile-schemas`.
  * ci: Drop extra step to build schema.
    We fixed the dependencies in the previous commit
    Fixes 3f328c7d6 ("gitlab-ci: Run unit tests under ASAN too")
  * home: Fix indent
  * lockscreen-manager: Modernize indent and property definitions
  * lockscreen-manager: Adjust callback names according to style.
    Also remove unneeded casts.
  * background: Avoid paint when not rendering pixbuf.
    No need to do so.
  * background-cache: Allow to remove cached backgrounds selectively
  * background-manager: Remove backgrounds selectively.
    This will allow us to cache different backgrounds (e.g. overview
    and lockscreen)
  * background-cache: Make loading an async function.
    Make it an async function instead of a signal so it is clear which
    background got loaded.
  * background: Move scale-to-min pixbuf scaling to utils.
    This allows it to be used from other classes.
  * lockscreen: Allow to set background image.
    Make lockscreen transparent and add a layer surface carrying the
    background beneath it. This ensures GTK won't be bothered at all when UI
    elements move over the background.
    Images are always loaded using cover style to make sure the whole
    background is covered.
    We only load images on the lockscreen, ignoring shields.
  * lockscreen-manager: Handle picture-uri.
    Setting a background image will triggering an image load using the
    background-cache. If successful we set the image on the primary
    lockscreen.
    Background can be set via
        gsettings set org.gnome.desktop.screensaver picture-uri 'file:///file/to/background.jpg'
  * shell: Move updating top panel transparency to its own function.
    This will become more complex
  * shell: Make top bar transparent when locked.
    We need to check if the top bar exists as this can be invoked early when
    phosh is started locked (`-L`).
  * docs: Document new settings key
  * data: Add default lockscreen background
  * data: Disable lockscreen background by default.
    This ensures we don't pick up any accidental configuration users might
    have.
  * top-panel: Use icon's pixel size. Actually use the icon's pixel
    size. We accidentally used the enum value.
    Fixes 79808a34b ("top-panel: Provide default icon size and min padding")
  * layout-manager: Assume icons don't fill the full height.
    Status icons usually don't fill the full box so assuem we have 20% of
    padding.

  [ Arun Mani J ]
  * event-list: Simplify using `gtk-builder-tool`
  * upcoming-event: Simplify using `gtk-builder-tool`
  * emergency-info-prefs: Simplify using `gtk4-builder-tool`
  * emergency-info-prefs: Simplify derived and `Adw` widgets
  * emergency-info: Simplify using `gtk-builder-tool`
  * emergency-info: Simplify derived and `Hdy` widgets
  * dark-mode-quick-setting: Simplify derived and `Hdy` widgets
  * home: Simplify using `gtk-builder-tool`
  * lockscreen: Simplify derived and `Hdy` widgets
  * notification-frame: Simplify derived and `Hdy` widgets
  * polkit-auth-prompt: Simplify derived and `Hdy` widgets
  * notification-frame: Simplify using `gtk-builder-tool`
  * ci: Check UI files for simplification
  * gvc-channel-bar: Do not hijack scroll event
    `GtkScale` handles it natively, so no need for us to override.
  * gvc-channel-bar: Include GTK headers.
    Removes linter warnings.
  * gvc-channel-bar: Simplify
  * timestamp-label: Wrap under `GtkBin`
    `GtkLabel` is a final class in GTK 4, so let's wrap it under `GtkBin`
    which will become `AdwBin` or something similar in GTK 4.
  * timestamp-label: Uncrustify
  * revealer: Propertify child
  * revealer: Wrap under `GtkBin`
    `GtkRevealer` is a final class in GTK 4, so wrap it under a bin.
  * revealer: Move UI logic to UI file
  * revealer: Simplify and reformat
  * top-panel: Drop assigning default values
  * status-page: Allow NULL for header and footer
  * status-page: Propertify child.
    Makes code more readable and ready for GTK 4 as we expose methods to
    directly add and remove the child (like in GTK 4 style of "child as
    property"). At the same time, simplify destroy implementation by
    worrying only about the widgets we get and set, the remaining will be
    cleaned by GTK as they are owned by the template API.
  * status-page-placeholder: Propertify child.
    Makes code more readable and ready for GTK 4 as we expose methods to
    directly add and remove the child (like in GTK 4 style of "child as
    property"). At the same time, simplify destroy implementation by
    worrying only about the widgets we get and set, the remaining will be
    cleaned by GTK as they are owned by the template API.
  * status-page-placeholder: Simplify.
    Reorder the virtual method implementations like elsewhere.
  * quick-setting: Propertify child.
    Makes code more readable and ready for GTK 4 as we expose methods to
    directly add and remove the child (like in GTK 4 style of "child as property").
  * quick-setting: Cleanup and reformat.
    Use most specific type where sensible.
  * quick-settings-box: Expose methods to add and remove.
    Makes code more readable and ready for GTK 4 as we expose methods to
    directly add and remove the children instead of relying on
    `GtkContainer` APIs.
  * quick-settings-box: Cleanup and reformat.
    Use most specific type where sensible.
  * app-grid-base-button: Propertify child.
    Makes code more readable and ready for GTK 4 as we expose methods to
    directly add and remove the child (like in GTK 4 style of "child as property").
  * app-grid-base-button: Uncrustify
  * hacking: Add notes about derivable parent widgets
  * status-icon: Move UI logic to UI file
  * status-icon: Uncrustify
  * revealer: Check for child type
  * revealer: Use setter function in destroy
  * status-icon: NULLify `extra_widget` in destroy
  * app-grid-button: Use gesture to handle right click.
    Also remove `popup_menu` virtual method implementation as it is not
    available in GTK 4 and handled by gestures already.
  * app-grid-button: Move long-press gesture to UI file
  * app-grid-button: Prefix action name with group.
    The equivalent method in GTK 4 to bind a model to a popover takes no
    namespace parameter, so let's make the
    current code ready for it.
  * app-grid-button: Cleanup.
    Rename variables and methods to match the style guide.
  * app-grid-button: Uncrustify
  * app-grid: Force the box to align start vertically.
    Fixes the case where the box gets more-than-required allocation and so decides to
    distribute it among the children, causing odd spacing among them.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1208
  * activity: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * ambient: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * app-auth-prompt: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * app-grid: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * app-grid-standalone: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * background: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * background-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * cell-broadcast-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * drag-surface: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * emergency-calls-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * emergency-menu: Use `gtk_widget_set_visible`
    `gtk_widget_show_all` is unavailable in GTK 4, so let us use the
    proper setter method.
  * end-session-dialog: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * fading-label: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * gnome-shell-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * gtk-mount-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * gtk-mount-prompt-prompt: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * keypad: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * layer-surface: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * lockshield: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * lockscreen-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * lockscreen: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * media-player: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * mount-operation: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * network-auth-prompt: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * notification-content: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * osd-window: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * overview: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * polkit-auth-prompt: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * portal-access-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * power-menu-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * proximity: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * run-command-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * screenshot-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * session-manager: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * settings: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * shell: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * system-modal: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * system-modal-dialog: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * top-panel: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * widget-box: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * wwan-info: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * emergency-info: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * custom-quick-settings-standalone: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * notify-server-standalone: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * widget-box-standalone: Use `gtk_widget_set_visible`
    `gtk_widget_{show, hide}` are deprecated in GTK 4, so let us use the
    proper setter method.
  * quick-settings-box: Add method to hide status.
    Can be used to hide status externally, like by settings.
  * quick-settings: Add method to hide status.
    Can be used to hide status externally, like by settings.
  * settings: Add method to hide details.
    Hides quick-settings box status-page and audio-settings details.
  * top-panel: Hide settings' details on fold.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1136
  * settings: Use `hide_details` on panel launch.
    Hides quick-settings box status in-addition to audio-settings details.

  [ Evangelos Ribeiro Tzaras ]
  * overview: Only look up carousel position if parent is found.
    This saves a few cpu cycles.

  [ Sam Day ]
  * status-icon: Remove obsolete show_always getter+setter.
    This property was dropped back in 2020. These names managed to sneak
    their way into the symbol export map, but since the actual symbols don't
    exist this doesn't break ABI compatibility (or at least,
    abi-compliance-checker did not complain)
    Fixes: 1f9f31db ("status-icon: Drop show-always")
  * ci: Always publish ABI check artifacts.
    If there's an ABI breakage the pipeline will fail (which is good). This
    change ensures that when this happens the report containing detailed
    info is made available.

  [ Bardia Moshiri ]
  * util: Move sys/mman and fnctl out of MEMFD ifdef
    these are needed if in meson we set have_memfd_create to false.

  [ Gotam Gorabh ]
  * notification: Don't focus the notification-frame.
    Don't focus the notification-frame as it overlap the
    action buttons. However notification body still can
    focus without shadow.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1152
  * notification-frame: Add slide-down animation.
    Add slide-down animation to rest of the notifications after a new
    notification appears.
    We skip the animation when it currently isn't visible anyway.

  [ Sebastian Krzyszkowiak ]
  * activity: Fix thumbnail scaling.
    PhoshActivity is unaware of GtkButton's padding. Move it
    to GtkDrawingArea, so the thumbnail size can be calculated
    with correct aspect ratio.

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Andika Triwidada ]
  * Update Indonesian translation

 -- Guido Günther <agx@sigxcpu.org>  Fri, 21 Mar 2025 18:19:23 +0100

phosh (0.45.0) experimental; urgency=medium

  [ Guido Günther ]
  * build-symbols: Robustify. Exit on errors and add end of here file (EOF).
  * build: Simplify path to inputs a bit.
    This is easier to read but also make sure we don't get the
    directories added twice when built as a subproject.
  * phosh-session: Make phoc startup verbose. This gives us some important
    information like used renderer, backend, etc. We require phoc 0.45.0 for
    that.

  [ Sam Day ]
  * build: Bump minimum Meson version to 1.2.0.
    We need this to set override_options on both_libraries (to enable DWARF
    debug symbols when performing ABI compliance checks)
  * build: Add ABI compliance check.
    When the abi-check option is enabled, abi-dumper is run on the
    shared library, and then abi-compliance-checker compares this result to
    the baseline in src/libphosh-abi.dump
  * build: Check in initial libphosh ABI dump.
    We're starting our baseline from 0.45.beta1
  * ci: Add abi-compliance-checker job.
    This job makes use of the new abi-check build option, and saves an
    artifact with the new ABI dump and the HTML report that was generated
    comparing it to the currently checked in baseline.
    It will run automatically on tags and changes to NEWS or the libphosh
    symbol list. It can also be run manually.
    See: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1188

  [ Rafael Fontenelle ]
  * Update Brazilian Portuguese translation

  [ Anders Jonsson ]
  * Update Swedish translation

 -- Guido Günther <agx@sigxcpu.org>  Sat, 15 Feb 2025 12:00:47 +0100

phosh (0.45~rc1) experimental; urgency=medium

  [ Arun Mani J ]
  * Simplify more UI files

  [ Guido Günther ]
  * phosh-session: Run through systemd-cat when available.
    This helps to get proper debug output out of phoc under display manager
    using greetd (like phog and phrog).
  * notification: Add sound-file property. Needed to play custom sounds on
    notifications
  * notify-feedback: Pass custom sound file if present.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1184
  * notification-manager: Add and handle sound capability.
    Handle `suppress-sound` by lowering the feedback level to quiet and set
    `sound-file` if present in the notification.
  * ci: Pull libfeedback from Debian unstable
  * build: Generate dynamic list. This will be useful when we generate a
    symbols file too
  * build: Build symbols file. Use the information from our dyn list to create
    a symbols file for the shared library.
  * ci: Use newer imagemagick
  * ci: Update images to v0.0.2025-02-07

  [ Sam Day ]
  * build: Manage libphosh_api_version independently from project version.
    Since we're aiming to keep the libphosh API stable, the libversion
    variable is renamed to libphosh_api_version, and its value is managed
    manually. It will only be incremented when the API changes.
    See: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1188
  * lockscreen-manager: Drop unused get/set timeout prototypes.
    These functions were dropped back in 2020 by 084d406c
  * layersurface: Add vtable padding to class.
    This type is exported by libphosh, make sure we can evolve the vtable
    later if needed.
  * layersurface: Split out private header.
    We just need the type available to API consumers, let's not make
    anything else public for now.
  * build: Remove wl protos from public API altogether.
    This was introduced recently in 68bf9792, but as it turns out, we don't
    need to leak the layer-shell-unstable wl proto header into the public
    API after all. This is because the previous commit reduced the exports
    of PhoshLayerSurface to just its type information.
  * build: Introduce libphosh symbol list.
    This list specifies every symbol that is defined in libphosh.h. It will
    be included in the libphosh symbol map in the following commit.
  * build: Combine libphosh+plugin symbol into symbol map
    libphosh.so needs to export both the public API symbols and the extra
    symbols needed by plugins (as libphosh consumers might instantiate a
    Shell that tries to load the default in-tree plugins).
  * build: Build libphosh library with symbol map.
    This significantly reduces the number of global symbols exported from
    libphosh.so from ~2000 to ~150.
  * ci: Install abi-compliance-checker in Debian image.
    A subsequent commit will introduce a CI job that uses this tool to
    generate a report on the changes to API/ABI compatibility for the
    libphosh shared library (and later, the phosh executable too).
    It introduces about a half-dozen transitive dependencies and ~8mb
    additional installed size. This seems acceptable and preferable to
    introducing a whole additional sub-image.
  * ci: Fix double line continuation token in debian.Dockerfile.
    Podman seems okay with this, but it makes Docker upset.

  [ Artur S0 ]
  * Update Russian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

 -- Guido Günther <agx@sigxcpu.org>  Fri, 07 Feb 2025 19:07:14 +0100

phosh (0.45~beta1) experimental; urgency=medium

  [ Guido Günther ]
  * fake-clock: Make WallClockMock available in regular shell
  * main: Allow to use fake clock.
    Allow to use the fake clock in the regular shell. This eases making
    demos and screenshots and it doesn't add much code.
  * docs: Document PHOSH_FAKE_CLOCK
  * screenshot-manager: Add cancellable.
    Always good to cancel async operations on shutdown
  * screenshot-manager: Separate hours, minutes and seconds by ':'
    Rather than using '-' for date and time, separate the time by ':' to
    make it easier to identify.
  * screenshot-manager: Create thumbnails of screenshots.
    Screenshots are used a lot on mobile so make sure we generate thumbnails
    for the cases where the e.g. uploading application doesn't.
    We already have all the data so write out a thumbnail per
    https://specifications.freedesktop.org/thumbnail-spec/0.8.0/
  * wwan-manager: Enable and disable autoconnect.
    When we disable a WWan connection we should also disable autoconnect as
    otherwise the connection comes back up after resume or reboot.
    Hence we need to reenable autoconnect when the connection is activated
    again.
    Closes: https://gitlab.gnome.org/guidog/meta-phosh/-/issues/16
  * wwan-mm: Use swapped signal. Our handler wants `self` first
    Fixes 51da91508 ("wwan-mm: Switch to MM objects")
  * ci: No need to fetch phoc from sid. The one in trixie is recent enough now
  * gitignore: Ignore pycache files
  * home: Use g_timeout_add_once() Simpler API
  * home: Queue draw instead of committing the surface.
    We don't know if GTK already attached a matching buffer and attaching an
    incorrectly sized one can lead to the compositor terminating the
    connection so let GTK decide when to commit.
  * top-panel: Queue draw instead of committing the surface.
    We don't know if GTK already attached a matching buffer and attaching an
    incorrectly sized one can lead to the compositor terminating the
    connection so let GTK decide when to commit.
  * packaging: Add pytest. Useful to run the tests
  * packaging: Require newer phoc. This ensures we have a recent enough
    one in the tests
  * packaging: Depend on wlr-randr. We use it in the tests
  * tests: Add simple test to check mode changes.
    We hade some crashes in that area so make that testable in CI.
    This can also be extended to check the binaries on the installed system
    at some point thus making it easier for distros to validate their
    builds.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1171
  * ci: Run integration tests
  * ci: Drop phosh startup tests.
    With the pytests we spawn a shell too. It served us well up to now.
  * layersurface: Drop protocol version check.
    We require recent enough phoc anyway.
  * treewide: Assume phoc supports alpha layer surfaces.
    This is supported by phoc since May 2023
  * layersurface: Drop now unused has_alpha()
  * layersurface: Simplify map/unmap
    map()'s and unmap()'s are impls for virtual methods so
    we can't end up with an incorrectly casted type (as e.g.
    in signal handlers). This is a left over from:
    Fixes 953894a2b ("layersurface: Use class methods instead of signals for map and realize")
  * layersurface: Allow to set alpha before the surface is mapped.
    Catch up with values set prior to mapping the surface on map.
    So far this resulted in errors but allowing it makes things more
    flexible as we don't need to bother when the surface gets mapped.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/940
  * layersurface: Allow to set stacking before the surface is mapped.
    Catch up with values set prior to mapping the surface on map.
    So far this resulted in errors but allowing it makes things more
    flexible as we don't need to bother when the surface gets mapped.
    We take a weak ref on the target surface so we can notice when it goes
    away. Otherwise we would try to bind a non existent target surface when
    the target surface goes away before the surface itself gets ever mapped.
  * home: Bind background visibility.
    Instead of always showing it, bind it to the visibility of home.
    This ensures they stay in sync.
    Since `visible` is false in the constructor this is a slight behavior
    change as the background will now become visible a bit later.
  * top-panel: Bind background visibility.
    Instead of always showing it, bind it to the visibility of top panel.
    This ensures they stay in sync.
    Since `visible` is false in the constructor this is a slight behavior
    change as the background will now become visible a bit later.
  * system-modal-dialog: Rename obj to object.
    We have a mix in the code base but 'object' is more prevalent.
  * system-modal-dialog: Fade in system modal dialogs.
    This is a bit less surprising and with the cleanups in the layer surface
    code we can fade in with a simple PhoshAnimation. Since the compositor
    drives the rendering this doesn't cause much CPU (as GTK based blending
    would).
  * background-manager: Update background when dark uri changes too.
    We tracked the regular background but not one for the dark theme.
  * background: Fill background with primary color.
    This makes sure we have a proper background in the overview in
    case the selected image has transparency.
    In case of a missing image it ensures we fall back to black so the
    overview always gets a non transparent background.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1173
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1169
  * background: Use background color for the primary output's background.
    The primary output's background determines the color behind the top and
    bottom bars when they are folded (since the actual bars are
    transparent). So use the @phosh_bg_color CSS value for these areas
    rather then the primary-color gsetting.
    This ensures the seamless fading from the opened overview to the black
    top and bottom panel works even for situations where the primary-color
    gsetting is not '#000000'.
  * media-player: Don't access `self` when call got cancelled.
    The memory has then been free'd already.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1176
    Tested-by: Fiona Klute <fiona.klute@gmx.de>
  * media-player: Simplify flow.
    We first handle the success then the failure path. By basing this on
    `var` we avoid `else if`.
    Tested-by: Fiona Klute <fiona.klute@gmx.de>
  * ci: Pull phoc from Debian unstable.
    Should fix the crash we're seeing on phoc shutdown in CI
  * osk-button: Drop widget. It's not used anymore.
    Fixes: fe308c2ce ("home: Shrink home-bar height and move osk activation to center")
  * shell: Allow plugins to get the primary and built-in monitor
  * monitor-manager: Allow to set a monitor's scale. This is similar to
    setting the transform.
  * head: Move scale calculation for video modes to util.
    It's not bound to the actual head we use so we can also use it e.g. for
    monitors.
  * build: Export symbols needed to set monitor scale
  * tests/integration: Honor WLR_BACKENDS from environment
  * docs: Use full line length. Matches what we do in the code
  * docs: Move callbacks one indent level up. Doesn't belong to properties
  * docs: Add signal example
  * docs: Add since annotations to examples
  * docs: Add doc string
  * docs: Add GObject introspection docstring example
  * manager: Use idle_add_once variant. A bit less code and easier to read.
  * notification: Allow for empty do_action. Shell internal notifications
    only listen to signals so they don't have `do_action` implemented
  * build: Move wifi-manager to tool sources.
    We want to add the connectivity manager there and as this will reference
    the wifi-manager we need to move things over (which is an improvement
    over all as we want to empty `libphosh_sources` in favor of
    `libphosh_tool_sources`).
  * connectivity-manager: New class to track connectivity information.
    This will be used for detecting captive portals and by
    connectivity-info.
  * connectivity-info: Use connectivity-manager
  * connectivity-manager: Only update on state changes
  * connectivity-manager: Show notification when we detect a captive portal.
    Clicking on the portal opens the portal URL in the browser
  * d/control: Recommend network-manager-config-connectivity-debian.
    This allows NMs captive portal detection to work.
  * layersurface: Fix initial alpha sync. We want to set for alpha != 1.0
    Fixes 6b2d9f6b6 ("layersurface: Allow to set alpha before the surface is mapped")
  * layersurface: Clear effects on unmap.
    This allows us to toggle visibility on and off as the effects will be
    recreated on map.
  * home: Recolor only the home bar on state changes.
    So far we added the style class to the whole home widget which means
    recalculating the style for all widgets (including the app grid). This
    way we need to calculate way less new CSS.
    In order to keep HighContrast theme working we restyle the whole Home
    widget on theme changes still.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1177
    Tested-by: Andrey Skvortsov <andrej.skvortzov@gmail.com>
  * home: Toggle background widget on/off based on visibility.
    This avoids showing the background for a split second in high contrast
    mode and also saves computation time.
  * wifi-network-row: Use property setter.
    Instead of splitting setting and binding make it look like a regular
    property setter elsewhere.
  * bt-device-row: Name async callback _ready.
    Following our usual pattern
  * quick-setting-box: Don't warn when closing "wrong" status page.
    Don't emit a warning when trying to close a status page that isn't
    currently open. This allows quick settings to emit `hide-status`
    without keeping track whether their status it the one currently shown.
  * bt-device-row: Emit signals for activation.
    Emit a signal when activation starts (and hence the row is "busy") and
    when it finishes. This allows the status page to keep track of the rows
    state.
  * status-page: Add "done" signal.
    Status pages should emit this when they want to be closed
  * bt-status-page: Emit done when last device activated successfully.
    We emit the signal when all devices finished activating and the last one
    finished successfully as the user is very likely done with the status
    page at this point.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1166
  * quick-setting: Hide status page on "done" signal.
    When the status page indicates it is done, close it.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1166
  * scaling-quick-setting: Close status page on scale changes.
    Let status page emit "done" signal when setting the scale. This closes
    the status page.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1166
  * wifi-status-page: Use g_connect_object() for wifi-manager.
    Less code and we'll connect more. Fix one trailing white space while at
    that.
  * wifi-network: Clarify ownership of phosh_wifi_network_get_ssid()
    It is transfer: none.
  * wifi-status-page: Fix incorrect signal handler signature.
    There's no `GParamSpec` in the "clicked" signal. Thankfully we're not
    using the button yet so this wasn't a problem so far.
  * wifi-status-page: Close status page when connection succeeds.
    Close the status page when the Wi-Fi network the user selected gets
    activated.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1166
  * dir-locals: Set indicator column.
    Makes indenting a bit simpler
  * notification: Clear expiry timeout before setting it.
    This allows to bump the timeout of an existing notification
  * tests: Stub wifi-manager with an object.
    This allows the connectivity test to retrieve it
  * shell: Create Wi-Fi manager upfront.
    This ensures we have it around when needed.
  * shell: Create connectivity manager upfront.
    This ensures correct ordering between Wi-Fi and Connectivity manager.
  * connectivity-manager: Make notification persistent.
    We keep the notification around unless the SSID of the network changes
    or we get connectivity again. Close it as soon as we get connectivity
    again or the SSID changes.
    The banner will close after 20s (rather than 10s atm) so it is a bit
    easier to catch.
  * connectivity-manager: Make notification silent.
    No need to buzz or blink when we detect a Wi-Fi portal.

  [ Cédric Bellegarde ]
  * screen-saver-manager: Connect logind prepare-for-sleep sooner

  [ Sam Day ]
  * build: Add libappstream dependency.
    This is needed by the PhoshMetainfoCache to be introduced in the
    following commit.
  * metainfo-cache: Introduce PhoshMetainfoCache.
    This was originally authored by Guido in the WIP MR !950.
    It handles initializing an AppStream cache "Pool", which is populated
    with information about available applications on the system (installed
    or otherwise).
    It will be utilized in the following commit of this series, to determine
    the correct AppStream "data id" that is used when invoking
    gnome-software --uninstallation
  * app-grid-button: Add Uninstall action
    gnome-software supports an --uninstall <id> invocation, which navigates
    directly to the details page for the app and pops the prompt to
    uninstall that app.
  * shell: Allow overview to be hidden.
    This commit introduces a PhoshShell::overview-visible property, which is
    bound to the visibility of the PhoshHome that the shell constructs.
    This property isn't used in phosh-session and probably never will be,
    it's for custom PhoshShell subtypes, such as phrog, which will use it
    when displaying a "first-run" application in the system greeter view.
  * shell: Minor uncrustification.
    A handful of tiny cleanups in the property set/get functions, since I'm
    in the area with the previous commit.
  * build: Rename most libphosh_* Meson variables to phosh_*
    libphosh API is about to be dramatically reduced. As such it's not
    really accurate to refer to any of these sources or headers as
    "libphosh", since they're meant to be internal.
  * build: Omit libphosh_headers from phosh_sources.
    The phosh_sources variable should only include .c source files. This way
    it can be safely included in the files fed into g-ir-scanner without
    causing unintended additions to introspection output.
  * build: Omit phosh_tool_headers from phosh_tool_sources.
  * build: Only add phosh_*_headers to phosh_headers.
  * build: Generate a subset of enums for libphosh
  * lockscreen-manager: Minor uncrustification
  * lockscreen-manager: Split out a private header.
    The constructor is moved to the private header so that PhoshCallsManager
    can be excluded from the public API.
  * lockscreen: Split out a private header.
    The constructor is moved to the private header so that PhoshCallsManager
    can be excluded from the public API.
    libphosh consumers don't need to use this constructor directly, since
    they can control what Lockscreen subclass is constructed via
    PhoshShell's get_lockscreen_type vfunc.
  * shell: Split a public header out from plugin-shell.
    In the case of PhoshShell, we have two kinds of "public" - stuff that
    should be exported to libphosh consumers, and stuff that should be
    available to bundled plugin.so libraries.
    So the header that was formerly shell.h is now shell-priv.h, and a new
    shell.h header is introduced that splits the basic type definition and
    some initial public methods out from plugin-shell.h
    plugin-shell.h includes shell.h, and shell-priv.h includes
    plugin-shell.h. Got it? Nope? Don't worry - it'll make sense eventually.
  * plugin-shell: Make phosh_shell_new public API
    libphosh consumers should be able to construct a PhoshShell
  * plugin-shell: Make phosh_shell_fade_out public API.
    This is used by phrog to do a nice fadeout of the greeter session when a
    user has successfully logged in.
  * plugin-shell: Make phosh_shell_get_lockscreen_manager public API.
    This is useful for libphosh consumers (like phrog) to obtain a reference
    to the active Lockscreen.
  * plugin-shell: Make phosh_shell_get_usable_area public API
    phrog currently uses this in tests to center the virtual mouse pointer.
    I was going to switch that code to use Gdk but Guido indicated this
    might be useful elsewhere so might as well make/keep it public.
  * plugin-shell: Make phosh_shell_get_screenshot_manager public API.
    This is already used directly in the libphosh-rs hello-world example, so
    it seems a safe bet this should be considered public API.
  * build: Keep track of public dbus sources/headers.
    When codegenning the dbus proxies, we keep track of the files that
    should be included in the public API of libphosh.
    The newly introduced libphosh_generated_dbus_* variables are not
    being used yet, but they will be when the GIR is updated to use a much
    smaller subset of files for introspection.
  * build: Dramatically reduce the size of libphosh public API.
    The dozen or so commits prior to this one in this series were all
    working towards this point. The GIR and libphosh.h are reworked to only
    include a very small set of headers for the current minimum viable
    public API (based on existing usage in libphosh-rs examples and phrog).
    The GIR has been shrunk from ~70k lines to ~2.3k, and the number of
    files installed to /usr/include/libphosh-N.NN has reduced from ~200 down
    to ~20.
  * build: Remove many generated+supporting headers from public API.
    Now that libphosh.h is significantly smaller in scope, none of these
    headers need to be included alongside the libphosh headers.
  * build: Ensure wl protos referenced by public API are installed.
    The previous commit was a little overzealous in removing headers from
    the public API header dir. Specifically, layersurface.h is including the
    generated wlr-layer-shell-unstable-v1 header.
    So, similar to the earlier commit that distinguishes public dbus
    generated sources from internal ones, we introduce a list of generated
    wl proto headers that should be included in the public API.
  * quick-setting: Add vtable padding for future API/ABI compatibility
  * status-icon: Uncrustify _PhoshStatusIconClass
  * status-icon: Add vtable padding for future API/ABI compatibility
  * status-page: Add vtable padding for future API/ABI compatibility
  * wall-clock: Uncrustify _PhoshWallClockClass
  * wall-clock: Add vtable padding for future API/ABI compatibility
  * treewide: Remove various docstring symbol links to internal classes.
  * docs: Qualify API docs as 'public' in README

  [ Adam Honse ]
  * plugins: Screen scaling quick setting plugin.
    Allow to select the scale for the primary output. The list of scales
    is calculated the same way we do it when presenting them to Settings.
    For the moment we disable the plugin when there's more than one output
    as it's not obvious to the user if it should affect the primary or
    built-in display.
    Clicking on the button swaps back to the previously selected scale which
    looks like the best default action.

  [ Gotam Gorabh ]
  * tree: Bump gtk version in ui files.
    Bump gtk dependency to 3.24 and add libhandy
    as a requirement where it needed.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1181
  * d/control: Add libgmobile-dev dependency
  * emergency-info-prefs: Remove useless code
  * emergency-info-prefs: Switch to AdwEntryRow for add_emer_contact_dialog
  * emergency-info-prefs: Port add_emer_contact_dialog to AdwDialog.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1159
  * emergency-info-prefs: Port remaining GtkEntry to AdwEntryRow.
    As we already make `add_emer_contact_dialog` to use AdwEntryRow
    in https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1615 ,
    this mr will port remaining ones.

  [ Evangelos Ribeiro Tzaras ]
  * calendar: Respect week number setting (Closes: #989)
  * ci: Add gsettings-desktop-schemas as build dependency for alpine

  [ Arun Mani J ]
  * status-pages: Disable vertical homogeneous.
    These pages have a lot of stack pages of different heights. With
    homogeneous, smaller pages have an awkward space at bottom. May be not
    really awkward, but at least pages now take only the height they need.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1139
  * plugins: Add missing schemas compilation steps
  * tools: Add missing plugins' schemas
  * plugins: Build schema only on dependency change
  * Simplify many UI files using `gtk-builder-tool`

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Martin ]
  * Update Slovenian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ twlvnn kraftwerk ]
  * Update Bulgarian translation

  [ Artur S0 ]
  * Update Russian translation

  [ Rafael Fontenelle ]
  * Update Brazilian Portuguese translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 02 Feb 2025 09:14:35 +0100

phosh (0.44.0) experimental; urgency=medium

  [ Guido Günther ]
  * notification: Port to PhoshAnimation.
    This simplifies the code and will make adding a slide-up animation more
    straight forward.
    We move the start of the animation to the map vfunc as PhoshAnimation
    requires the widget to be mapped.
  * app-grid-base-button: Fix indent
  * system-modal-dialog: Don't process key event directly.
    Less code and helps the GTK4 migration. Also makes sure we don't
    interfere with other event handling.
    Can be reworked to use gtk_widget_class_add_binding_action then.
  * top-panel: Don't process key event directly.
    Less code and helps the GTK4 migration. As we don't have a "closed"
    signal we'll use "activated" which is enough to make `PhoshShell` toggle
    fold.
    Can be reworked to use gtk_widget_class_add_binding_action then.
  * top-panel: Move settings upwards.
    As we don't have a dedictated "close" signal "activate" will do.
    This allows us to drop the `packaging` elements which eases the reading
    flow and eases the GTK4 transition.
  * app-grid-base-button: Make abstract.
    It can only serve as base class for other buttons
  * app-grid-base-button: Remove css name.
    We style the derived classes.
  * app-grid-button: Use alpha on activation and search too.
    Amends df0f30580 ("app-grid-button: Use alpha when focused")
  * app-grid-folder-button: Let style match the app-grid-button.
    We use a slightly darker style to make the activation visible
    Amends df0f30580 ("app-grid-button: Use alpha when focused")
  * app-grid: Add outline around selected search item.
    Makes it easier to identify when using a background
  * build: Make cell-broadcast headers private
  * shell: Drop unused header
  * packaging: Lower phoc dependency.
    0.40~rc1 is recent enough
  * ticket-box: Port prefs to GtkFileDialog.
    This gives us the portal which is adaptive.
  * splash-manager: Use GDesktop's enum.
    It has been released a while ago.
  * mode-manager: Drop unused defines
  * home: Indicate transitioning state.
    Indicate when the home is transitioning between folded and unfolded.
  * top-panel: Set background on top bar.
    This avoids showing regular windows under the top bar which can be
    confusing.
    While this is not very visible in auto-maximize mode it can be seen in
    floating mode or when e.g. revealing the shell over fullscreen windows.
    We add an outer container with background to the top bar so we can keep
    setting the margins on the top-bar itself.
    The alternatives (using padding or to setting the marign on the inner
    elements) are more complicated as we move elements around due to notch
    avoidance and the margin also changes due to that. We would thus need to
    generate style classes on the fly or determine the elements dynamically
    which is more fragile.
    We can make things slightly nicer by setting the solid
    background a bit later (when the splash closes) but let's do that with
    when zooming in the splash
    (https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1264)
    as this will supply the necessary plumbing to phosh shell.

  [ Gotam Gorabh ]
  * notification-banner: Add slide-up animation to banner.
    Add slide-up animation to the notification-banner so that
    it will disappear with slide-up animation.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/377
  * notification-frame: Don't return bool for notify signal handler

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Alexandre Franke ]
  * Update French translation

  [ twlvnn kraftwerk ]
  * Update Bulgarian translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 31 Dec 2024 09:25:07 +0100

phosh (0.44~rc1) experimental; urgency=medium

  [ Guido Günther ]
  * po: Update app-id. No need to break all the translations
  * thumbnail: Use gpointer. We avoid "void *" in other parts of the codebase too
  * activity: Simplify UI. Drop properties at their defaults by using
    gtk-builder-tool. We also already split expand to {h,v}expand.
  * activity: Drop redundant CSS. No need to set padding and transition twice
    in the same block
  * toplevel: Allow to (un)fullscreen toplevels
  * activity: Add button to unfullscreen. We show it when the activity is
    fullscreen and emit a signal when it should be unfullscreened.
  * activity: Activate unfullscreened app. When the user unfullscreens an app
    they likely also want to activate it so do this too.
  * overview: Unfullscreen toplevel when activity requests it
  * ci: Simplify adding packages from unstable. This makes it easy to e.g.
    fetch phoc from sid when needed.
  * top-panel: Set css class at the end. This makes it match other class_init
    layouts
  * layersurface: Add check for valid alpha values
  * layersurface: Make layer property 'construct'. This allows us to get it in
    constructors.
  * protocols/layer-shell-effects: Update to latest version
  * layersurface: Add support for stacking surfaces. Use layer-shell-effects
    version 3 to allow stacking layer surfaces above/below each other.
  * layersurface: Add getters for output and layer
  * settings: Add a background. This improves readability when the top-panel
    itself is transparent.
  * background: Allow to set the layer
  * css: Ease toggling background on/off. We add a "solid" style class for
    that.
  * top-panel-bg: New widget that is the top panel's background.
    We use a separate widget so we can drive alpha blending on the
    compositor side.
  * top-panel: Use a background.
    This allows us to tweak the top-panel's transparency based on how far
    the surface is folded.
    We use that to make it fully transparent (and hence the wallpaper shine
    through) when the overview is unfolded or when on the lockscreen.
  * home: Add a background.
    Add the desktop's background to home so mobile users can enjoy it too.
    Adjust the background's transparency based on how far the home surface
    is pulled out.
  * activity: Use simpler phosh_util_toggle_style_class
  * activity: Return early if we have no surface
  * activity: Set background in drawing area.
    This ensures thumbnails don't look that cut off when the OSK is
    unfolded.
    We only do this for maximized windows to avoid the background on e.g.
    dialogs.
    We should restrict this to toplevels without a parent once
    https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1278
    lands
  * app-grid-button: Use alpha when focused.
    This avoids a dark black square which looks out of place on colored
    backgrounds.
  * style-manager: Add theme-name property and methods to get style information.
    We want other parts of the shell to track theme changes so add a
    property for this plus the needed getters.
  * home: Handle HighContrast theme. We don't want to reduce contrast in the
    overview in this case.
  * top-panel: Handle HighContrast theme. Ensure we have a solid background
    when HighContrast is active
  * data: Prefer dark theme.
    We have a quick setting to toggle it off if needed and it better fits
    the style changes for background images.
  * packaging: Conflict with older p-m-s. Add a conflict to p-m-s that doesn't
    use AdwPreferencesDialog for plugin prefs yet.
  * overview: Insert new children right of their parents.
    So far we appended to the very end of the list which made dialogs
    belonging to a parent look out of place.
  * wwan/ofono: Avoid GAsyncReadyCallback casts.
    Rather cast the user data argument which gives us a type check and fewer
    lines of code instead.
  * data: Move schema to mobi.phosh too.
    We keep the old schema paths to not break existing setups.
  * data: Move enums into canonical namespace
  * docs: Update schema locations
  * system-modal-dialog: Allow to get dialog title.
    This makes it consistent with the setter
  * wwan-mm: Switch to MM objects.
    This frees us from creating the proxies manually and gives
    somewhat nicer function names.
  * wwan-manager: Add signal to notify about new CBMs.
    The wwan manager should able to notify other parts of the shell that a
    new cell broadcast message was received.
  * wwan-mm: Track new CBMs.
    Track new cell broadcast messages and emit 'new-cbm' when
    the received message is complete
    This needs a recent ModemManager with Cell Broadcast support
    so we compile that in conditionally based on whether we find
    the necessary API in libmm-glib. We can drop this once this
    feature made it into a released MM version.
  * data: Add setting for cell broadcast messages
  * cell-broadcast-prompt: New dialog for cell broadcast message
  * cell-broadcast-manager: New class handle display of CBM information.
    Acts on signals from the WWAN stack to show cell broadcast messages
    (CBMs) as system modal dialogs or (later on) notifications.
  * background-manager: Track background file changes.
    The portals use the same name for the background file so we
    want to track when the file content changes.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1012
  * build: Bump libsoup dep.
    Now that there's a stable release with
    https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/394/diffs
    just depend on that.
  * docs: Drop submodule init.
    We're using subproject wraps since some time
  * docs: Be less L5 specific
  * docs: Fix path to session script.
    Fixes ea33170db ("data: Rename phosh startup script to phosh-session")
  * brightness: Use automatic cleanup
  * overview: Bind template vars past signals.
    This matches the class_init layout in other classes. Sort alphabetically
    while at that and use our current indent.
  * app-grid: Use g_timeout_add_once. Simpler and less error prone
  * app-grid: Avoid expand packaging for search.
    That won't work with GTK4 and we can has hexpand just as well
  * app-grid: Prefix signal handlers.
    Make them match our `on_` style
  * app-grid: Bind template vars past signals.
    This matches the class_init layout in other classes. Also use our
    current indent.
  * notification-banner: Use minimal size for banner.
    Size the banner based on the allocation. This ensures areas around the
    notification will still remain touchable.
    We keep a min width of 360px to ensure the notification doesn't get too
    narrow.
    Fixes: c0b37ad5c ("notification-banner: Drop unused hard coded values")
  * tests/notification-frame: Don't leak actions.
    Fixes fa92b3cbd ("tests/test-notification-frame: Add testcase for
    need_separator function")
  * shell: Use consistent resource prefix.
    We could use the longer /mobi/phosh/shell but let's use the shorter
    /mobi/phosh as these don't leak outside the binary.
  * session: Move to phosh.mobi.
    Move desktop file and icons as well
  * debian: Drop unused files
  * portal: Move to consistent prefix.
    Use mobi.phosh.Shell here too
  * build: Switch app-id to mobi.phosh.
    Fix the fallout in the calendarserver and the upcoming events plugin
    triggered by that.
  * portals: Add 'shell' to portal name.
    We only provide the access portal so add 'shell' name and free the
    namespace for the actual portal so we don't have to use 'pmp' for it.
  * portals: Use phosh as portal name.
    Use the canonical name for the portal implementation
  * packaging: Conflict with older phosh portal.
    This ensures we don't run against a portal that is still
    named pmp

  [ Gotam Gorabh ]
  * plugin prefs: Switch to AdwPreferencesDialog.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1515
  * tools/plugin-prefs-standalone: Adapt the AdwPreferencesDialog plugin prefs.
    See: https://gitlab.gnome.org/World/Phosh/phosh-mobile-settings/-/issues/64
  * notification-frame: Add separator for default-action notification.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/901
  * tools/check-notification: Cover more cases
  * notification-frame: Don't add separator to row at index 0
  * tests/test-notification-frame: Add testcase for need_separator function

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Tim Sabsch ]
  * Update German translation

  [ Pierre Michel Augustin ]
  * Update Haitian Creole translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

 -- Guido Günther <agx@sigxcpu.org>  Sat, 07 Dec 2024 23:44:41 +0100

phosh (0.43.0) experimental; urgency=medium

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Evangelos Ribeiro Tzaras ]
  * end-session-dialog: Wait 60 seconds (not 61) before auto-confirming.
    This source is added via g_timeout_add(). As a second has already passed,
    decrement first and then update the dialog text.

 -- Guido Günther <agx@sigxcpu.org>  Fri, 15 Nov 2024 13:44:54 +0100

phosh (0.43~rc1) experimental; urgency=medium

  [ Gotam Gorabh ]
  * docs: Update commit message guidelines for bug fixes
  * notification-frame: Add slide-up animation to the notifications.
    Add slide-up animation to the rest of the notifications
    into the space that the one that was just dismissed.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/788

  [ Guido Günther ]
  * build: Drop the versions block.
    Not needed anymore. We require those versions anyway.
  * build: Install gir when we create the bindngs lib.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1118
  * notify-feedback: Send event for new notifications.
    The feedback theme should decide what should happen on notifications,
    not the shell.
  * notify-feedback: Make condition match maybe_trigger_feedback.
    The early exit should use the same criteria we use in
    `maybe_trigger_feedback` later on (as it's only purpose is to shortcut
    the logic early.
  * notify-feedback: Emit proper feedback when device is locked.
    So far we only picked the `*-missed-*` events and relied on the app to
    submit proper feedback. That isn't very reasonable though as the app
    e.g. won't know if the user has disabled notifications.
    So emit feedback for all notifications with reasonable categories.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/728
    Closes: https://source.puri.sm/Librem5/feedbackd/-/merge_requests/69
  * notify-feedback: Allow apps to special case SMS. This is useful for
    phones
  * notify-feedback: Clarify event purpose.  We only track the events for the
    inactive case
  * notify-feedback: Always trigger feedback when events are added.  Since we
    handle inactive and active now we shouldn't silently ignore new
    notifications.
  * notify-feedback: Handle feedback for active case separately.
    This ensures we don't forget to end feedback for long running
    feedback when the device is active (e.g. `call-unanswered`).
  * style-manager: New class to handle themes and styles.
    We move the stylesheet selection into a separate class so we can add
    properties/signals and also more style settings for the upcoming accent
    color support.
  * notify-manager: Allow `transient` hint to be int.
    There's no bool so people use
      notify-send --hint=int:transient:1 -t 3000 subject body
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/351
  * util: Handle MFD_NOEXEC_SEAL.
    This got added in 6.3. See https://lwn.net/Articles/918106/
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/928
  * libphosh: Add missing classes. This unbreaks the Rust bindings
  * plugins: Simplify schema compilation. Add a validation while at that
  * run: Add missing schema dirs
  * tools/plugin-prefs: Only load one extension point at a time.
    Quick setting plugins and lockscreen plugins use different entry points
    so loading all prefs leads to warnings. Allow to select the plugin type
    to use instead.
    Fixes b8589e6df ("tools: Add widget to test custom quick settings")
  * notify-manager: Make shell notifications more flexible.
    Allow to pass a notification object. This gives more flexible on e.g.
    the icons used.
  * build: Allow plugins to send notifications
  * plugins: Add simple pomodoro timer.
    This follow the pomodor technique
    https://en.wikipedia.org/wiki/Pomodoro_Technique although we don't
    implement the longer breaks yet.
    The `pomodoro-on.svg` is the `timer.svg` taken from
    `org.gnome.design.IconLibrary`. `pomodoro-break.svg` is the
    `tea-symbolic.svg` from the same library.
    This also adds an example on how to use notifications from plugins.
  * pomodoro-quick-setting: Add preferences dialog.
    This also gives us a demo of preferences for a quick setting plugin.
  * pomodoro-quick-setting: Mark more strings as translatable.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1127
    Thanks to Rafael Fontenelle
  * notify-manager: Try harder to find an application icon.
    Use `phosh_get_desktop_app_info_for_app_id()` so we get the correct icon
    for e.g. Firefox which sends `Firefox` as `desktop-id` although the
    desktop file is named `firefox.desktop`.
  * screenshot-manager: Use a const rectangle. This eases bindings
  * screenshot-manager: Use correct notification. If we don't copy to
    clipboard we should say so, we also shouldn't claim we took a screenshot
    when it failed.
  * portals: Sort alphabetically
  * portals: End list with semicolon
  * portals: Use phosh specific portals where necessary.
    The GTK portal doesn't support accent colors yet:
        https://github.com/flatpak/xdg-desktop-portal-gtk/issues/498
  * portals: Disable currently unimplemented ones.
    Let's not fall back to a portal implementation that might not work.
  * quick-settings: Close phosh's settings when opening the Settings application.
    Otherwise the user might be puzzled as seemingly nothing happens. We do
    that by deduplicating the "open settings panel" logic which was similar
    to what PhoshSettings does. Instead just use the action.
  * quick-setting: Improve focus styling.
    Use the selected bg color when focused. In order to keep the focus
    visible on active widgets we use alpha blended foreground color there.
  * sliders: Use selected color for outline when focused
  * lockscreen: Use @theme_selected_bg_color for focus. This matches our
    other list boxes
  * top-panel: Drop `can-focus` properties at their defaults
  * top-panel: Drop superfluous `receives-default` on a label
  * top-panel: Place initial focus on arrow.
    This avoids one button in the top panel having a focus border while the
    other one hasn't. We can still keyboard navigate as the next focused
    widget is still the lock button.
  * quick-setting: Don't focus on click. This avoids the focus border for
    quick setting but still allows for keyboard navigation.
  * audio-settings: Don't take focus when showing details
  * settings: Don't take focus when clearing all notifications
  * bt-status: Page don't focus buttons on click.
    The focus draws attention to the button while it should be on the
    content of the status page.
  * wifi-status-page: Don't focus buttons on click.
    The focus draws attention to the button while it should be
    on the content of the status page.
  * shell: Use `once` function for timeout handling. Simpler and less error
    prone
  * testlib: Use `once` functions for timeout handling. While at that use a
    more descriptive variable name
  * tests/take-screenshots: Run wait in screenshot context.
    This makes sure we don't discard the context before waits have
    finished.
  * ci: Update ci image
  * ci: Update shared scripts to 5e3667e
  * ci: Use common job for style, dist and markdown check
  * ci: Reconfigure test job with coverage information.
    The coverage json sometimes ends up completely empty. Make sure we built
    with coverage support.
  * ci: Use --gcov-ignore-errors=no_working_dir_found with gcovr
  * lockscreen: Disable RTL for the deck.
    Otherwise swipe and movement direction do not match
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1132
  * screenshot-manager: Use once timer function
  * screenshot-manager: Use automatic cleanup
  * screenshot-manager: Allow to save internal screenshots.
    We separate the file name handling and decision whether we want to copy
    to the clip board out of `phosh_screenshot_manager_do_screenshot` and
    rather have callers decide.
    In the case of internal screenshots triggered by keyboard shortcut or
    power button menu we save to disk and copy to clipboard.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/964
  * screenshot-manager: Update recent file list.
    Add screenshots to recent file list when saving screenshots not taken
    via the DBus API.
  * caffeine-quick-setting: Use a context for on/off.
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1143
  * timestamp-label: Give translators more headroom.
    We're not that tight on space here.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1144
  * notification-banner: Drop explicit notify.
    No need to handle that for a construct-only property. While at
    that modernize the doc string and indent.
  * notification-banner: Adjust margin based on notification height.
    Make sure the banner is initially slightly visible so the frame clock
    ticks.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/221
  * notification-banner: Drop unused hard coded values

  [ Arun Mani J ]
  * util: Move `open_settings_panel` here. Move it here as it not
    quick-settings specific.
  * quick-setting: Bind separately for `active` Have a new field to track
    active binding instead of shadowing label binding.
  * quick-setting: Move to new API.
    Add support for status-pages. Previously, status-pages were separate
    from the quick-settings. But now we make them a property of the widget
    itself.
    Previously, the status-page displaying was managed externally by
    catching signals like long-pressed. But now we change the structure of
    the quick-setting to make it show arrow icons at the right. Clicking
    this arrow will emit the proper signal to show or hide status-page.
    We remove read-only property `status-icon` as it seems unused.
    We assign the widget a proper CSS name and reflect its `active` property
    through CSS state-flag.
    Since status-page source files are direct dependency of quick-setting
    now, we move the `status-page.c/h` and `status-page-placeholder.c/h` to
    `libphosh_tool` lists in `meson.build`.
  * quick-setting: Clean up and format. Fix indentation, reformat code as per
    `HACKING.md` and remove some unnecessary comments.
  * plugins: Move to new quick-setting API.
    Previously, `status-icon.h` was part of `quick-setting.h`, so plugins
    were able to use it directly. But since we removed the `status-icon`
    property from quick-setting, the corresponding header is also gone.
    So add `status-icon.h` to all the quick-setting plugins.
  * quick-settings-box: Add PhoshQuickSettingsBox
  * tools: Add PhoshQuickSettingsBoxStandalone
  * status-page: Simplify status page.
    As `PhoshQuickSettingsBox` uses a revealer to display the pages, we no
    longer need to have the status-page inherit from `GtkRevealer`.
    With `PhoshQuickSetting` showing arrow to hide and reveal the status
    pages, having a go-back button is redundant.
    Also remove some empty lines from UI file as it looks odd with them.
  * quick-settings: Add PhoshQuickSettings
  * settings: Bind directly to torch-manager.
    Drops dependency on torchinfo. Will be helpful when migrating to `PhoshQuickSettings`.
  * bt-status-page: Use callback instead of action.
    Makes bt-status-page more self-contained and helps when we simplify `PhoshSettings`.
  * settings: Port to PhoshQuickSettings
  * settings: Clean up and format.
    Remove unused headers, actions and format using Uncrustify.
  * wifi-status-page: Change switch to scan.
    With the new quick-setting, one can toggle Wi-Fi by just clicking on
    the quick-setting itself. So, let's use that space to have a button to
    scan Wi-Fi access points.
  * wifi-status-page: Remove "Scan" placeholder button.
    Redundant with the new Wi-Fi scan button at top right.
  * wifi-status-page: Remove unnecessary box.
    The box as parent to stack is unnecessary. Instead make the stack a
    direct child of status-page.
  * custom-quick-settings-standalone: Use PhoshQuickSettingsBox
  * tree: Export symbols of status-page and placeholder.
    Allows plugins to use these symbols.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1090
  * simple-custom-quick-setting: Add status-page.
    Add a status-page to demonstrate its usage in custom quick-settings.
  * quick-settings-box: Set CSS name.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1125
  * quick-settings-box: Add bottom margin to status-pages.
    Use bottom margin of status-pages instead of adding separate spacing for
    revealer. This way there is no flickering (sudden disappearance of space).
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1124
  * quick-setting: Bind long-press to primary button.
    As `GtkBox` does not have a `GdkWindow` on its own, it did not
    receive the long-press gestures. So bind the gesture to primary button.
    Also add the `long_press` object to C side to keep it alive.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1130
  * quick-setting: Handle `clicked` from button separately.
    Otherwise, there is a conflict between `button-press-event` and
    `long-press`, causing the quick-setting to emit both `clicked` and `long-press`.
  * quick-setting: Use GtkGestureMultiPress for right-clicks
  * quick-settings-box: Use most used type for variables.
    Avoids superfluous type-casting.
  * quick-setting: Use most used type for variables.
    Avoids hitting line length limits and easy to read.
  * quick-setting: Add long-press-action-{name,target}
    As many quick-settings launch an action on long-press, make these as
    properties, to handle this common usecase.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1133
  * quick-settings: Port to `long-press-action-*` properties
  * quick-settings-box: Hide status-page when child is insensitive
  * quick-setting: Unset state flags properly.
    The previous method is both wrong and left the widget in a unstable
    state.
  * quick-settings-box: Fix typo
  * quick-setting: Put property flags in a single line
  * quick-settings-box: Put property flags in a single line

  [ Eugenio Paolantonio (g7) ]
  * style-manager: Support accent colours.
    React on accent colour changes via org.gnome.desktop.interface's
    accent-color key.
    When an accent colour is defined, @theme_selected_bg_color and
    @theme_selected_fg_color in the stylesheet are overridden by
    phosh with the actual colour.
  * build: Bump gsettings-desktop-schemas dep to >= 47.
    Required by the accent colours support.
  * stylesheet: Fix accent colour on levelbars and calendar widgets.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1134

  [ Sam Day ]
  * screenshot-manager: Add nullable annotations to do_screenshot params

  [ Kenny Levinsen ]
  * phosh.service: Manually issue chvt on start
    libseat 0.9.0 no longer performs an automatic VT switch when taking
    control of a seat to allow sessions to be started in the background. As
    consequence, one must manually switch if one wants a background session
    to be immediately activated.
    Issue a chvt on ExecStartPost, when the service is deemed running.

  [ Anna (cybertailor) Vyalkova ]
  * build: Split linter tests to their own suite.
    Allow to easily opt out of code style tests, which provide little to no
    value for end users.

  [ Teemu Ikonen ]
  * lockscreen: Add 'require-unlock' setting.
    Allows disabling lockscreen authentication by setting it to false.

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Martin ]
  * Update Slovenian translation

  [ Rafael Fontenelle ]
  * Update Brazilian Portuguese translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Artur S0 ]
  * Update Russian translation

  [ Nathan Follens ]
  * Update Dutch translation

  [ Andi Chandler ]
  * Update British English translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Vincent Chatelain ]
  * Update French translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 11 Nov 2024 12:07:45 +0100

phosh (0.42.0) experimental; urgency=medium

  [ Guido Günther ]
  * subprojects: Switch to libcall-ui 0.1.4.
    This allows us to drop the patch we apply to the subproject.
  * panels: Queue draw instead of committing the surface.
    If we commit too early and GTK hasn't updated the buffer the compositor
    will terminate us due to the buffer size not matching the scale.
    A draw will eventually commit the surface. This makes sure we don't
    commit without giving GTK a chance to update e.g. the buffer size.
    This is not ideal as we invalidate the complete surface causing a full
    redraw.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1050
  * notify-manager: Hold a ref on the activated lockscreen notification.
    Otherwise it might get disposed before we could action on it and we need
    it around to emit the signal in `invoke_action`.
    Tested-by: Teemu Ikonen <tpikonen@mailbox.org>
  * build: Version the library name instead of the soname.
    Now with a real consumer (phrog) let's rather version the API and use a
    fixed soname. This unconfuses some packaging tools and also avoids file
    conflicts between different API versions.
  * packaging: Build bindings lib by default.
    This ensures the build is tested. In contrast to any distro builds we
    keep a fixed package name as the packages are meant for testing purposes
    only anyway.
  * overview: Ignore page changes when overview is not open.
    Otherwise we might end up focusing the wrong app when another
    adds a new toplevel on startup (like e.g. calls).
  * wwan-mm: Don't warn when operation got cancelled
  * shell: Avoid critical when there's no builtin monitor.
    There might not always be a builtin monitor so check for that when
    handling primary monitor changes.
  * data: Drop feedbackd override.
    Feedbackd sets this as default now.
  * status-page-placeholder: Center align horizontally.
    Otherwise the empty state ends up left aligned when there's
    horizontal space.
  * packaging: Let changelog hook handle rc versions.
    This allows our release pre script to work for RCs and actual releases.

  [ Gotam Gorabh ]
  * notification-content: Set action-area border to none.
    Remove the line that is under the notification frame.
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1027
  * notification-frame: Add separator to separate notification content.
    Fix the visual separation between notifications from the same app.
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/901
  * notification-content: Add background color to action-area button.
    Improve visual separation between notification body and actions, this
    allows us to drop the border which would otherwise look odd with the
    added separator.
  * locksreen: Add border color to the notification separator.
    Use phosh-borders-color for the notification separator otherwise it has
    the same color as the notification background.

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

 -- Guido Günther <agx@sigxcpu.org>  Sat, 28 Sep 2024 19:23:48 +0200

phosh (0.42~rc1) experimental; urgency=medium

  [ Guido Günther ]
  * build: Specify minimum versions for plugin pref libs.
    We're requiring a minimum libadwaita version to not hit deprecations so
    we should specify that as version requirement. While at that do the same
    for GTK4.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1104
    Tested-by: Anna Vyalkova <cyber@sysrq.in>
  * wwan-mm: Handle access-tec bitmasks better.
    The switch statement missed things like
      MM_MODEM_ACCESS_TECHNOLOGY_GPRS | MM_MODEM_ACCESS_TECHNOLOGY_GSM
    so instead of adding all possible combinations to the switch use if /
    else instead and check from newest generation to oldest ones.
    This makes the mobile network generation show in more cases.
  * lockscreen: Improve documentation.
    This shows up in the
  * shell: Document ready signal
  * wall-clock: Fix parameter names in declarations.
    Make them match the ones used in the definition
  * wall-clock: Document class and properties.
    This makes the Rust docs look more complete
  * lockscreen: Improve enum doc.
    Use backticks to they work better in markdown and separate summary from
    the details.
  * docs: Add phosh-config.h to example
  * build: Disable feedbackd tests.
    They just take time and the test options confuse ASAN
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1108
    Tested-by: Arun Mani J <j.arunmani@proton.me>
  * wifi-hotspot-quick-setting: Make sure 'state' signal gets disconnected.
    The WifiManager outlives the quick setting (which might get added /
    removed at runtime when enabling disabling quick settings) we hence need
    to make sure we disconnect the signal when the quick setting goes away.
    Do so by using `g_signal_connect_object`.
    This fixes that looks like
      #0  0x00005652da08fc4f in PHOSH_IS_STATUS_ICON (ptr=0x21) at ../src/status-icon.h:15
      #1  phosh_status_icon_set_info (self=0x21, info=0x7f5429c09061 "Hotspot Off") at ../src/status-icon.c:377
      #2  0x00007f5429c0851f in update_info (self=0x565300804880) at ../plugins/wifi-hotspot-quick-setting/wifi-hotspot-quick-setting.c:80
      #7  0x00007f542c0fffc3 in <emit signal 'notify:state' on instance 0x5652fd787d90 [PhoshWifiManager]>
  * wifi-hotspot-quick-settings: Use `_cb` suffix.
    If we don't use the `on_` pattern because we want to describe what
    happens rather then on what event the callback is triggered we append
    `_cb` to indicate a callback.
  * shell: Make get_locked() available to plugins.
    Useful to determine their lockscreen state
  * wifi-hotspot-quick-setting: Disable on lock screen.
    We don't allow changing Wi-Fi networks so we shouldn't allow enabling
    hotspot either.
  * treewide: Use margin-{start,end} instead of margin-{left,right}
    The later are deprecated
  * tools: Add check so that deprecated tags don't creep back in
  * packaging: Add dependency on desktop schemas.
    They're a dependency of the pkg-config file so we need to add them here
    too.
  * docs: Drop superfluous 0 initializer
  * docs: Clarify callback naming.
    Add more details on how we name the different handlers.
  * build: Bump polkit dependency.
    The needed versions are in Debian stable. This allows us to drop some
    `ifdef`s.
  * wwan-iface: Fix base class.
    Implementers must derive from PhoshWwanManager. Both the MM and Ofono
    implementation do this, this just marked it explicit.
  * wwan-mm: Simplify modem cold plug.
    This ensures we do the same things as in the hotplug path.
  * wwan-mm: Disconnect by data.
    Easier than storing the ids
  * build: Depend on mm-glib.
    Used for cell broadcast and will be used for more modem integration
  * wwan-mm: Use MMManger instead of our generated object manager.
    We'll use more things from mm-glib so use this to interface with
    ModemManager.
    This also allows us to drop enums copied over from mm-glib
  * wwan-mm: Use our generic dbus_client_protos.
    Since we dropped the object manager there's no need to open code it
    anymore.
  * wwan-mm: Switch to MM proxies for modem and modem3gpp.
    This allows us to drop the gdbus-codegen generated bits.
    Add cancellable while at that.
  * wwan-mm: Move manager object creation to init.
    No need to postpone it until constructed
  * wwan-mm: Simplify modem destroy.
    We want to guard the signal removal in case the modem didn't acquire the
    proxy but there's no need to guard the `g_clear_object`.
  * wwan-mm: Rename proxy to proxy_modem.
    We have a bunch of DBus proxies to distinguish so add a suffix here too.
  * wwan-mm: Disconnect signal handlers by data.
    We want to disconnect all signal handlers for the proxy so no need to
    track them by id.
  * dispose: No need to clear data twice.
    We free all the modem bits in phosh_wwan_mm_destroy_modem
    and invoke that from dispose so no need to do it in dispose
    explicitly too.
  * docs: Cleanup markdown
  * ci: Fix indent.
    Let's make yamllint happy
  * ci: Lint markdown.
    Lint markdown files when they change in a merge request
  * ci: Drop `except:`s.
    They're not used much nowadays and complicate the logic
  * ci: Drop submodule updates.
    Not needed as we use meson subprojects
  * ci: Build library.
    Make sure this works as expected
  * ci: Verify libphosh install.
    Compile a small stub to ensure the pkgconf file works
  * upcoming-events: Add missing plugin prefs variable.
    Otherwise the `Plugin=` path is broken in the generated .plugin file
    Fixes e1a1ae1a8 ("upcoming-events: Add preferences widget")
  * libphosh: Drop generated header.
    This got removed in
       db3925449 ("wwan-mm: Switch to MM proxies for modem and modem3gpp")
  * ci: Use gmobile-dev on alpine.
    This avoids the subproject clone which fails ever so often
  * treewide: Drop `v` from since versions.
    This trips up `GirXml` as it inserts `doc-version`s into the generated
    Gir.
  * wwan: Modernize property docs.
    There was a typo so while at that clean up all of them
  * wwan: Add getter for has-data property.
    While at that we group the interface methods and the ones
    we proxy from WWanManager.
  * mobile-data-quick-setting: Make insensitive when modem is disabled.
    It's confusing when it stays enabled as toggling it would do nothing
    when the modem is disabled.
  * symbols: Export phosh_status_icon_get_type.
    We use the type so should allow users to check it.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1115
  * dbus: Add Backlight property to DisplayConfig.
    This ensures GNOME 47's gsd-power can read it and doesn't crash.
    Having it empty is fine for the moment.
  * build: Use schema headers var.
    No need to track it in two places
    Fixes bdcb925c6 ("enums: Introduce single header file to gather all enums")
  * build: Ensure the enum header end up in the docs.
    Fixes bdcb925c6 ("enums: Introduce single header file to gather all enums")
  * overview: Simplify activity creation a bit
  * protocols: Update wlr-foreign-toplevel-management
  * toplevel-manager: Track parents.
    For that we require version 3 of the protocol which is available in
    all phoc's that use wlroot 0.15.0 or later.
  * activity: Update app-id if an activity's toplevel has a parent.
    The app-id is often incorrect on dialogs so use the parent's
    app-id in that case.
  * lockscreen: Swap horizontal deck and vertical carousel.
    This avoids accidentally switching to the plugins widget when entering
    the pin without complicating the logic further.
    This is the minimal UI reshuffle. We'll reindent in a separate commit.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/899
  * lockscreen: Vexpand the deck.
    Otherwise we might not take enough vertical space and parts of the
    keypad screen leak into the info box (e.g. with 1920x1080).
  * libcall-ui: Drop CuiCalldisplay margins.
    This allows us to work on smaller displays, see
    https://gitlab.gnome.org/World/Phosh/libcall-ui/-/merge_requests/92
    Helps: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/371
  * notify-manager: Handle per app 'enable' toggle.
    If we get a notification for an app that has notifications enabled
    ignore it. This ensures that new notifications for apps that have them
    disabled don't end up in any notification sources at all.
    Note that we still allow existing notifications to be updated by the app.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/168

  [ Jared Toomey ]
  * notification-feedback: Add feedback responses for new call categories.
    See https://gitlab.freedesktop.org/xdg/xdg-specs/-/merge_requests/50

  [ Evangelos Ribeiro Tzaras ]
  * doc: Fix URL in configuration. And add a newline while we're at it.

  [ Arun Mani J ]
  * wifi-manager: Ensure Wi-Fi network stays alive.
    Ensure Wi-Fi network stays alive for the duration of callback. This
    prevents cases where the callback is called for a destroyed network object.
  * wifi-manager: Clean up Wi-Fi network from signal after usage.
    We need to watch the connection only till it crosses the "activating"
    state. So disconnect once it happens to cross it.
    Then we unref the connection that was made available at the
    `wifi_connection_*_activated` functions.
  * wifi-manager: Remove unused header
  * upcoming-events: Set stack page on setting model.
    By default, the stack is on "no-events" page. We want to set the
    appropriate page whenever one assigns a new model.
  * upcoming-events: Allow day-offset up to maximum integer
  * upcoming-events: Change day-offset to unsigned int
  * upcoming-events: Allow configuring number of days.
    Instead of showing a fixed number of 7 days, users can now set the
    number of days shown to any positive integer.
  * upcoming-events: Add preferences widget
  * upcoming-events: Remove unnecessary empty line
  * upcoming-events: Remove unused header
  * upcoming-events: Add XML header to schema
  * upcoming-events: Fix a few typos.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/970
  * torch-manager: Add `can-scale` property.
    This property indicates if the torch brightness can be scaled.
  * settings: Show revealer only if torch can scale
  * torch-manager: Move to modern property description.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/858

  [ Sam Day ]
  * shell: Register plugin extension points in constructor.
    This makes it possible for PhoshShell subclasses to register lockscreen
    and quick-settings custom widgets.
    It introduces an implicit dependency that extension points will not be
    looked up until the shell setup_idle callback.
  * shell: Minor formatting fix in phosh_shell_init
  * shell: Move cui init/de-init to Shell object lifecycle.
    This makes sure that embedding contexts don't need to concern themselves
    directly with linking to and initializing libcall-ui.

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Bruce Cowan ]
  * Update British English translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Artur S0 ]
  * Update Russian translation

  [ Balázs Úr ]
  * Update Hungarian translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Martin ]
  * Update Slovenian translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Vasil Pupkin ]
  * Update Belarusian translation

  [ Andi Chandler ]
  * Update British English translation

 -- Guido Günther <agx@sigxcpu.org>  Fri, 20 Sep 2024 17:26:38 +0200

phosh (0.41.0) experimental; urgency=medium

  [ Guido Günther ]
  * media-player: Use G_GINT64_FORMAT to print gint64.
    Otherwise we'll break i386
  * lockscreen: Delay clock update past the animation.
    The visible child changes at the start of the animation hence the clock
    can still be outdated.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/922
  * plugins: Avoid adw deprecation warning

  [ Sam Day ]
  * lockscreen: Rename PHOSH_LOCKSCREEN_PAGE_INFO.
    This better describes the purpose of this page. Further, it lays
    groundwork to introduce functionality that changes the default page
    displayed on the lockscreen.
  * lockscreen: Clean up some unused imports
  * lockscreen: Always clear idle timer in carousel_position_notified_cb.
    Even if the keypad is already visible, any swiping activity triggers
    carousel_page_changed_cb again anyway.
    This actually slightly improves UX in a somewhat edge case condition. If
    you swipe to the keypad, and then swipe up/down in the keypad region
    without any keypad input (or switching all the way back to the page
    above), the idle timer will kick in and suddenly take control of the
    carousel. With this change, *any* swiping behaviour properly resets the
    idle timer.
    This is fortunate, because the intent is to remove "PhoshLocksreenPos"
    imminently, and this change removes two usages of that enum.
  * lockscreen: Use phosh_lockscreen_set_page more.
    The logic in phosh_lockscreen_set_page was duplicated in show_info_page
    and show_unlock_page.
    Since show_info_page wasn't doing anything else, just remove it entirely
    and use phosh_lockscreen_set_page.
    In the case of show_unlock_page, it's also emitting a signal, and is
    used as a callback from the UI XML, so it remains intact.
  * lockscreen: Remove PhoshLocksreenPos enum.
    Instead, phosh_lockscreen_get_page is used. The logic of this function
    was also tweaked a bit to incorporate the rounding that was previously
    only done in key_press_event_cb.
    This means that phosh_lockscreen_get_page will report the current page
    slightly differently if queried while the carousel is animating or being
    dragged.
  * lockscreen: Support setting the default page.
    The default page will be presented when the lockscreen is shown, it is
    also the page that is scrolled to when keypad expires or the escape key
    is pressed.
  * lockscreen: Allow custom unlock submit callback.
    The callback that is fired when a passphrase is submitted from the
    keypad entry is virtualized so that subclasses can override this
    behaviour.
    This change primarily benefits Phosh-based greeters like Phrog. In this
    case, the login behaviour is entirely different from the default (the
    PAM conversation is mediated through greetd IPC, and takes place before
    there's actually any user logged in).
  * lockscreen: Provide methods to get/clear/shake PIN entry.
    This is useful for lockscreen subclasses that want to override or
    influence the behaviour of the authentication flow.
    The shake_label/finish_shake_label functions were renamed, since they
    shake the entry, not the label.
  * lockscreen: Allow an "extra" page to be inserted.
    If phosh_lockscreen_add_extra_page is called, the carousel will have an
    extra page inserted between the info page and the unlock page. This
    extra page can then be navigated via swipes, and also set as the
    current and/or default page.
    This is useful for the Phosh-based greeter use case (for example Phrog),
    which inserts a user/session selection page.
  * lockscreen: Setter for unlock status label.
    Allows subclasses to override the message displayed above the keypad
    entry.
  * lockscreen: Property for current carousel page.
    This property can be used by subclasses / observers to be notified when
    lockscreen page considered "visible" changes.
  * lockscreen: Don't set label after shaking.
    The existing usage is changed to set the label before shaking.
    This way the shaking mechanism can be used in other scenarios,
    particularly by lockscreen subclasses.
  * lockscreen-manager: Add phosh_lockscreen_manager_get_lockscreen
  * tests/lockscreen: Add test for extra page functionality
  * background: Use G_GNUC_FALLTHROUGH for consistency
  * bt-manager: Replace #include <bluetooth-device.h> with a typedef.
    This header is vendored into phosh because upstream does not want to
    make it public, so we can't leak it into libphosh headers.
    Further usage of types from these vendored headers are not anticipated
    for now, so we can get away with a typedef for the one BluetoothDevice
    type we need.
  * libphosh: Include status-page-placeholder.h.
    PhoshStatusPagePlaceholder has bled into other publicly exported types
    from libphosh, so we need to make sure this is included. Elsewise
    libphosh-rs compile-time ABI tests fail, for example.

  [ Arun Mani J ]
  * subprojects: Sync libfeedback version with packaging.
    Let's use the same version everywhere

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Scrambled 777 ]
  * Update Hindi translation

 -- Guido Günther <agx@sigxcpu.org>  Thu, 15 Aug 2024 10:17:28 +0200

phosh (0.41.0~rc1) experimental; urgency=medium

  [ Teemu Ikonen ]
  * media-player: Add a label with track position and length.
    The 'Position' property is read every 1 s when the player is playing.
  * media-player: Add a ProgressBar below details button
  * media-player: Show box_pos_len only when MPRIS has Position and length

  [ Guido Günther ]
  * packaging: No need to set tests twice
  * subprojects: Use a wrap for libgnome-volume-control
  * subprojects: Update gvc.
    Update to 5f9768a2eac29c1ed56f1fbb449a77a3523683b6 to fix a crash
    with BT speakers
  * submodule: Use wrap for libcall-ui.
    This makes all subprojects consistent
  * subrojects: Update libcall-ui to 0.1.2.
    Pull in the build system improvements to avoid build warnings.
  * auth: Make async function names match the async/finish pattern.
  * audio-devices: Use gpointer instead of GvcMixerControl.
  * head: Prefix struct name.
  * build: Make gir warnings fatal
  * ci: Avoid check-doc.
    It trips onto all kinds of things and fail on both introspection and
    gi-docgen warnings no.
  * wifi-status-page: Mark more strings as translatable
  * settings: Mark "Notifications" as translatable
  * prompt: Only show when we got a request.
    So far we showed the prompt right away which led to some flicker when
    the UI elements were made visible and can also lead to an empty dialog
    when non of system_prompt_{password,confirm}_async are ever invoked.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1092
  * docs: Mention `gtk-builder-tool --simplify`
  * style: Drop unused osk-button class
  * wifi-status-page: Wrap text.
    This can easily overflow in translations
  * ci: Ensure build-deps are present when building dist tarball.
    Meson checks for available libraries so we need those.
  * check-license-header: Fail on too short header.
    We expect it to at least have one prelude, then copyright.
  * bt-info: Use g_connect_object.
    Less code.
  * bt-info: Only connect to enabled once
  * settings: Use an action to toggle Bluetooth.
    This allows us to use the same code on status page and quick setting
    and makes it available to plugins.
  * settings: Only apply margin to toplevel viewport.
    The current CSS would apply a wide margin to all viewports in settings
    but we only want it for the toplevel one that contains all the widgets
    but not for others like the ones in status pages.
  * settings: Use background color for all separators in settings.
    Otherwise they're hard to see.
  * status-page: Remove phosh-settings-list-box style class.
    This breaks the HdyPreferencesRow styles and we only want to use it for
    the sound list boxes not the status pages in quick settings.
  * bluetooth: Depend on gnome-bluetooth.
    We need to add the headers as they're currently not shipped upstream.
    We might bundle the library instead.
    This is from cccaaa7928c2b9195295d8c7dae80665b4b62c4d
  * bt-manager: Track connectable Bluetooth devices.
    We track connectable Bluetooth devices and add some properties based on
    that like the number of currently connected devices.
  * bt-info: Improve available information.
    If at least two devices are connected we print the number of connected
    devices. If a single device is connected we print it's info.
  * status-page: Add placeholder / empty state widget.
    Add a placeholder widget for the displaying the empty/disabled state in
    settings status pages. This is very similar to `HdyStatusPage` but we
    add a custom widget as we can't scale down the icons in GTK3 via CSS as
    -gtk-icon-size doesn't exist yet and -gtk-icon-scale scales the icon but
    doesn't shring the size allocations.
    This also helps to ease displaying empty states for list boxes as the
    `placeholder` there doesn't work well with advanced styling. See
    libhandy#468.
    This can be replaced with AdwStatusPage once we switch to GTK4.
  * status-page: Introduce page header bar and a footer.
    This avoids leaking parent widget details into the derived classes (like
    requiring a `packaging` `end`).
    The optional footer usually holds a button to open Settings. We use a
    `GtkBox` to place a single child. We'd use `GtkBin` but that is
    abstract, in GTK4 we'll use `AdwBin`.
    The header contains the back button and has a user defined title. One
    also get a user defined child widget.
  * wifi-status-page: Use page header.
    This uses the page header introduced in the previous commit.
  * wifi-status-page: Use StatusPagePlaceholder.
    We also remove the superfluous position packing.
  * wifi-status-page: Use wireless-disabled symbolic for disabled state.
    It's the icon meant for this state
  * settings: Add a Bluetooth status page.
    The status page lists the currently connected devices in a list box and
    allows to connect / disconnect them by activating the list box row.
  * bt-status-page: Hide enable button when there aren't any devices.
    While at that streamline the logic a bit by avoiding putting the `TRUE`
    branch first and using minimum scope for variables.
  * settings: Fix id of Bluetooth status page.
    Fixes: 5807fa273 ("settings: Add a Bluetooth status page")
  * settings: Return `NULL` when we return a pointer
  * settings: Drop nested stack.
    No need to have a separate stack for status pages. This just adds
    more size calculations when GTK lays out the widgets.
  * settings: Use g_timeout_add_once
  * status-page: Make a revealer.
    This allows us to use more vertical space
  * settings: Add handler for quick setting stack page changes.
    We will add more logic here soon.
  * settings: Do not reveal status pages when not shown.
    Don't reveal the status pages when the quick settings are
    visible. This ensures they don't take any vertical space ensuring
    we don't push down other elements in settings (like the media player
    or notifications) when there's e.g. a lot of Wi-Fi networks.
    We reveal the children individually as they might have different
    heights so we move down the other UI elements as little as possible
    when a status page is shown.
  * status-pages: Remove scrolled windows.
    They're not needed as the whole settings panel is scrollable
    and interact badly with the revealer.
    We could swap revealer and scrolled window but that's actually not
    necessary.
  * status-pages: Reindent ui files.
    Do this in a separate commit to ease review
  * settings: Use less top margin for notification empty state.
    This avoids the scroll bar even when we add more quick settings. To keep
    the empty state centered with fewer quick settings we valign centered.
  * settings: Move top margin from quick settings to the stack.
    This ensures the status page's top aligns with the top of the quick
    setting and we get a bit more "visual distance" between the sound
    slider and the status page.
  * feedback-manager: Ack libfeeback unstable API in meson.
    This avoids cluttering the code with multiple defines
  * main: Init libfeedback early.
    This moves all library inits to single place and avoids a
       end_notify_feedback: assertion 'lfb_is_initted ()' failed
    warning on startup. We can ignore all error handling as the feedback
    manager will try reinitialization later on anyway.
  * keyboard-events: Drop fallback for ancient phoc
  * feedback-manager: Allow to set profile
  * keyboard-events: Emit signal on keybinding press.
    Emit a signal when a subscribed keybinding is pressed. This allows other
    parts of the shell to perform additional activities on global
    keybindings (that possibly aren't even subscribed by Phosh itself).
  * calls-manager: Track incoming state.
    This allows to check if the active call is in incoming state.
    As with the rest of calls manager this will need some tweaking once
    calls handles multiple active calls.
  * build: Bump feedbackd dependency.
    We want 0.4.0 as only this does end running events on profile changes.
  * shell: Allow to silence the device on incoming calls.
    When the shell is locked and there's an incoming call pressing the
    button to lower the volume will put the device into silent mode.
    Bump copyright while at that as this didn't happen since some time.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/780
  * app-tracker: Log success at `debug` priority.
    Fixes: 1226ae949 ("app-tracker: Move launched processes to transient systemd scope")
  * screen-saver-manager: Send locked hint.
  * settings/brightness: Fix indent
  * settings/brightness: Make globals static.
    These are only meant for the current compilation module

  [ Arun Mani J ]
  * wifi-manager: Decouple hotspot check from icon.
    Since b3c8142a ("wifimanager: Track whether we're an active wifi
    hotspot") `update_icon` checked the value of `is-hotspot-master` as a side
    effect. This leads to the state not being updated when there was no
    active connection as in this case the check is never run.
    Fix this by moving the hotspot check before any icon updates making
    `update_icon` side effect free again.
  * wifi-manager: Clear SSID when connection is cleaned.
    We clean the `ssid` when the AP changes but we also need to clear it
    when our network device tracking the connection goes away.
  * wifi-network-row: Port to HdyActionRow
  * wifi-status-page: Add content style class
  * wifi-status-page: Set scrolling related properties
  * wifi-status-page: Merge placeholders to one
  * wifi-network-row: Simplify UI via gtk-builder-tool
  * wifi-status-page: Clean up code and simplify UI
    - Move headers to `wifi-status-page.c`.
    - Fix formatting in `wifi-status-page.c`.
    - Simplify UI via `gtk-builder-tool`.
  * mobile-data-quick-setting: Drop unused variables
  * wifi-manager: Rename connection callbacks.
    We rename connection activated and added-activated methods to prevent
    conflict with similar methods for hotspot.
  * wifi-manager: Extract hotspot check method.
    This will be used in further commits, so extract it out to avoid duplication.
  * wifi-manager: Add method to toggle hotspot
  * wifi-manager: Create hotspot connection if one doesn't exist
  * wifi-manager: Rename update methods
  * wifi-manager: Fix typo
  * wifi-manager: Add property `state`
  * wifi-status-page: Add turn off hotspot button
  * plugin-shell: Export Wi-Fi manager
  * build: Export Wi-Fi manager symbols
  * plugins: Add Wi-Fi hotspot quick setting

  [ Evangelos Ribeiro Tzaras ]
  * run: Export XDG_CURRENT_DESKTOP.
    Otherwise .desktop files with OnlyShowIn= might end up ignored.
  * keypad: Force left-to-right button layout.
    Real life keypads are the same for in RTL and LTR locales.
    Closes https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1086
    Modelled after similar change in libcall-ui
    https://gitlab.gnome.org/World/Phosh/libcall-ui/-/merge_requests/89
  * libcall-ui: Update to 0.1.3.
    Forces LTR text direction for keypad in the call display
  * polkit-auth-agent: Init autocleaned variable to NULL.
    While it isn't technically necessary here because of the assignment
    that always takes place a couple lines below, it deviates from the pattern
    established throughout the codebase and requires closer inspection
    increasing mental load.
  * polkit-auth-agent: Register asynchronously

  [ Cédric Bellegarde ]
  * settings: Block value changed handler id.
    When brightness is updated by gnome-settings-daemon DBus API, ignore value-changed signal.
    Otherwise, we will send value back to GSD.
    Fix #1093

  [ Xiao Pan ]
  * docs: Update URL to GTK inspector documentation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Antonio Marin ]
  * Update Romanian translation

  [ Martin ]
  * Update Slovenian translation

  [ Artur S0 ]
  * Update Russian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Scrambled 777 ]
  * Update Hindi translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Balázs Úr ]
  * Update Hungarian translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

 -- Guido Günther <agx@sigxcpu.org>  Thu, 08 Aug 2024 10:58:30 +0200

phosh (0.40.0) experimental; urgency=medium

  [ Guido Günther ]
  * build: Install headers and shared lib for Rust binding generation.
    This allows to install headers, pkgconfig file and shared library to
    create Rust bindings.
    We create a unified header pulling in (almost) all headers so they can
    be consumed by just including libphosh.h freeing binding generators from
    having to keep up with added/removed headers.
    As installing these files is used for binding generation only atm we
    make it depend on a new 'binding-lib' meson options.
    These files are not (yet) meant as public interface so if using these
    make sure to bundle libphosh with your project.
  * ci: Trigger libphosh-rs build.
    We only do this on commits to RUST_BINDINGS_BRANCH (default main) and if
    src/ changes.
    The branch triggered downstream is also RUST_BINDINGS_BRANCH. This makes
    it simple to work on pipeline changes.
  * resources: Sort ui files alphabetically
  * wwan-mm: Add present and enabled properties to get_property.
    Fixes 1a75bcb48 ("wwan-mm: Handle 'enabled' property")
    Fixes 3a0e8eab6 ("wwan: Report modem presence")
  * wwan-mm: Modernize property change emission.
    Use the faster by_pspec variant. Shorten property names while at that.
  * settings: Drop superfluous wifi_status_page
  * settings: Use property binding for wifi's has-status
  * settings: Use explicit notify for on-lockscreen.
    This toggles multiple things so let's reduce the work done here.
  * settings: Drop on_shell_locked.
    We can do the work when setting the property.
  * wifi-manager: Use automatic cleanup.
    This way we don't need to cast away `const` either.
  * wifi-manager: Drop len variable.
    Using ap_cnx->len directly make it a tiny bit more obvious which
    length were' looking at.
  * main: Instantiate shell after the needed objects.
    The shells object construction needs the Wayland object and the
    background manager.
    Fixes: 1bb5c8c63 ("shell: Allow shell singleton to be overridden")
  * service: Adjust oom score.
    This avoids the shell getting killed early in tight memory scenarios.
    While at that tweak the restart behavior.
  * session: Drop rootston.ini fallback.
    This is from long gone times
  * treewide: Drop support for --builtin session fallback.
    Always use systemd as gnome 46's gnome-session doesn't support anything
    else. Thanks dhjg2000 for figuring this out
  * build: Remove thumbnail from tool sources.
    We stub it so it should be in the classes not available to tools.
  * tests: Move stubs into their own lib.
    Preventing the rebuild of the stub sources for all tools and unit
    tests brings down the number of targets to build by another 25%
    (1184 before vs 885 now).
  * tests: Test command line options.
    We can test the options that exit early making sure they don't break
    accidentally.
  * wwan-manager: Split out wwan connection type comparison.
    Will be used in a follow up commit
  * wwan-manager: Add helper to (de)activate a data connection.
    For that we add a helper to track the last active connection. This
    allows us to check if there is a data connection available at all and
    which one is the last active.
  * data: Add mobile data icons.
    Self sketeched and optimized with svgo.
  * plugins: Add mobile data toggle.
    This allows to toggle mobile data on/off. The plugin is marked inactive
    if thre's no mobile data connection configured.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/691
  * data: Use mobi domain for override file
  * data: Make all overrides phosh specific
  * data: Unlock SIM by default
  * data: Disable ambient light adjustments by default.
    The current algorithm confuses people on phones. We want to tweak that
    in g-s-d before enabling it by default.
  * data: Let g-s-d do nothing on power button press.
    Phosh handles it.
  * data: Add Firefox ESR and TextEditor to adaptive apps.
    We assume that FF uses mobileconfig and TextEditor adapts nicely
  * data: Set default idle-delay to 60 seconds.
    It's more suitable than the default 5 minutes.
  * background-manager: Don't try to get background for zero size.
    Otherwise we crash on gnome_bg_slide_show_get_slide on e.g. 0 width or
    height.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1069
  * background: Avoid update when the layer surface isn't configured yet.
    Otherwise we might feed bogus values to GnomeBg.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1069
    Tested-by: Boud Roukema
  * power-menu-manager: Sort actions alphabetically
  * power-menu-manager: Listen for locked instead of shell state changes.
    This triggers less often.
  * power-menu: Add a property to show a suspend button.
    If `TRUE` the suspend button is used. Otherwise the `power off` button
    is shown.
  * power-menu-manager: Allow to suspend from power menu.
    If suspend is allowed we show the suspend action rather then disabling
    the power off button.
    This makes the power button menu more useful on the lock screen. And
    since it's a non-destructive action there's no issue with allowing it.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/990
  * top-panel: Don't show lock and menu button when locked.
    They have no purpose and are hence thus confusing.
  * screen-saver-manager: Half the long press timeout.
    This should still be long enough to not trigger it accidentally.
  * screen-saver-manager: Emit button-pressed feedback on long press.
    This gives some haptic feedback when the even triggers
  * screenshot-manager: Wire up screenshot keybinding.
    Defaults to <shift><printscreen>
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/931
  * shell-manager: Simplify version setting.
    No need to override the r/o property. We just need to set it once.
  * shell-manager: Implement OverviewActive property.
    This implements another property from that interface and helps
    https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1068
  * main: Use G_NORETURN. Makes clang happy
  * main: Use automatic cleanup for err
  * tools/custom-quick-setting: Accept list of plugins to show.
    This allows to skip plugins the e.g. need the shell singleton
  * tools/custom-quick-setting: Use newline when printing plugin name
  * tools/custom-quick-setting: Top align flowbox.
    This avoids vexpanding the quick settings itself.
  * plugins/dark-mode: Add and use dark-mode-disabled icon
  * app-tracker: Always extract pid
  * app-tracker: Add cancellable.
    We do this with other DBus calls, so do the same here too.
  * app-tracker: Move launched processes to transient systemd scope.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/963
  * launcher-item: Add has-data property.
    This is TRUE when count or progress should be shown. It will be used to
    toggle the visibility of the box displaying the data.
  * launcher-row: Use width-request for status information.
    With that we can align to the row's end as otherwise the items
    look out of place.
    In order to not truncate longer descriptions we only make the status
    information box visible when needed.
  * docs: Add note about DBus helpers in the tools/ directory
  * tests: Add mock for ModemManager and NetworkManager.
    This is helpful to test mobile data and other features on devices
    without a modem
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1051
  * tests: Add checks for python helpers.
    This will be reused when we use python based tests that run the mocks.
    We use black and ruff or flake8 so devs have some leeway (e.g. ruff
    isn't in Debian testing atm).
  * doc: Mention NetworkManager and ModemManager DBus mock.
    This way it's hopefully found.
  * settings: Set default sound theme.
    When installed this gives us improved sounds for incoming messages and
    calls.
  * plugins/dark-mode: Update icons.
    The moon is overloaded and dark mode isn't only for the night.
    This dark mode icon was suggested by Sam Hewitt.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1071
  * media-player: Don't dim unsensitive button.
    Fixes: 042c0f464 ("Add media-player widget") which got broken by
           d79a379d5 ("style: Unified the button styles")
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1073
  * libphosh: Drop wwan-backend.h.
    Fixes: bdcb925c6 ("enums: Introduce single header file to gather all enums")
  * build: Prefix library include dir.
    Use a lib_ prefix to distinguish this form paths we use for headers used
    by plugins and tools that supplement the actual shell.
  * build: Add dependency on phosh-settings.
    We want the header (and don't want to duplicate it)
  * build: Set a soname for the shared library.
    We use the project version underscored dropping micro revisions.
  * build: Use a relative path to the enum headers.
  * ci: Check 'meson dist'
    We've been hitting tiny nits before release ever so often. Avoid these.

  [ Sam Day ]
  * shell: Make PhoshShell a derivable type.
    Since this type is meant to be consumed by downstream libphosh
    consumers, a bunch of vtable space is reserved for future expansion.
  * shell: Allow shell singleton to be overridden.
    This follows the pattern first established with
    phosh_wall_clock_set_default.
    This allows libphosh consumers to override the default shell singleton
    with a custom subclass.
  * lockscreen: Make PhoshLockscreen a derivable type.
    Since this type is meant to be consumed by downstream libphosh
    consumers, a bunch of vtable space is reserved for future expansion.
  * lockscreen: Support construction of custom type
    phosh_lockscreen_new now requires a GType parameter that should be a
    type that derives from PhoshLockscreen (or is PhoshLockscreen itself).
    This functionality is not fully exposed yet. PhoshLockscreenManager is
    just passing a hardcoded PHOSH_TYPE_LOCKSCREEN to phosh_lockscreen_new.
  * shell: Allow lockscreen type to be customized.
    A virtual function is added to PhoshShell to determine which lockscreen
    type should be constructed. PhoshLockscreenManager consumes this vfunc
    via phosh_shell_get_lockscreen_type.
    This change makes it possible for libphosh consumers to use a custom
    lockscreen, exposed through their custom shell type.
  * ci: Add "startup test" job.
    This job runs the main app entry point, and confirms that the shell
    startup signal handler is reached.

  [ Artur S0 ]
  * Update Russian translation

  [ Scrambled 777 ]
  * Update Hindi translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Martin ]
  * Update Slovenian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Teemu Ikonen ]
  * plugins: Add dark mode toggle.
    Toggles the "org.gnome.desktop.interface.color-scheme" enum between
    'default' and 'prefer-dark' with a quick setting button.

  [ Antonio Marin ]
  * Update Romanian translation

  [ Arun Mani J ]
  * app-grid-folder-button: Force 16px as icon size.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1072
  * app-grid-folder-button: Force pixel size of 24px.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1081

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Gotam Gorabh ]
  * enums: Introduce single header file to gather all enums.
    The aim is to allow phosh-mobile-settings to use these to map GSettngs values.
    This will bring all the enums into a single header file to tackle duplicacy as well.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1036

 -- Guido Günther <agx@sigxcpu.org>  Mon, 24 Jun 2024 13:38:32 +0200

phosh (0.39.0) experimental; urgency=medium

  [ Guido Günther ]
  * power-menu-manager: Remove unused settings variable.
    Fixes: 988240d3a ("Add power-dialog and manager")
  * build: Drop `lib` when looking for libsoup via find_library()
    Silences a meson warning
  * build: Sort dependencies alphabetically.
    Sort by meson variable name.
  * packaging: Allow to fetch meson wraps.
    This is needed as long as gmobile isn't in Debian
  * build: Allow to use shared gmobile
  * upcoming-events: Adjust to gmobile API change
  * build: Use wrap for gmobile.
    We prefer the shared gmobile so no need to ship as submodule
  * animation: Remove trailing whitespace
  * shell-manager: Prefix action mode enum
  * wifi-info: Fix property description
  * folder-info: Fix property description.
    We ought to end with a ':'
  * util: Fix parameter name.
    Let it match the doc string
  * monitor-manager: Add docstrings.
    This gets rid of the missing transfer annotation warnings
  * notify-manager: Make defines private or prefix properly
  * shell-manager: Prefix keybinding flags
  * app-auth-prompt: Properly namespace CHOICES_FORMAT
  * build: Drop contrib/shell-network-agent.h from list of sources.
    This makes sure it isn't exposed to gir generation and we don't need
    it's doc as it's in contrib/ anyway.
  * build: Add gcr-3 to list of gir includes.
    Helps to resolve GcrSystemPrompter
  * plugin-loader: Add missing transfer annotations
  * audio-device-row: Add missing transfer annotation
  * system-prompter: Add transfer annotations
  * treewide: Mark some functions as not introspectable.
    They still show up in the docs.
  * ci: Update shared files.
    Use files from meta-phosh as of 240dfc8825640041f5b47a207e9339b9c6365a53
  * folder-info: Test locating and parsing .directory files too
  * folder-info: Test app-info interface
  * folder-info: Test app-infos property getter
  * notifications: Don't glue timestamp label together.
    Rather use full translatable strings that allow translators to e.g.
    handle different plural forms.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/785
  * timestamp-label: Fix translator comment for hours.
    Fixes: a09453126 ("notifications: Don't glue timestamp label together")
    Thanks to Anders Jonsson
  * util: Drop support for glib < 2.76.
    We bumped the minimal requirement in
       decc80c13 ("build: Bump glib to 2.76")
    Glib 2.78 is in Debian stable.
  * audio-device: Remove pulseaudio.h from header.
    This trips up the gir scanner and isn't needed
  * build: Acknowledge that gmobile is unstable API.
    No need to do it in every source file using it.
  * treewide: Use gm_str_is_null_or_empty
  * util: Drop STR_IS_NULL_OR_EMPTY.
    We have it in gmobile.h now
  * check-doc: Tighten expression and modernize.
    Get this in sync with phoc and reduce the number of allowed patterns
  * data: Allow gnome-clocks to override the feedback level.
    This allows alarms to trigger even in silent mode
  * util: Test the uri_to_pixbuf for broken URLs too
  * tests: Add some metadata to the mpris test.
    This way we validate long titles and image URLs
  * treewide: Drop config.h usage.
    We dropped them a while back but they creep back in when polishing
    ancient MRs.
    Fixes: 59d415626 ("Drop remaining users of config.h")
  * tests/screenshots: Use tab navigation to trigger the emergency calls menu.
    The key combinations break with locale (and also when we use fading
    labels which currently don't support use_underline)
  * power-menu: Don't apply style from the emergency menu.
    There are two emergency menu buttons. One in the power menu and one to
    initiate the call in the emergency call menu. We only want the small
    font size applied to the later one.
    Fixes: dee478524 ("Add emergency menu system modal dialog")
  * power-menu: Use fading label.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1042
  * ci: Drop 'gtk' from doc build. We're using gi-docgen since some time
  * ci: Speed up doc build. No need for tests or tools here
  * ci: Run doc-check
  * ci: Use updated images
  * wwan-info: Use correct base class as parent.
    Fixes: ca1e70a95 ("Wwaninfo: Use StatusIcon base class")
  * plugins/quicksettings: Set default icon-size.
    This makes it match the other quick settings.
  * monitor-manager: Add getter for night-light-supported property.
    This makes is simpler for plugins to get the value independent
    of future class hierarchy changes.
  * shell: Make monitor manager available to plugins.
    The night light plugin wants to know if night light support is
    available. Other plugins might e.g. want to track the number of outputs
    or similar in the future.
  * plugins: Add night light toggle.
    This quick settings enabled/disabled automatic night light. The setting
    is disabled when no monitor is night light capable.
  * build: Only override libsoup dependency when needed.
    The next libsoup version will ship our fix as
    https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/394
    got applied.
  * top-panel: Don't init state twice
  * build: Expand include path.
    We add the subdirectories to the include path as we want e.g.
    mkenums_simple to work out of the box (which uses the header's base
    name) and we don't want clashing file names in subdirectories anyway.
  * build: Simplify enum type generation.
    Let's do away with the double accounting of headers.
  * top-panel: Export state as property.
    We have the enum and the getter already so let's make it
    simple to track changes.
  * shell: Track settings shell state too
    `PhoshShellState` has a `Settings` flag but so far we never set it.
    Augments: 59c8074c9 ("home: Update PhoshShellState")
  * top-panel: Set initial shell state to unfolded.
    This is an artifact of the fact that the drag surface code needs some
    time to wiggle the surface into place (which we want to fix on the
    compositor side). Once that is fixed we can then revert this patch.
  * layout-manager: Return min padding in non-device mode.
    If we don't want automatic layout based on device information we should
    return the minimal padding rather than 0 as otherwise elements will be
    too close to the screen edge.
    While at that make it simpler to debug such situations.
    Fixes: 474b07f90 ("layout-manager: Allow to query rounded corner information")
  * layout-manager: Use min padding with zero radius.
    A radius of zero means that there's no value present in the data.
    This affect devices that have a panel information but no border radius
    specified (like e.g. the Librem 5).
    Fixes: 474b07f90 ("layout-manager: Allow to query rounded corner information")
  * check-doc: Allow more files to raise DBus related gir warnings.
    It's not a new warning but depending on compilation order different files
    raise it.
  * build: Split Wayland headers and sources
  * build: Ensure plugins see the generated Wayland protocols.
  * build: Separate generated sources and headers.
    This avoids generating the C files multiple times reducing the number of
    compilation units significantly.
    This brings down the number of steps during the ci build from 3439 to
    1227 which build >60% less now.
  * wall-clock: Make it a derivable class
  * wall-clock: Allow to override wall clock.
    Instead of having the mocked time within the production class allow to
    override the relevant methods. The clock always returning a faked time
    will uses this and will be added back in a follow up commit.
    This will allow us to use another implementation in the tests
  * wall-clock: Allow to format GDateTimes.
    We simply wrap GnomeWallClocks functionality.
  * tests: Add back a mocked clock that always returns constant time
  * tests: Honor clock-format and clock-show-date GSettings.
    These are relevant for screenshots.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1056
  * emergency-calls-manager: Don't leak name owner
    g_dbus_proxy_get_name_owner() is transfer: full
  * shell-manager: Don't leak the variant dict
  * portal-access-manager: Don't leak icon
  * ci: Update images.
    We need to adjust some package names to the recent t64 transition in
    Debian.
    We fetch gcovr from Debian sid to work around the broken gcovr in
    trixie. This can be reverted once gcovr migrated.
  * ci: Use GNOME mirror for ci-fairy.
    This reduces dependencies to external systems.
    The mirror is slightly behind so we use an older commit but the ci-fairy
    template is identical.
  * monitor: Don't use anonymous structs. They confuse Rusts gir
  * treewide: Add paths to dbus includes.
    Most of the files did this but not all. This simplifies the pkgconfig
    file as we don't need to add extra include paths.
  * treewide: Split sources and headers.
    We did this for the auto generated headers recently, let the rest
    follow now.
  * build: Fold in layer-surface sources.
    We had those split out to make it more obvious what to grab for e.g.
    squeekboard, phosh-osk-stub, etc but that's not needed anymore nowadays.
  * build: Introduce private headers that aren't visible in gir.
    This will allow us to split public and private headers more clearly in
    the future.
    We add files from contrib/ as don't have a matching prefix. We also add
    it's users to avoid unknown type warnings in gir. This also drops the
    classes from the docs.
  * meson: Update libsoup dependency version.
    There's now a libsoup release (3.5.1) containing or fix

  [ Arun Mani J ]
  * util: Add phosh_util_matches_app_info.
    Extracted from `app-grid.c` to be reused in folders.
  * folder-info: Add `PhoshFolderInfo`
    `PhoshFolderInfo` tracks the applications in a folder.
    It implements some minimal `GAppInfo` virtual methods as per requirement.
  * app-list-model: Group apps by folder.
    We use `PhoshFolderInfo` to group apps by folders. To do this, we
    prepend the folder item and remove all the apps belonging to the folder
    from the `GList`.
    We also monitor the folders available.
  * favorite-list-model: Ignore `PhoshFolderInfo` in favorite check
    `phosh_favorite_list_model_is_favorite` is used in the app grid to check
    if the app must be displayed.
    We return `FALSE` for `PhoshFolderInfo`.
  * app-grid-base-button: Add `PhoshAppGridBaseButton`
    The base class to share UI between `PhoshAppGridFolderButton` and
    `PhoshAppGridButton`.
  * app-grid-button: Port to PhoshAppGridBaseButton
  * app-grid-folder-button: Add `PhoshAppGridFolderButton`
    `PhoshAppGridFolderButton` is used to display the apps in
    `PhoshFolderInfo`. We display them as images of size `DND` in a 2x2 grid.
  * app-grid: Add support for folders.
    We add a stack page which is shown when a folder needs to be shown.
    Currently the folder is insensitive to searching.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/868
  * app-grid: Reindent `app-grid.ui`
    Fix up indentation in a separate commit to help reviewing the previous
    bits.
  * app-grid: Use `STR_IS_NULL_OR_EMPTY` macro.
    Replace empty or null string checks with the macro.
  * app-grid: Use `phosh_util_matches_app_info`
    We replace the search logic with the function from utilities to avoid
    duplication.
  * app-grid: Clean up `app-grid.ui`
    By this commit we:
    - Normalize property names to use hyphen instead of underscore.
    - Remove setting property values to their defaults.
  * folder-info: Add folders schema-id to the header
  * app-list-model: Remove def of folders-schema-id
  * folder-info: Reload apps when settings changes.
    Previously, whenever GSettings' `app` key changes, we emit
    `apps-changed` signal, so that app-grid and other dependents can regroup
    apps if needed.
    This had one issue. Since we don't reflect the changes inside
    folder-info, if the folder is open, then the user doesn't see the new
    apps. They had to close and reopen the folder, to see new apps.
    In this commit, we reload the apps whenever the key changes in-addition
    to signal emission.
  * app-grid-folder-button: Set height to 64.
    This is the height used by app-grid-button's image. Without this, if the
    folders are the only buttons in grid, then they appear "shrunken".
  * app-grid: Find the valid button to focus by loop.
    Previously we focused either the last button or the second last button.
    But this resulted in issues when multiple apps are removed. So to be on
    safer side, find the valid button to focus by looping in
    reverse. (Assuming that when main grid is shown again, it has at least
    one button.)
  * app-grid: Fix key-press stealing on open folder
  * app-grid: Align the back button to center
  * app-grid: Rename folder label to folder_name_label.
    Keeps the name consistent with its purpose.
  * app-grid-button: Add folder-info property.
    This property can used to indicate that the app-grid-button is part of a
    folder. Currently keeping it `write-only` to keep API simple.
  * app-grid: Bind folder-info to buttons in folder
  * folder-info: Add ability to set folder name.
    This method acts as a proxy to the GSettings interface.
  * app-grid: Add ability to edit folder names.
    We add an entry that is shown when the edit button is toggled to active. When user
    toggles the button again, the entry's contents are set as folder name.
    Pressing Enter (or any activation) with the entry focused is same as
    toggling button again.
    Closing the folder (by pressing Escape or back-button or gesture) or
    setting the entry to empty string doesn't do any changes, that is,
    cancels the edit.
  * util: Add methods to modify string array
  * folder-info: Add ability to remove apps
  * folder-info: Add ability to add apps
  * app-grid-button: Add action to remove from folder.
    This action is enabled only when the button has `folder-info` property
    set. It is currently shown in the context-menu alongside other actions.
  * app-grid-button: Add action to add to folder
  * app-grid-button: Remove a folder when empty.
    Remove a folder from `folder-children` if it is empty.
  * settings: Request Wi-Fi scan on status page reveal.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1058

  [ Sam Day ]
  * build: Add option to build introspection libs
  * build: Add NM-1.0 to phosh GIR includes
  * build: Include plugin-shell.h in libphosh_sources.
    This fixes many "Unresolved type: *PhoshShell" GIR errors.
    Fixes: 505a5c8cb ("shell: Split out methods available to plugins")
  * shell: Fix/add docstrings for all manager getters.
    This fixes the various "Missing (transfer) annotation" complaints from
    g-ir-scanner.
  * ci: Add screenshot-diff requirements to image
  * app-grid: Collapse favorites on init.
    If there's no favorites, the favorites_changed callback is never fired,
    which means there's an empty revealer (and separator) that will suddenly
    collapse when a search is performed.
  * wall-clock: Introduce PhoshWallClock.
    This class wraps around two different GnomeWallClocks, one that provides
    the time-only view of wall-clock time, and one that provides the full
    (locale-specific) view of the time (including date).
    Both the lockscreen and top-panel are updated to use this new class.
  * wall-clock: Absorb phoc_util_local_date.
    It is now phosh_wall_clock_local_date and requires a ref to a
    PhoshWallClock.
    Conveniently, the only places this method is being called is in signal
    handlers that already have a ref to PWC.
  * tests/screenshots: CSS override for animations
  * ci: Output testlog artifact from screenshots job
  * ci: Set G_MESSAGES_DEBUG=all for screenshots job
  * feedback-manager: Warn about missing DBus svc once
  * tests/screenshots: Robust waits on shell state.
    Instead of relying solely on arbitrary sleep()s to ensure that the shell
    is in the state we want before taking a screenshot, watch for changes to
    PhoshShellStateFlags.

  [ Artur S0 ]
  * Update Russian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Martin ]
  * Update Slovenian translation

  [ Andika Triwidada ]
  * Update Indonesian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Andi Chandler ]
  * Update British English translation

  [ Yaron Shahrabani ]
  * Update Hebrew translation

  [ Quentin PAGÈS ]
  * Update Occitan translation

  [ Scrambled 777 ]
  * Update Hindi translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 12 May 2024 13:41:38 +0200

phosh (0.38.0) experimental; urgency=medium


  [ Guido Günther ]
  * ci: Use consistent image version
  * build: Update base image version in Dockerfile
  * ci: Update images
  * osd-window: Use G_PARAM_STATIC_STRINGS.
    Fixes: 12983abe1 ("Add PhoshOsdWindow")
  * osd-window: Hide level bar when level is < 0.0.
    There's osd messages that don't need a bar (e.g. "Not available")
  * shell-manager: Check if we got a level
  * ui: Move width request to level-bar.
    If we just have an icon we don't want to allocate the
    space for the level bar.
  * osd: Only show box if one of it's elements is present.
    This makes sure the icon centers properly if only an icon is shown.
  * osd-window: Use a larger icon when it's the only OSD element.
    Otherwise it can be hard to spot.
  * monitor: Only use wl_output_done.
    Since xdg-output version 3 this is possible.
    See wayland-protocols 962dd535372c8e4681374c23d2603cbe06cd7031
  * background: Use getters.
    Easier to read and avoids g_object_get() round trip
  * background-manager: Refresh the background on monitor configuration changes.
    Otherwise we keep using the old pixmap which likely doesn't fit the
    current scale or screen orientation.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1035
  * background: Exit early if layer surface isn't fully configured yet.
    We can't query width or height if configuration isn't done.
  * session: Only append session manager if supported by gnome-session
    gnome-session dropped support for --builtin and --systemd. So don't
    append that argument if it doesn't show up in gnome-session's help
    output.
  * build: Use systemd session manager by default
    gnome-session dropped support for the builtin manager in 46.
  * suspend-manger: No need to print error message twice
    phosh_dbus_service_error_warn handles that for us.
  * launcher-entry-manager: New object to handle launcher-entry protocol.
    Listens for property updates.
  * shell: Spawn launcher-entry-manager.
    Spawn the manager from the shell and add accessors so other
    parts can use it.
  * launcher-box: Introduce launcher-item.
    This will allow us to track an entries state
  * launcher-box: Use launcher-item.
    No new functionality for now
  * launcher-item: Add properties to track progress and count
  * launcher-box: Display progress and count.
    We get the values from the launcher manager.
  * top-panel: Properly name top bar height.
    The height is the one of the bar not the panel (which is the bar plus
    the settings)
  * top-panel: Provide default icon size and min padding
  * layout-manager: Allow to query rounded corner information.
    Based on the panel height and the icon size provide the shift in pixels
    from the screen edge to not occlude an icon.
  * top-panel: Take rounded corners into account.
    Shift icons more to the center if the rounded corners would occlude UI
    elements.
    We currently don't take into account that the area for the clock
    placement gets slightly smaller due to this too.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1018
  * build: Add custom dependency for libsoup
    libsoup sets `--export-dynamic` unconditionally (See
    https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/394).
    Since the dependencies are added past link_args we can't override it
    with `--no-export-dynamic` so rather work around this by using a custom
    dependency.

  [ Jesús Higueras ]
  * build: Add dependency on libsoup. This will be used to decode base64 URIs.
  * util: Add helper to decode data: image URIs
  * media-player: Use phosh_util_data_uri_to_pixbuf helper for cover art decoding

  [ Daniel Rusek ]
  * plugins: Add missing dot to the Comment field of launcher box lockscreen
    plugin & switch to imperative form
  * Update Czech translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Artur S0 ]
  * Update Russian translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Martin ]
  * Update Slovenian translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Artur S0 ]
  * Update Russian translation

 -- Guido Günther <agx@sigxcpu.org>  Wed, 03 Apr 2024 20:27:49 +0200

phosh (0.37.0) experimental; urgency=medium

  [ Arun Mani J ]
  * wifi-network: Create PhoshWifiNetwork class.
    This object is used to group access points based on their SSID,
    encryption type and mode.
  * util: Add function to get Wi-Fi icon name.
    We add a new function `phosh_util_get_icon_by_wifi_strength` which can
    be used to get the name of the icon corresponding to the strength and
    connection status.
  * wifi-manager: Track Wi-Fi networks.
    We track the Wi-Fi networks in the Wi-Fi Manager. Only the access points
    with a valid SSID is tracked. Also we define two new functions to
    connect to an access point and request scan.
  * wifi-network-row: Create PhoshWifiNetworkRow class.
    A Wi-Fi network row represents a `PhoshWifiNetwork`. It tracks the
    strength as well as SSID and displays them as an icon and label respectively.
  * status-page: Create PhoshStatusPage class.
    A status page is used in the quick settings to display more information
    about a setting. For example, Wi-Fi quick setting can use it to show
    available networks.
    It must be subclassed accordingly and the header widget must be set as needed.
  * wifi-status-page: Create PhoshWifiStatusPage class.
    The status page for Wi-Fi displays Wi-Fi network rows.
  * quick-setting: Allow to show status page
    `has-status` is a boolean property that displays a `go-next` image
    when true. This is used to indicate that long pressing the quick setting
    opens up a status page.
  * settings: Show Wi-Fi status page on long pressing Wi-Fi quick setting.
    By this commit we add WifiStatusPage as a child to a stack. The flowbox
    of PhoshQuickSettings is now a child of this stack. When a quick setting
    is long pressed, the status page can be shown.
    We also add a new action to close the status page.
  * quick-setting: Add `present` property.
    The `present` property is used to indicate if the quick setting is
    available. Useful for hardware or mode dependent toggles.
  * build: Export symbols for quick setting plugins
  * build: Add option to build quick setting plugins
  * plugins: Add support for quick setting plugins.
    We add new extension points for quick setting and quick setting
    preferences.
    Then we adjust the build files to account for quick setting plugins.
  * plugin: Add extension point for quick setting
  * schema: Add quick-settings key to plugins schema
  * settings: Add support for custom quick settings
  * plugins: Add a simple custom quick setting
  * tools: Add widget to test custom quick settings
  * plugins: Drop G_LOG_DOMAIN in Calendar plugin
  * tests: Load quick-setting plugins

  [ Guido Günther ]
  * test-take-screenshots: Take the display out of power save mode.
    When locking the screen the output is put into power saving mode. To
    wake it up again the ScreenSaverManager sends "WakeupScreen" which is
    caught by g-s-d.  However we can't assume g-s-d to be available in the
    tests so make sure the screen is powered as we can otherwise not take
    any screenshots.
  * wifi-manager: Use consistent filename.
    PhoshWifiManager was one of phosh's first classes and hence lacks the '-'
    where methods have a '_'. Fix this up for consistency reasons.
  * wifi-manager: Rename cleanup_device.
    We have a device tracking wifi networks and one tracking the active
    connection. Make it obvious which one is being cleaned up from the
    function name.
  * wifi-manager: Rename check_device.
    We have a device tracking wifi networks and one tracking the active
    connection. Make it obvious which one is being cleaned up from the
    function name.
  * wifi-manager: Use Wi-Fi consistently.
    Use the spelling introduced in
       9e39af9f7 ("wifi-manager: Track Wi-Fi networks")
    consistently.
  * treewide: Use consistent Wi-Fi spelling.
    Use the official spelling. See previous commit for details.
  * wifi-manager: Take a reference in dev.
    We take a reference the Wi-Fi device as we otherwise race
    with nmclient on shutdown.
    This fixes the CI tests that otherwise occasionally hit
    a critical on shutdown.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1025
  * wifi-manager: Fix indent.
    This fixes some old heritage and makes the style check mostly happy.
  * wifi-info: Use consistent file names.
    We separate words with '-' in the filename since ages.
  * wifi-status-page: Avoid underscore in property names.
    We prefer dash ('-')
  * wifi-status-page: Drop superfluous can-focus properties
  * wifi-status-page: Disable selection.
    We don't want to select the listbox row but merely activate it. This
    avoids the blue highlighting of the activated row.
  * status-page: Add a style class.
    This allows styling status pages individually. Currently unused but
    better to introduce it now as adding these later might break other
    selectors.
  * audio-settings: Disable listbox selection.
    Otherwise we only want activation. This went unnoticed as we had
    audio-device-row style class set which papered over it accidentally
    style wise.
  * audio-device-row: Drop css class name.
    Otherwise the default style from listbox rows doesn't apply
  * settings: Style list boxes more consistently.
    Use a blue border for focus and make all icons symbolic. Eventually we
    want to apply this to more of phosh's list boxes but as e.g.
    notifications are list boxes too this requires more work upfrong.
  * wifi-network-row: Drop symbolic suffix.
    Allow settings-list-box icons are symbolic per CSS
  * manager: Set name for idle callback
  * shell: Name idle callbacks
  * app-tracker: Name idle callback
  * connectivity-info: Name idle callback
  * monitor-manager: Name idle callback
  * screen-saver-manager: Name idle callback
  * status-icon: Name idle callback
  * swipe-away-bin: Name idle callback
  * lockscreen: Name timers
  * main: Namer timer
  * timestamp-label: Name timer
  * screen-saver-manager: Name timer
  * shell: Name timer
  * screen-saver-manager: Add G_{BEGIN,END}_DECLS
  * run_tools: Allow to override log domains
  * build: Simplify libs.
    We build a static lib for use with the phosh binaries, tests, etc and a
    dynamic one for the tests but don't need an extra dependency.
    Both libs use a common set of headers and if we link the main library we
    don't need to link with tools too.
  * plugins: Only use list-model headers.
    Don't build the C files too. It's not needed as we can pull them from
    phosh.
  * build: Limit symbols exported from phosh
  * build: Unify plugin header dependencies.
    Make sure the plugins have a proper dependency on the headers and know
    their paths. Since some of them are generated the build might fail
    otherwise.
    While at that make sure that all plugins use `plugin_dep` as common
    dependency.
  * tools: Add tool to verify exported symbols.
    We want to make sure we don't leak all symbols to plugins
  * tools: Make sure widget-box has listmodel
  * plugins: Use dependency variables.
    We initially used extra 'dependency()' to ease copy pasting for out of
    tree plugin but since most plugins are in tree we can simplify this.
  * testlib: Fix argument name
  * main: Indicate readiness.
    This makes it simpler to see from the logs if shell startup worked as
    expected.
  * shell: Simplify comment
  * shell: Add transfer annotation for get_primary_monitor()
  * shell: Add transfer annotation to get_builtin_monitor()
  * background-manager: No need to sink ref.
    It's a toplevel.
  * screensaver-manager: Avoid warning when op was cancelled.
    It's an async operation, not doing so might break the tests.
  * main: Instantiate background cache
  * tests/shell: Process events until idle.
    Since the background manager will move it's setup in the idle callbacks
    we need to process all pending events as otherwise it's hasn't been
    created when the tests run.
  * background-image: New object to hold a async loaded image.
    This allows us to have an object that loads fully async by moving the
    load operation into a thread.
  * background-cache: Add cache for loaded background images.
    The cache can load image async. When fetching an image the caller is
    notified via the `image-present`.
  * util: Add file equal check.
    This is identical to g_file_equal() but handles `NULL` gracefully.
  * background: Load images async.
    Instead of handling loading in the background (and potentially blocking
    drawing) load them async. For that we move the settings handling into
    the background manager (which also handles clearing the cache on
    settings changes).
    As the background now calls back into the background-manager we finish
    background-manager's setup in an idle callback to ensure the background
    -manager is fully up when the background needs it.
    This simplifies the background handling as the background-manager no
    longer needs to be concerned with the details of the layer surface.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/447
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/910
  * background: Drop unneeded scale.
    This was introduced in
    540c85c83 ("background: Scale by fractional output scale")
    to handle the lack of fractional scale handling in
    phosh_shell_get_usable_area() but that was fixed in
    1b24ca54c ("shell: Use fractional scale for phosh_shell_get_usable_area too")
    This helps to decouple PhoshBackground from PhoshBackgroundManager.
  * background-manager: Select dark wallpaper when available.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/743
  * build: Disable cast-align checks for clang.
    These just add to the noise. This is similar to what we did for phoc
    recently.
  * treewide: Drop some unused variables.
    Spotted by clang
  * build: Don't use pointer for polkit check.
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1023
  * tests/take-screenshots: Use milli second timer.
    This allows us to use shorter waits
  * tests/take-screenshot: Shorten wait intervals.
    Most of the time we wait for a rather quick animation or keypress
    to be processed. 0.5s should be ample of time.
  * tools: Use canonical signal name for `delete-event`
  * gmobile: Update to 0.0.6
  * lockscreen: Allow to keyboard navigate to lockscreen / calls page.
    Since Phosh can't use GtkAppliction we can't use
    gtk_application_set_accels_for_action() either (might be worth adding
    this functionality at some point). Hence we process key events directly.
  * tests/take-screenshots: Use one place to set gsettings
  * tests/take-screenshots: Screenshot lockscreen plugins page.
    We load some plugins for that.
  * ci: Install plugins for screenshot tests
  * treewide: Remove TEST_INSTALLED special handling.
    CI installs into the default path now and we've never used it
    for local testing.
  * tests: Drop wl_output double accounting.
    We have it in `monitor`. No need to have it separately.
  * top-panel: Document on-lockscreen property constrains
  * top-panel: Use Monitor instead of wl_output.
    Use Phosh's types where possible (makes it consistent with e.g
    PhoshBackground and PhoshSystemModal.
  * top-panel: Set fb and bg colors in our own block.
    Don't share it with phosh-home so we can tweak it independently
  * top-panel: Use `self` correctly
    `self` is the top-panel here, not the drag-surface.
  * home: Fix 'state' property setter.
    Make setting the property equivalent to using the property setter.
    Modernize the property description while at that.
  * home: Add property getter.
    It's easier to read and faster.
  * home: Use PhoshMonitor instead of wl_output.
    Use Phosh's types where possible (makes it consistent with e.g
    PhoshBackground and PhoshSystemModal.
  * settings: Document on-lockscreen property constrains
  * lockshield: Use more type-safe constructor variables
  * lockscreen: Rename settings variable.
    We use it for different lockscreen settings
  * lockscreen: Rename notification specific settings
  * background-manager: Emit signal when backgrounds need an update.
    This allows us parts of the shell to react on these.
  * emergency-menu: Use g_signal_connect_object.
    This makes sure the signal handler gets disconnected when the menu gets
    destroyed.  Otherwise the list might call in a no longer existent menu.
  * wwan-mm: Report 5G when combined with access technologies.
    Check for 5G early as we want to report it when in use with e.g. 4G +
    Tested-by: Luca Weiss <luca@z3ntu.xyz>
  * plugins: Use new canonical resource path in examples.
    See 8ec58e355 ("plugins: Add launcher plugin")
  * build: Remove unused dbus doc targets
  * build: Use preference specific include path.
    It points to the same folder atm but we have both so use the
    correct one. This allows us to have separate header include paths
    for plugins and their preferences.
  * status-icon: Document properties.
    This hopefully makes it simpler for plugin authors.
  * docs: Add URL map.
    This allows us to link to docs in other projects
  * quick-setting: Document automatic binding of `active` property
  * quick-setting: Improve class documentation.
    Use gi-docgen style links, fix signal name.
  * suspend-manager: Use passed in values.
    This allows us to use the same function for other use cases.
  * suspend-manager: Use consistent Wi-Fi spelling.
    Fixes: f228ca6e1 ("treewide: Use consistent Wi-Fi spelling")
  * session-manager: Make inhibitor more flexible.
    Allow to inhibit other things besides suspend.
  * build: Split dbus header and source targets.
    This allows us to only use the header dependencies for the plugins as
    there's no point in generating the sources (which would then happen for
    every plugin).
    We only split the ones that already use our default namespace as we want
    to fix up the namespaces for the other ones first as this gives shorter
    names. See e.g.
       aa6c9323b ("session-manager: Use default DBus prefix")
  * quick-settings-standalone: Print which plugins are loaded.
    Makes developing a plugin a bit simpler
  * build: Introduce plugin dep.
    This allows
  * shell: Split out methods available to plugins
    shell.h pulls in about almost all object's headers. In order to not leak
    all of those to the plugins (requiring them to declare dependencies on
    other libraries used by those headers like NM, gnome-desktop, etc)
    introduce a separate header file that can be used by plugins to only get
    a basic set.
  * plugins: Add Types field to lockscreen plugins
  * plugins: Add caffeine icon.
    Icon taken form GNOME's icon library.
  * plugins: Add caffeine quick setting.
    This uses Arun's SimpleCustom quick setting as template.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/829
  * screen-saver-manager: Use g_timeout_add_seconds_once
  * screen-saver-manager: Use lock-enabled in more places.
    Except in cases where the lock is requested explicitly (like the DBus
    call) we want to take the lock-enabled setting into account.
    This fixes the case where lock-enabled is false but a lock-delay is set.
    We don't want to lock in that case either.
  * vpn-info: Ensure initial property sync.
    Make sure we sync with the manager object. Otherwise we might end up
    with stale state.
    This fixes the vpn quick setting disappearing when moving the primary
    output.
  * build: Add quick-setting-plugins to summary
  * docs: Mention .phoshdebug
  * docs: Link to more manpages
  * docs: Enable fatal warnings during doc build.
    This makes sure we no longer ignore links that became stale or
    are mistyped.
  * build: Don't install files from gmobile. We link statically
  * tools: Update symbol list
  * data: Validate desktop file
  * ci: Run tools tests too.
    If we don't give a suite we'd miss the exported symbols check
  * po: Add missing desktop files

  [ Sicelo A. Mhlongo ]
  * wwan/ofono: Fix style
  * wwan/ofono: Obtain operator name from network.
    Prefer the operator name provided by the network, in place of the name
    embedded in the SIM. This is especially important when roaming, so one
    can know which network they are actually connected to.

  [ Rodney Lorrimar ]
  * build: Declare gio-unix-2.0 dep where necessary.
    The launcher-box and ticket-box plugin meson files didn't declare a
    dependency on gio-unix-2.0.

  [ Danial Behzadi ]
  * Update Persian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Florentina Mușat ]
  * Update Romanian translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Artur S0 ]
  * Update Russian translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Pablo Barciela ]
  * Update Spanish translation

 -- Guido Günther <agx@sigxcpu.org>  Wed, 06 Mar 2024 16:56:20 +0100

phosh (0.36.0) experimental; urgency=medium

  [ Sertonix ]
  * util: Update broken app_id mappings
  * util: Fix last_component lowercase

  [ Guido Günther ]
  * ci: Use common ci template.
    This removes an external reference and we want to share more common job
    config.
  * ci: Use common po check.
  * home: No need to store osk manager.
    We fetch it every time, so no need to store it.
  * home: Fix signature of on_powerbar_pressed.
    Osk manager and shell aren't passed since this is a GTK signal callback.
    Fixes: fe308c2ce ("home: Shrink home-bar height and move osk activation to center")
  * home: Allow to tweak osk long press delay
  * lockscreen-manager: Don't try to clear already gone shields.
    Uplugging a monitor can race with unlock (which discards all shields).
    Make sure we don't try to destroy a shield for an unplugged monitor when
    lockscreen_unlock_cb has just removed all shields as we crash
    otherwise..
  * lockscreen: Drop hardcoded Cantarell font.
    It was only on a single element.
  * top-bar: Drop hardcoded Cantarell font.
    Only one element on the lock screen as well as the top-bar had it
    hardcoded making the font inconsistent when changed via
        org.gnome.desktop.interface font-name
    GSetting.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1016
  * monitor-manager: Sync gamma tables for new monitors.
    This ensures newly plugged outputs get their gamma table updated and
    hence e.g. pick up night light correctly.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1019
  * wayland: Drop unused input-inhibitor protocol.
    It's unused and wlroots 0.18.x dropped support for it.
  * tools: Parse additional license headers.
  * home: Decruft a bit
  * home: Drop animated arrow.
    The overview can be closed by activating an application so there's no real
    need for the arrow.
  * home: Drop the home-bar's stack.
    We don't need it anymore since the arrow is gone
  * home: Hide power bar pill when unfolded.
    Otherwise it might look a bit out of place as it's exactly over the
    active app.
  * gmobile: Update to 0.0.5 adding notch support for the FP5.

  [ Anna “CyberTailor” ]
  * build: Allow elogind to be used on systems without SystemD

  [ Bardia Moshiri ]
  * packaging: Add libgirepository1.0-dev as a build dependency

  [ Kai Lüke ]
  * phosh-session: Drop ambient capabilities.
    Systemd 254 adds cap_wake_alarm by default in pam_systemd.
    The phosh.service makes use of it through PAMName=login.
    This causes phoc to run with this ambient capability which is passed to
    the Phosh session which then fails to spawn any .desktop files such as
    Epiphany or any Flatpak app because they depend on bwrap which has a
    restrictive check against additional capabilities:
    https://github.com/containers/bubblewrap/issues/380
    A regular GNOME session with GDM and GNOME Shell does not have this
    problem.
    Drop ambient capabilities before running the Phosh session to resolve
    the bwrap problem and align the behavior with the regular GNOME setup.
  * phosh-session: Reduce number of processes.
    The phoc -E switch uses "sh -c" to run the given commands and then in
    that shell "bash -lc" is started to run the session. Without using
    "exec CMD" this leaves the shell process around while they wait for the
    child process.
    To save memory, replace the shell process in the second invocation, but
    leave the first as is to address this in phoc.

  [ Martin ]
  * Update Slovenian translation

  [ Pierre Michel Augustin ]
  * Update Haitian Creole translation

 -- Guido Günther <agx@sigxcpu.org>  Wed, 31 Jan 2024 11:16:42 +0100

phosh (0.35.0) experimental; urgency=medium

  [ Guido Günther ]
  * osk-manager: Sync initial state.
    Fixes 43d801d9da2dfe2b90f6b38068c3517d3e658d39
    Tested-by: Jarrah Gosbell <debian@undef.tools>
  * util: Revert "Be more graceful on the app_id"
    This breaks telegram desktop with app-id org.telegram.desktop and a
    desktop file of org.telegram.desktop.desktop.
    We *only* made that change to not change the behaviour of the
    end-session-dialog. All inhibitors there do have a proper app-id though
    so let's just live without not appending '.desktop' there either.
    This reverts commit 2a3763303b4305058ee0ff5f2b76b31016e80114.
    Reported-by: Newbyte <newbie13xd@gmail.com>
    Tested-by: Newbyte <newbie13xd@gmail.com>
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1010
  * shell-manager: Drop support for XML version parsing.
    Just assume we have GNOME_DESKTOP_PLATFORM_VERSION (introduced in GNOME
    43)
  * build: Drop support for older gnome-desktop without the platform version.
    This was introduced in 43. We keep the check for recent GNOME in the
    summary() so it's obvious when things are outdated.
  * build: Encode glib version in one place only.
    We keep the check for recent glib in summary() so backports indicate
    clearly when they don't have it.
    This uses the same logic we use in phoc
  * ci: Only run ci-fairy on merge-request pipelines targeting 'main'
    Backports to older version can e.g. contain translations that don't need
    to adhere to the commit formatting.
  * build: Avoid quotes around boolean values
  * build: Use project_build_root() as plain build_root() is deprecated
  * build: Use project_source_root() as plain source_root() is deprecated
  * build: Bump meson version to 1.0.0.
    Debian stable has 1.0.1 even
  * uncrustify: Fix while() brace alignment too.
    We had it for `for` and `if` but `while` was missing
  * build: Drop meson version check.
    We require 1.0 now
  * session-manager: Allow to inhibit suspend
  * suspend-manager: Inhibit via gnome-session rather than systemd.
    The systemd inhibitor would ensure we don't suspend when e.g. another
    session is active. What we're interested about here is the user's
    session though so use gnome-session to prevent suspend instead.
    We use a sync DBus call here which should be fine and not block and we
    can't do much without gnome-session running anyway.
    For the systemd bits see https://github.com/systemd/systemd/issues/29818
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/1001
  * idle-manager: Drop unused variable from struct
  * idle-manager: Drop superfluous comment.
    We explain this in the class documentation and have a comment in
    the DBusWatch.
  * screen-saver-manager: Clear long press timer in error path.
    This shouldn't happen but if we hit it then we shouldn't create another
    timer but rather clear the old one.
  * emergency-info: Suggest word-completion in text views.
    This allows the OSK to decide whether it should offer word completion
    (or not).
  * launcher-box: Fix leaks.
    Don't leak enumerator, app-info and path
  * upcoming-events: Don't leak color string from rgba conversion
  * widget-box-standalone: Don't leak plugin dirs
  * lockscreen: Add small margin to the widget box.
    If there are long filenames in the ticket box it expands the widget box
    right to the screen edge breaking the swipe back.
    By adding a small margin we always allow a fling at the screen edge to
    go back to the actual lockscreen.

  [ Bardia Moshiri ]
  * wwan-ofono: Mark access technology nr as 5G
  * wwan-mm: Mark access technology MM_MODEM_ACCESS_TECHNOLOGY_5GNR as 5G

  [ mathew-dennis ]
  * home: Shrink home-bar height and move osk activation to center.
    Reduce the home-bar size from 40px to 15px
    Replace osk button with powerbar widget and move it to the center
    Modify the on pressed function to work with long press gesture
    Use osk-manager directly
    Add an svg image to represent the new powerbar widget
    Add both powerbar and arrow into a gtk stack since both are occupying the center region
    Reuse phosh_home_update_osk_button to switch home-bar stack when dragging
    Closes: https:// gitlab.gnome.org/World/Phosh/phosh/-/issues/380
  * home: Make powerbar more interactive.
    Reduce powerbar opacity to indicate longpress recognition has started
    And revert back to original state one recognition is successful
    Add animation to indicate osk non-availability
    Add haptic feedback to indicate a successful osk interaction

  [ Daniel Rusek ]
  * Update Czech translation

  [ Artur S0 ]
  * Update Russian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

 -- Guido Günther <agx@sigxcpu.org>  Sat, 30 Dec 2023 19:28:08 +0100

phosh (0.34.0) experimental; urgency=medium

  [ Guido Günther ]
  * ci: Switch to trixie and cleanup a bit
  * d/control: Bump phoc dependency.
    Needed for ext-idle-notify-v1 support.
  * wayland: Add ext-idle-notify-v1.
    This will replace org_kde_kwin_idle
  * idle-manager: Use ext-idle-notify-v1 protocol
  * wayland: Drop kde idle protocol.
    Not supported by newer wlroots.
  * idle-manager: Recreate timers when they need to be reset.
    In contrast to KDE's idle protocol ext-idle-notify-v1 doesn't have a way to
    reset individual idle notifiers so recreate them instead.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/994
  * HACKING: Add some more details.
    Co-authored-by: Arun Mani J <j.arunmani@proton.me>
  * build: Bump glib to 2.76. We want g_autofd().
  * tools: Use G_APPLICATION_DEFAULT_FLAGS. Avoids deprecation warning.
  * monitor-manager: Drop crtc gamma
  * dbus: Add gsd color
  * monitor-manager: Connect to gsd-color for night light information.
    We set the gamma tables based on the color temperature read from gsd.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/875
  * testlib: Check for Wayland socket.
    Check if the wayland socket is available. Gives a clearer error than
    initializing GDK and hoping for the best.
  * tests: Drop unused display argument of the shell fixture.
    We run headless since some time
  * Drop some unused variables
  * tests/monitor-manager: Test more API
  * osk-manager: Make availability depend on screen-keyboard-enabled.
    The OSK is only really available when the gsetting is set (it might
    still be toggle-able via explicit DBus calls but clients shouldn't rely
    on that).
  * lockscreen: Map keyboard button sensitiviy to OSK availability.
    Only make the keyboard button on the keypad sensitive when the OSK would
    actually unfold.
  * home: Use osk-manager instead of tracking the gsetting directly.
    This makes sure we don't show the button although there is no OSK
    on the session DBus. It also ensures all parts of the shell get
    their state from the osk-manager.
  * subprojcts: Update gmobile to 0.0.4.
    Use `git submodule sync` to update URLs in your working copy.
  * subprojcts: Update libcall-ui to 0.1.1
  * call-notification: Use cui_call_format_duration
  * call-notification: Use tnum font feature.
    Keeps call duration constant width.
  * monitor-manager: Use phosh_async_error_warn.
    We don't want to print a warning when the DBus proxy creation failed.
  * util: Be more graceful on the app_id. Don't care if it ends in .desktop
    or not.
  * end-session-dialog: Use cancellable.
    As in other places properly cancel async calls during shutdown so we
    don't need to hold a ref on self (which can then again trigger invalid
    access as widgets are already disposes).
    This also avoids a leak of self in the error path.
  * end-session-dialog: Use phosh_get_desktop_app_info_for_app_id.
    This makes for better information in the end session dialog
  * end-session-dialog: Only show list box when we created inhibitors.
    This allows us to skip inhibitors that make no sense
  * end-session-dialog: Check flags before creating an entry.
    Only create a row in the listbox when the inhibitor affects logout.
  * end-session-dialog: Skip empty app-ids.
    They're either from system services or stale entries
  * end-session-dialog: Print app_id if we can't resolve the app info.
    This gives at least some idea what is holding the inhibitor. We could
    also do "Unknown application: %s" but that gets shortened too much
    on mobile.

  [ Arun Mani J ]
  * ci: Add Uncrustify to Debian image
  * ci: Add Uncrustify config and checker
  * ci: Run style checks on merge requests.
  * ci: Move `sanity` job to `style-checks` stage.

  [ Artur S0 ]
  * Update Russian translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Juliano de Souza Camargo ]
  * Update Brazilian Portuguese translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 27 Nov 2023 11:18:11 +0100

phosh (0.33.0) experimental; urgency=medium

  [ Guido Günther ]
  * docs: Drop phosh-docs.xml.
    It's unused since some time
  * tools: Drop layer-shell-ui-edit.
    Unused since ages
  * plugins: Add launcher plugin.
    This allows to use arbitrary desktop files as launchers on the lock
    screen. See 8ec58e3555226c3616deb854eee4dd5833a67496 for details.

  [ pseudorandom-x ]
  * password-entry: Add new widget.
    A password entry that allows users
    to toggle the visibility of typed password.
    This is based on code from PhoshNetworkAuthPrompt.
  * gtk-mount-prompt: Use password-entry.
    Replaces GtkEntry with PhoshPasswordEntry,
    as well as removes the callback and its
    connection to toggle password visibility.
  * network-auth-prompt: Use password-entry.
    Replaces GtkEntry with PhoshPasswordEntry,
    for both WiFi dialog box & VPN network
    prompt. The callback toggling the visibility
    of typed password is also removed.
  * polkit-auth-prompt: Use password-entry.
    Replaces GtkEntry with PhoshPasswordEntry.
  * system-prompt: Use password-entry.
    Replaces GtkEntry with PhoshPasswordEntry,
    in both password entry and confirmation fields.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/848

  [ Florentina Mușat ]
  * Update Romanian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 30 Oct 2023 19:08:23 +0100

phosh (0.32.0) experimental; urgency=medium

  [ Guido Günther ]
  * session: Warn on deprecated rootston.ini.  This way we can remove it in
    the future
  * phosh-session: Allow to include a .phoshdebug.
    This allows to set e.g. G_MESSAGES_DEBUG or the path to a phoc.ini
    independent from how phoc is started (command line, display manager,
    systemd unit).
  * docs: Mention phoc configuration file
  * notification: Link to the official spec
  * notifications: Merge comments
  * notification: Add profile property.
    This will be used to store the feedback profile level for the feedback
    event associated with this notification.
  * notify-feedback: Adjust feedback profile based on notification.
    This allows the notification to lower (or skip) the event
    feedback noisiness.
  * notify-manager: Honor x-phosh-fb-profile hint.
    Allowed values are feedback profile levels from the Feedback Profile
    Spec and `none` to indicate: omit all feedback.
    This is somewhat similar to the `suppress-sound` hint of the fdo spec.
  * tools: Add category and profile to notification tool
  * docs: Add some hints for application developers.  Document some mobile
    specific extensions.
  * docs: Document additional notification hint
  * docs: Mention that we prefer a "recipe" style git commit history
  * docs: Add some more common patterns
  * docs: Add a merge request check list
  * feedback-manager: Don't access lfb if not inited.
    Otherwise libfeedback asserts.
  * feedback-manager: Add more type checks
  * notification-feedback: Guard against unitted libfeedback

  [ Keegan Sabo ]
  * app-grid: Hide separator when there are no favorites.
    Hide the favorites separator if there are no favorites.

  [ Tjipke van der Heide ]
  * Add Frisian translation

  [ Vasil Pupkin ]
  * Add Belarusian translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 02 Oct 2023 14:17:40 +0200

phosh (0.31.1) experimental; urgency=medium

  * build: Fix version in meson file

 -- Guido Günther <agx@sigxcpu.org>  Mon, 04 Sep 2023 16:49:20 +0200

phosh (0.31.0) experimental; urgency=medium

  [ Guido Günther ]
  * data: Add portals default config.
    We keep the `UseIn` in phosh.portal for the moment to support
    older xdg-desktop-portal.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/979
    Thanks to Pablo Correa Gomez for bringing this up
  * portals: End lines with a semicolon.
    It's a desktop file like syntax
  * portals: Use wlr as fallback for screenshot portal.
    E.g. Debian has it disabled for the gtk portal.
  * portal: Disable screencast portal. No implementation yet.
  * portal: Add secrets portal.
    Provided by gnome-keyring
  * wayland: Make zwlr_output_power_manager_v1 mandatory.
    It's there since phoc 0.1.6.
  * suspend-manager: Drop unused variable
  * protocol: Add phoc-device-state-unstable-v1.
    Track the device state capabilities and merge them into the seat's caps.
    This way we only need to worry about one set of capabilities.
  * mode-manager: Set tablet or laptop mode for convertibles.
    Based on a patch by Jonathan Hall.
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/320
  * mode-manager: Switch between tablet and laptop mode.
    When the seat as the needed caps we register a listener for the
    switch and switch between tablet and laptop mode based on its state.
  * ci: Update variables. We moved to trixie

  [ Simon McVittie ]
  * data: Install phosh-portals-conf in /usr/share.
    This is supported in xdg-desktop-portal >= 0.17.1
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/982

  [ Boyuan Yang ]
  * Add Chinese (China) translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Fran Dieguez ]
  * Update Galician translation

  [ Efstathios Iosifidis ]
  * Update Greek translation

  [ Asier Sarasua Garmendia ]
  * Update Basque translation

  [ Artur S0 ]
  * Update Russian translation

  [ Nathan Follens ]
  * Update Dutch translation

  [ Martin ]
  * Update Slovenian translation

  [ Jürgen Benvenuti ]
  * Update German translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 04 Sep 2023 13:33:50 +0200

phosh (0.30.0) experimental; urgency=medium

  [ Guido Günther ]
  * toplevel-manager: Drop set_property. It's unused
  * toplevel-manager: Fix indent
  * toplevel: Fix some indent
  * toplevel: Move _init upwards.
    We have it past _class_init. See HACKING.md.
  * toplevel: Drop initialization.
    They're inited to 0 per default.
  * app-tracker: Drop unused variable
  * data: Add icon for audio-handsfree.
    This happens when e.g. connecting to a car's audio unit. For now we just
    use the plain headset icon. See PA commit
    https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/28069ef0f74089ae18cefbe7e97d2b920d7ba0cc
    Once we have one in the adwaita-icon theme we can drop the icon here.
  * call-notification: Make sure we always show a phone number when available.
    For calls that don't have an entry in the address book we want to make
    sure we *only* show the phone number and nothing else (not e.g. "Unknown
    Caller") while the reset of the logic (whether to show initials, etc)
    should stay the same.
  * Update gvc submodule.
    This fixes a crash when pa or pipewire-pulse restarts.
  * README: Mention git submodules
  * README: Use meson instead of ninja
  * ci: Give asan suite some more time.
    It passes but needs a bit longer.
  * ci: Speedup unit tests by skipping screenshots.
    We run the screenshot tests anyway so instead of running them twice
    rather merge the test data. This uses less CPU and avoids the testsuite
    sometimes failing because unit tests and screenshot tests step on each
    others toes.
  * lockscreen: Simplify clock css.
    No need to have the class twice
  * lockscreen: Move large clock down a bit.
    WIth the rework we lost a bit of vertical padding. Add this back but
    only when we use the large clock.
    Fixes 515ccf982b9acbd6bae5f97d79fb1115190303f4
  * data: Drop gsd-xsettings from required components.
    The session is very functional without.
    As newer wlroots looks for a surface and there is non it gets
    disconnected when we don't force XWayland to stick around which we don't
    want to.
  * lockscreen: Don't scroll back to clock page while auth is running.
    Going back to the clock page while the auth thread is running is
    confusing for the user. This can happen when pam wants to slow down
    entering a new password for more than 5 seconds.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/968
    Tested-by: Teemu Ikonen
  * gmobile: Update to 0.0.3 This brings support for the FF4's and Poco F1
    notches

  [ anteater ]
  * screenshot-manager: Save screenshots at full resolution.
    This has to normalize scale to join monitors, but can at least
    normalize to the largest scale present rather than 1.0.
    Screenshots of any single monitor will be saved at native scale,
    and screenshots spanning multiple monitors will scale them each up
    to the maximum scale of a monitor present in the screenshot.
    https://gitlab.gnome.org/World/Phosh/phosh/-/issues/946

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Piotr Drąg ]
  * Update Polish translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Martin ]
  * Update Slovenian translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Balázs Úr ]
  * Update Hungarian translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 01 Aug 2023 12:13:54 +0200

phosh (0.29.0) experimental; urgency=medium

  [ Guido Günther ]
  * tests: Create a dummy object for PhoshShell.
  * phosh-wayland: Drop feature flags.
    Wayland defines these just fine for us from the protocol definitions.
    This makes it consistent with other places where we used the
    wayland definitions directly e.g.
    PHOSH_PRIVATE_KEYBOARD_EVENT_ACCELERATOR_RELEASED_EVENT_SINCE_VERSION
    ZPHOC_LAYER_SHELL_EFFECTS_V1_GET_ALPHA_LAYER_SURFACE_SINCE_VERSION
  * notify-feedback: Exit early when we woke up the screen.  Doing it once is
    enough.
  * notify-feedback: Use PhoshNotificationSource.
    No functional change, just make the function take a notification source
    and not assume it's part of an on_items_changed callback.
  * notify-feedback: Move event based feedback emission into a separate function.
    Iterating a notification source to look for feedback to emit will be
    used in more places.
  * notify-feedback: Don't skip feedback if we fail to get the app-id.
    Use phosh's current feedback level in that case.
  * notify-feedback: Blink leds when screen goes blank and there are notifications.
    If there are notifications present and the screen goes blank we should
    explicitly trigger event feedback for these.
  * ambient: Avoid initial theme switch
  * animation: Add enum type for the animation types.
    This allows us to use them as properties.
  * layer-surface: Move alpha handling here.
    To avoid having to pass around even more properties we use
    phosh_shell_get_default () which makes this a bit harder to use in other
    programs like phosh-osk-stub or squeekboard.
    This will allow us to use alpha blending in other parts without much
    code.
  * fader: Make fade-out configurable.
    Add properties to configure fade-out length and type
    Helps: #940
  * ambient: Use a fader to smooth the theme change.
  * timestamp-label: Don't leak datetime
  * phosh-background: Simplify. Just chain up without a parent_class variable
  * tests: Don't leak monitor.
    The tests that run against phoc leaked the created monitor object.
  * tests/stubs: Only create toplevel-manager once.
    This helps test-overview
  * leak-suppress: Drop old leak suppression.
    I fixed that in GTK via b1b9de6836a19cb6336b6a20ad652afc14f1e2b2 in
    2019.
  * leak-suppress: Add new GTK, GDK and gvfs leaks.
  * tests/end-session-dialog: Make both tests more alike.
    Drop superfluous g_object_ref_sink and use gtk_widget_destroy
    to fix resource leaks.
  * tests/notification: Fix leak
  * tests/favourite-model: Fix leak
    g_list_model_get_item returns a ref
  * tests/app-grid-button: Fix leaks
  * tests/stubs: Make shell variable static. Tests use phosh_shell_get_default()
  * ci: Use specific asan image.
    This allows us to have debugging symbols in there so the leak
    suppressions match but without making the base image larger.
  * settings: Simplify brightness slider ui bits.
  * settings: Simplify torch slider ui bits
  * settings: Drop packing from settings box.
  * lockscreen: Use G_SOURCE_REMOVE
  * lockscreen: Queue redraw for clock when deck moves back to carousel.
    Otherwise the clock might show an outdated time after phone calls or
    when swiping back from the plugins page.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/922
  * system-modal-dialog: Allow to fade out.
    This is similar to what we do with splash screens but we use
    an ease out animation to give a rapid response to the user
    interaction.
  * system-prompt: Use phosh_system_modal_dialog_close()
    This will use a fadeout animation if available
  * phosh-end-session-dialog: Use phosh_system_modal_dialog_close()
    This will use a fadeout animation if available
  * polkit-auth-agent: Use phosh_system_modal_dialog_close()
    This will use a fadeout animation if available
  * network-auth-manager: Use phosh_system_modal_dialog_close()
    This will use a fadeout animation if available
  * run-command-manager: Use phosh_system_modal_dialog_close()
    This will use a fadeout animation if available
  * emergency-calls-manager: Use phosh_system_modal_dialog_close()
    This will use a fadeout animation if available
  * gtk-mount-manager: Use phosh_system_modal_dialog_close()
    This will use a fadeout animation if available
  * app-auth-prompt: Use phosh_system_modal_dialog_close()
    This will use a fadeout animation if available
  * tests: Drop unused variables
  * ci: Switch to package test to trixie.
    Bookworm is released and we want to build against latest libraries.
  * tests/gtk-mount-manager: Disable animations.
    Otherwise it might still be running when we end the main loop.
  * Update gvc submodule first time since 2018.
    Avoid passing NULL to gvc_mixer_control_get_vol_* as this raises a
    critical in newer versions. Use PAs definitions directly instead.
  * channel-bar: Simplify and modernize
  * channel-bar: Use symbolic icons via CSS.
    This will allow us to use non symbolic icon names from gvc directly.
  * channel-bar: Load icons with default fallbacks.
    This makes sure we get a valid icon for things like
    `audio-headset-analog-usb`
  * channel-bar: Use a ui file
  * settings: Fix enum type. We're setting the RotationManagerMode here.
  * settings: Separate concerns. Move headphone detection and stream pausing
    into separate functions
  * settings: Get audio output icon from stream.
    This makes us use different icons for e.g. HDMI and USB headsets making
    it easier to figure out which output is being changed.
  * emergency-info-prefs: Fix indent.
    Use 2 space indent consistently, avoid space after `->`
  * emergency-info-prefs: Avoid gint. See CodingStyle
  * emergency-info-prefs: Use (const char * const *) consistently
  * emergency-info-prefs: Avoid saving empty values for string arrays.
    If allergies or medical conditions are empty there's no need to
    save the values.
  * emergency-info-prefs: Build keyfile path only once.
    We use a single keyfile so build it's path only once at object creation
    time.
  * emergency-info-prefs: Don't return early if there's no keyfile.
    We can just create it instead of exiting early which made things appear
    as if "add" wouldn't do anything.
    Thanks to Jonathan for the report (Closes: #955)
  * emergency-info-prefs: Move keyfile saving to a single function
  * emergency-info-prefs: Create directories when missing
  * emergency-info-prefs: Set empty string when value is missing.
    When the value is missing in the keyfile set the empty string to
    avoid warnings when loading the keyfile.
  * emergency-info-prefs: Only make "Add" sensitive with contact.
    We only make the "Add" sensitive when there is a contact
  * emergency-info-prefs: Allow for contacts without a number.
    The user can add them later so instead of silently ignoring this contact
    add it without a number.
  * emergency-info-prefs: Be more verbose when saving fails
  * Update gbmobile submodule.
    Adds cutuout information for the xiami,beryllium
  * shell: Remember the settings object. We'll use it in more places in the
    future
  * shell: Move define past includes according to coding style
  * shell: Don't make debug flags dependent on shell objects.
    This allows us to use it from other parts without
    phosh_shell_get_default().
  * monitor: Allow to fake builtin display.
    Allow the virtual displays to be treated as built-in displays via to
    `PHOSH_DEBUG=fake-builtin`. This can be useful e.g. to debug top-panel
    layouts.
  * monitor: Make preferred mode check simple.  Make it simple to check if the
    current mode of a monitor is the preferred mode.
  * tests/data: Add an overlay matching the nested wayland mode.
  * top-panel: Use height internally.  No need to have it passed in at
    construction time as we don't handle different sizes anyway.
  * Add layout manager.  The layout manager is responsible for providing
    layout information to e.g. avoid notches and rounded corners.
    We currently imply a notch in the upper screen area that mostly affects
    normal orientation hence ignoring it in landscape.
  * top-panel: Use layout manager to place clocks.
    We place the center clock to the left or right when needed and shift
    down the clock in the settings menu.
  * tests: Screenshot with notch
  * calls-manager: Avoid deprecated calls state.
    Those were dropped from calls a while ago. This made it impossible for
    the user to get back to an incoming (but not yet accepted) call on the
    lock screen.
  * packaging: Bump calls dependency.
    We want to use a calls version that matches our enum values.
  * media-player: Connect player right away.
    No need to wait for the idle callback. While at that use
    current naming.
  * media-player: Modernize property definitions
  * lockscreen: Drop gtk_widget_realize() in constructed.  This just confuses
    sizes calculations
  * lockscreen: Modernize UI file a bit
  * lockscreen: Split call settings and page changes.  Follow up commits want
    to set the call but not switch to the call ui page.
  * lockscreen: Remove superfluous titlebar element
  * lockscreen: Move style class toggling to separate function
  * lockscreen: Always toggle notification revealer.
    Instead of toggling visibility on the list and the scrolled window just
    use the revealer. This is less code and makes sure things are consistent
    between no notifications and disabled lockscreen notifications.
  * lockscreen: Use a revealer for the media-player.
    This makes it consistent with the notifications
  * lockscreen: Use small clock when media-player widget is visible too.
    So far we only used the small clock when notifications where visible
    but from the UI point of view there's no difference between those
    so use the same layout.
    This also makes it simpler to add more info elements.
  * lockscreen: Move media player and notifications into one scrolled window.
    This avoids half cut notifications at the top, etc.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/593
  * lockscreen: Drop max content height.
    Let's have the scrolled window use as much space as possible to fit the
    notifations.
  * media-player: Modernize UI file a bit
  * call: Don't lookup icon for empty string.
  * notifications: Reduce bottom padding of notification tray.  48px wastes
    lots of space.
  * lockscreen: Move deck variable.  It's not part of the call page
  * lockscreen: Use set_visible_child.  This way we don't have to check if
    we're on the right page and can't overshoot.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/890
  * lockscreen: Drop p-large style class for clock.
    We toggle p-small on and off so we don't need another one for
    the default.
  * calls-manager: Expose calls as list model.  This makes it simple to have
    them in list boxes. For now we just proxy everything from an embedded
    GListStore.
  * lockscreen: Add call notifications.
    This makes it simple to go back to an ongoing call and will allow
    us to handle multiple calls easily.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/591
  * gvc-channel-bar: Guard against NULL icon.
    Fallback to speaker if we don't have more information.
  * settings: Don't crash on NULL port.
    Can happen with new gvc when switching VTs
    Fixes: bf9d98a519fc0c4a9e3d0dffc6a4066508577b39
  * settings: Don't forget to mute stream.
    Fixes e826ea4abca36042fbd77abe4e97dcab57b7a789
  * settings: Set channel-bar via UI file
  * settings: Init parent class early in constructed
  * settings: Use '-' for property names.  Just for consistency
  * settings: Bind settings-done via ui file.
    Be consistent with notify::drag-handle-offset
  * channel-bar: Use G_PARAM_STATIC_STRINGS
  * channel-bar: Switch all props to G_PARAM_EXPLICIT_NOTIFY
  * top-panel: Move click gesture to target phase.
    This makes sure the panel is only closed when we click
    outside the widget area, not when e.g. switching sound
    devices.
  * settings: Allow to select audio devices.  This can be useful to switch
    between headsets and speaker without having to open g-c-c.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/951
  * audio-settings: Close details when we launch the g-c-c panel

  [ undef ]
  * top-panel: Allow device suspend from power menu.
    Add suspend from the top-panel power menu alongside shutdown and
    logout. This allows far quicker access than waiting for the automatic
    timeout or typing the command.

  [ Sam Hewitt ]
  * settings: Style audio device selection
  * data: Add icon for suspend

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Prasanta Hembram ]
  * Update Santali translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Martin ]
  * Update Slovenian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Piotr Drąg ]
  * Update Polish translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

 -- Guido Günther <agx@sigxcpu.org>  Wed, 07 Jun 2023 20:25:17 +0200

phosh (0.28.0) experimental; urgency=medium

  [ Eugenio Paolantonio (g7) ]
  * packaging: Remove hardcoded build directory when running tests.
    Rely on debhelper to determine the build directory, which may not be
    `_build` anymore (see also 6483f73ea9018b95cf82f69242ce9bec4690e3de).

  [ Guido Günther ]
  * libcall-ui: Switch to 0.1.0
  * app-tracker: Update flag descriptions.
    We handle xdg-activation on the compositor side since some time
  * emergency-calls-manager: Name functions consistently.
    It's the emergency-calls manager, not the emergency-contact manager
  * screen-saver-manager: Use G_SOURCE_REMOVE.
    It's easier to parse than `FALSE`.
  * end-session-dialog: Hide warning label when there are no inhibitors.
    Fixes: 381efd906f411f4f738daeea43bde4f35bf3e2a0
  * notify-feedback: Look at correct notification.
    So far we only ever looked at the first one. This is fine as
    we break the loop on the first iteration atm but will lead
    to surprises when we change this.
  * notify-feedback: Avoid critical when app-info lookup fails
  * ci: Montage screenshots via script.
    This makes it easy to reproduce things locally
  * system-modal-dialog: Improve title padding.
    Add some margin to the left and right to make the title not touch the
    border of the dialog.
  * system-modal-dialog: Add top and bottom margins.
    Otherwise the dialog can stretch to the screen edge
  * system-modal-dialogs: Reorder the right box.
    We want to reorder the button box when forcing a position. This
    is so far unused.
  * tools/check-access-portal: Simplify.
    Let getopt handle '-h' and use a here document for easier formatting
  * portal-access-manager: Don't leak grant and deny label.
    They were g_strdup'ed but never freed. Instead use a pointer
    to the gvariant's value.
  * system-modal-dialog: Add property docstring.
    Makes it show up in the docs
  * app-auth-prompt: Add bindings for construct-only properties earlier.
    Doing this in `constructed` worked by accident. When
    `system-modal-dialog` removed it's binding in `init` it started to fail.
    Fixes: 5f7d38bdf86c5f01e8cc0f1560181a875f68b34a (which didn't have a
    chance to notice)
  * system-modal-dialog: Simplify.
    If we hide the title initially we only need to make it visible when we
    set a title and can hence exit early if the title didn't change.
  * system-modal-dialog: Drop constructed.
    We can do that in init just fine
  * ambient: Don't ignore unknown units silently.
    Print at warning so support can be added when we hit that case.
  * ci: Use uppercase variable name for alpine deps.
    Fixes: 47209e49923a256432ca7e536ed7fa3eb20c7683
  * stubs: Use correct enum type for state flags
    Labels, clamps and boxes are unfocusable by default
  * lockscreen: Remove superfluous packaging.
    Just use the defaults
  * layersurface: Add noop implementation for configure.
    This frees deriving classes from checking for NULL
  * lockscreen: Drop the top margin on smaller displays.
    This allows us to keep the keypad's box center aligned.
  * test-notification: Use g_strv_equal.
    We require glib 2.66
  * data: Sort by schema path
  * screen-saver-manager: Add action to wakeup the screen
  * shell: Make activating actions a bit more failsafe.
    Make sure we log an error on inexistent actions. We remove the
    action_group iface implementation for that.
  * notify-feedback: Unblank screen on new notifications.
    We allow to filter by urgency and category. This allows to e.g. enable
    screen wakeup for all 'critical' messages and those send by alarm-clocks
    but not instant-messages via
    wakeup-screen-triggers == [ 'urgency', 'category' ]
    wakeup-screen-urgency == 'critical'
    wakeup-screen-categories == [ 'x-gnome.clock.alarm' ]
    (assuming the alarm clock sets the above category)
    To match on all instant messages too we'd do:
    wakeup-screen-categories == [ 'x-gnome.clock.alarm', 'im' ]
    This will match on all notifications with category class `im`
    independent from the specific. So we'd match on `im`, `im.received` and
    `im.error`.
    Available categories (of the form `class.specific`) can be found in the
    xdg spec:
    https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/934
  * Revert "top-panel: Close settings before taking screenshot"
    This reverts commit 30167a934b5b6820b583d262a386bed3d1dab141.
    Not needed as we switch away from the power-menu.
  * Revert "top-panel: Remove currently unused actions"
    This reverts commit a4d2e6d846a2ffd4f3028242ed1803563ee68d17.
    Add them back as we switch away from the power-menu.
  * Revert "top-panel: Trigger power-menu"
    This reverts commit 63fae83fa5ef42ade7fb898164fc7cb2d27c40a7.
    Bring back the old power off / logout / restart menu
    This closes https://gitlab.gnome.org/World/Phosh/phosh/-/issues/932
    although we don't add it to the power-button menu but rather bring
    back the system menu.
  * top-panel: Rename to menu to system-menu.
    This better fits designer language (see
    https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1254)
  * system-menu: Drop lock screen.
    We have that on an extra button and it's not "power cycle" related.
  * top-panel: Drop unused power-menu action
  * system-menu: Use icons in the menu
  * layersurface: Allow to set alpha
  * splash-manager: Assume color-scheme is a known key
  * build: Require settings-schema 42.
    This allows us to drop the check for color-scheme
  * splash: Remove excessive white space
  * splash-manager: Hide splash.
    Don't just destroy the widget. Give the splash a chance to fade out.
  * animation: Add quintic ease in and out
  * splash: Add phosh_splash_hide.
    This hides and destroys the splash
  * splash: Use a fade out animation to hide the splash
  * splash: Allow to run against old phoc
  * build: Add animation slowdown option.
    For debugging it can be useful to slow down animations. Add config
    option for that
  * quicksettings: Add a bit more top and bottom padding.
    This makes the buttons a bit easier to touch
  * home: Ease application switching with super key.
    Currently the super key activates the application view (focusing the the
    search bar). Focusing the running application instead allows for direct
    window switching via cursor keys and application search as the user can
    just start typing.
  * build: Bump supported glib version to 2.72.
    We mostly do this to so we can assume `launch-started` in some
    upcoming app-tracker changes.
    This is still pretty conservative as glib 2.76 is current.

  [ Thomas Booker ]
  * emergency-calls-manager: Fix spelling

  [ Alistair Francis ]
  * home: Handle the super key.
    Since Phoc allows passing the super key (see MR) we can subscribe to it
    and use the super key to unfold the home. This is similar to how the key
    works on GNOME.
    Note that on versions of Phoc that don't expose the super key, this will
    just generate a warning as Phoc rejects the binding.
    Works-with: https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/447
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/563

  [ Suraj Kumar Mahto ]
  * lockscreen: Remove currently unused (and hidden) emergency call button.
    Emergency calls are reachable via long press. We'll look into adding a
    button right on the lock screen once the feature is deemded stable and
    hence enabled by default.

  [ Sam Hewitt ]
  * New close button for power menu
  * top-panel: System menu styling

  [ Evangelos Ribeiro Tzaras ]
  * gnome-shell-manager: Handle repeat for accelerators.
    Repeat action until accelerator was released unless accelerator
    was grabbed with "ignore autorepeat" set.
    Fixes: #525

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Pablo Correa Gómez ]
  * Update Spanish translation

  [ Jordi Mas i Hernandez ]
  * Update Catalan translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Piotr Drąg ]
  * Update Polish translation

  [ Daniel Rusek ]
  * Update Czech translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Michael Oppliger ]
  * Update German translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 29 May 2023 12:31:28 +0200

phosh (0.27.0) experimental; urgency=medium

  [ CoderThomasB ]
  * Add emergency calls manager.
    The emergency calls manager is respsonsible for fetching emergency
    contacts from gnome-calls as well as initiating emergency calls.
  * Add emergency menu system modal dialog.
    A new modal dialog triggered by the power-button long press menu that is
    used to dial emergency call numbers and to select emergency contacts.
  * tests/screenshot: Test emergency menu.
    Closes: https://gitlab.gnome.org/GNOME/calls/-/issues/30

  [ Guido Günther ]
  * tests: Make phosh_test_remove_tree() public.
    Useful in non-shell tests too
  * tests: Run timestamp label test without compositor.
    Not needed, plain widget.
  * tests: Add helpers to run tests against a compositor.
    This was so far open coded in the different tests. The helpers
    ensure we also get a separate DBus session.
  * testlib/compositor: Shut down compositor before DBus.
    This makes sure we can process all events
  * testlib: Drop double assignment.
    We do the same two lines above.
  * testlib: Log when we connected to the running compositor
  * tests: Use compositor helper for phoc based tests.
    Simplifies the code but also fixes tests against newer phoc (0.26.0)
    which needs to be able to spawn a DBus session.
  * tests: Use compositor helper for integration tests
  * tests: Add and use PHOSH_FULL_SHELL_TEST_ADD.
    Just to simplify the code. Similar in spirit to
    PHOSH_COMPOSITOR_TEST_ADD
  * tests: Use full-shell fixture for idle-manager.
    Less code and proper DBus isolation
  * tests: Use full-shell fixture for gtk-mount-manager.
    Less code and proper DBus isolation
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/671
  * ci: Slightly bump test timeout.
    The screenshot tests are sometimes taking a bit longer. Bump the test
    timeout a bit until we made them faster by reducing timeouts.
  * ci: Drop the i386 crossbuild.
    We could disable doc, tests, plugins and calendar-server to get away
    without any gobject-introspection libs but that wouldn't leave much.
  * ci: Update image before installing dependencies
  * ci: Install phoc from Debian experimental.
    We need it for the keyboard shortcut long press support
  * ci: Use updated images
  * tests: Run all tests in parallel.
    Now with proper test isolation we can run all the tests in parallel
    speeding up the pipeline.
  * suspend-manager: Actually cancel the async call on shutdown.
    The cancellable was NULL hence nothing happened.
  * screen-saver-manager: Check async result first.
    Check the result of the async call before accessing the screen-saver
    manager. It might have already been disposed (due to shutdown).
    Fixes another spurious test failure.
  * screen-saver-manager: Init power button fd.
    Make sure it's set < 0 as otherwise we might close it accidentally
    on shutdown when getting the inhibitor got cancelled early (e.g.
    in tests).
  * proximity: Don't access proximity before checking async call result.
    This can happen in tests when we cancel before actually connecting.
  * screen-saver-manager: Emit signal on power button long press
  * shell: Allow to fetch screenshot-manager.
    We could avoid this if we pass it in when constructing the
    power-menu-manager.
  * screenshot-manager: Don't notify completion on DBus for internal calls
  * screenshot-manager: Make do_screenshot() public.
    This allows other parts of the shell to take a screen shot.
  * shell: Implement ActionGroup and ActionMap interfaces.
    This allows us to add global actions easily thus avoiding the need
    to add proxy functions.
    Inspired by what GtkApplication does.
  * system-modal-dialog: Move the padding from title to the dialog.
    This ensures that dialogues without title get the same padding. This
    will be useful for the power-menu.
  * system-modal-dialog: Hide title if empty.
    Some dialogs don't have a title and this avoids a large empty
    bar at the top.
  * resources: Sort icons alphabetically
  * Add power-dialog and manager.
    To be shown on power button press or by activating the power button in
    settings. This is currently used for screenshots, power-off, screen lock
    and the upcoming emergency call support.
  * top-panel: Trigger power-menu.
    Instead of the somewhat fiddly power-off/reboot/... menu use
    the more phone friendly power-button menu.
  * shell: Toggle power-menu on power button long press
  * settings: Remove unused template binding
  * settings: Crossfade empty notification state.
    Addresses parts point 2 of
    https://gitlab.gnome.org/World/Phosh/phosh/-/issues/788
  * mount-notification: Drop unused variable
  * notify-manager: Make it simpler to add shell notifications.
    Make it a single call to add a notification without actions.
  * screenshot-manager: Add notification when taking a screenshot.
    When the screenshot isin't triggered via DBus show a notification
    that the result was copied to the clipboard.
  * testlib: Allow to press key with timeout
  * revealer: Fix gtk doc string
  * system-modal-dialog: Fix signal name
  * power-menu: Wire up emergency calls
  * emergency-calls: Disable by default.
    We want to make sure the code is working reliably. For that we
    need a stable gnome-calls release and testing among more providers.
    Hence toggle it off by default atm until that happened. It can
    be enabled anytime using:
      gsettings set sm.puri.phosh.emergency-calls enabled true
    Distributions that want to enable it by default can use an override.
    We do this in separate commit so that we can easily revert it
    once we want to enable by default.
  * tests: Add more items to end-session dialog.
    This allows to check overflow
  * end-session-dialog: Wrap listbox in scrolled window.
    Avoids overflow with many items
  * rotation-manager: Use consistent naming.
    We call it accelerometer in other places
  * rotation-manager: Look at blanked state for claim/unclaim.
    No need to keep the accelerometer claimed when the screen is blanked.
  * rotation-manager: Don't match orientation when screen is locked.
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/914
  * rotation-manager: Fix orientation on unblank when locked.
    Changing the configuration when the screen is blanked doesn't do
    anything so fix it up on unblank.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/914
  * rotation-manager: Restore transformation on unlock.
    Now that we can hit the code path via blank and lock we need
    to make sure we don't overwrite the pre-lock transform.
    Simplify the code while at that.
  * emergency-menu: Improve placeholder page.
    Use a dimmed status page when the list is empty.
  * emergncy-menu: Set placeholder page to not visible.
    When the list is non-empty set the place-holder page as non-visible to
    work around https://gitlab.gnome.org/GNOME/libhandy/-/issues/468
  * testlib: Print full socket path.
    This makes is simple to spot races due to incomplete test fixtures.
  * ticket-box: Switch preferences to native dialog.
    This allows the file chooser to use the portal on slightly patched GTK.
  * gitignore: Add missing packaging dir
  * build: Use 'meson' instead of 'ninja' where suitable
  * build: Warn on outdated version.
    Warn when we detect versions that trigger less tested code paths because
    dependencies are outdated.
  * build: Add libfeedback version check.
    We want to use newer API
  * notifications: Respect per app feedback setting for notifications.
    When one changes the feedback profile for an application one expects
    notifications sent by that application to adhere to that too. Do that by
    using the applications app-id from the notification's app-info when
    available.
  * ci: Use image with feedbackd 0.2.0 and gtk 4.10
  * ci: Use feedbackd 0.2.0 for packaging build.
    We need to pull packages from experimental for that.
  * notifications: Drop fallback for older feedbackd.
    Distributions wanting to use older feedbackd can revert this commit.
  * ci: Reduce package build time.
    We're not interested in tests there.
  * packaging: Fix package name we look for
  * packaging: Don't set build-directory.
    This avoids a local package build messing with the default build dir.
  * tests: Enhance landscape config.
    Add x11 and wayland displays as well so it's ease to reuse to verify
    test failures
  * notify-manager: Allow to set a timeout on shell notifications
  * top-panel: Remove currently unused actions.
    What comes back will move to the power-menu.
  * top-panel: Close settings before taking screenshot.
    Otherwise it won't be very useful. Screenshots of the settings
    itself can be made via power-button long press.
  * rotation-manager: Simplify debug print.
    The values of orientation-lock and claim are known at this point.
  * rotation-manager: Match up orientation after unlock.
    We claim the accelerometer on unblank and make the orientation match the
    sensor readings. However when the device is locked we ignore these
    values. For these cases we want to match the orientation again after
    unlock. Thanks to Adam Plumb for the suggestion

  [ Sam Hewitt ]
  * system-modal-dialog: Add missing style for only-child dialog button.
    This avoids having only one corner rounded in dialogues with a single
    button.
  * data: Add icons for emergency call and screenshot
  * styles: Add style for emergency call related buttons
  * power-menu: Improve styling

  [ Мирослав Николић ]
  * Update Serbian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Aleksandr Melman ]
  * Update Russian translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Piotr Drąg ]
  * Update Polish translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Martin ]
  * Update Slovenian translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Fran Dieguez ]
  * Update Galician translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 01 May 2023 13:23:40 +0200

phosh (0.26.0) experimental; urgency=medium

  [ Guido Günther ]
  * ci: Montage all screenshot dirs
  * testlib: Prefix test env var with PHOSH_TEST_
  * testlib: Allow to override phoc.ini.
    This can be useful for testing different resolutions
  * tests: Set test type rather than locale.
    This allows us to reuse the tests for other things than
    testing different locales
  * tests: Screenshot high contrast shell too.
    This makes validation simpler.
  * tests: Copy keyfile to builddir.
    The tests modify the keyfile so in order to avoid an unclean source tree
    copy them to the builddir and use it from there.
  * tests: Run tests in landscape.
    Not all of them make sense as the device rotates to natural orientation
    for some of them but let's keep them for now as it would be nice to have
    those fixed for use cases like landscape plus keyboard.
  * tests/screenshots: Check return value too
  * tests: Make sure the keyfile is in place when the tests are run.
    Fixes: ce119310013d742762a6e6d1b56322d66a0d49e0
  * plugins/emergency-plugins-prefs: Fix deprecation
    gtk_widget_hide is deprecated in GTK 4.9
  * plugins/ticket-box-prefs: Ignore file chooser deprecation.
    As it's deprecated since 4.10 and the new GtkFileChooser is only
    available in 4.10 let's wait a bit until we move over.
  * ci: Use "meson setup"
    No functional change, just to avoid the deprecation warning
  * phosh-enums: Sort alphabetically
  * settings: Drop child properties that don't apply to HdyClamp.
    Fixes 394974f0e2fdb729f9772895c183b38dde7e5e79
  * settings: Make quick settings take enough vertical space.
    This avoids a scroll bar e.g. when opening settings on the lock screen
    when there's enough vertical space.
  * plugins/emergency-info-prefs: Mark labels as translatable.
    Thanks Piotr Drąg
  * main: Don't try to open default display when parsing gtk options.
    This makes `phosh --version` work without any compositor or with
    unconfigured XDG_RUNTIME_DIR.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/907
    Thanks to Ellie
  * rotation-manager: Don't react on power-mode changes.
    Since we split locking from blanking acting on lock is enough.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/903
  * wifimanager: Shorten property names.
    Matches HACKING.md
  * wifimanager: Add property docs.
    This makes sure they show up in the generated documentation
  * wifimanager: Track whether we're an active wifi hotspot
  * Add suspend manager.
    This gives us a place where we can put inhibitors. The first inhibitor
    prevents suspend when the wifi hotspot is active.
  * protocol: Update phosh-private to latest version.
    No functional changes
  * keyboard-events: Notify key release when using newer protocol version.
    Listeners can chose if they care by passing a boolean parameter to the
    action. If they don't pass any parameter they only get key pressed.
  * screen-saver-manager: Only blank on key release.
    This avoids unblanking the screen if the user presses the button for a
    longer period of time. It will also allow us to handle long press.
    Unblanking already happens on power button press as the activity fed by
    the compositor is enough (similar to e.g. the volume buttons).
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/911
  * d/control: Bump phoc dependency.
    Phosh will mostly work with earlier versions but 0.26.0 is required
    for the keyboard event protocol changes.

  [ Sam Hewitt ]
  * css: Fix quick-setting label in high contrast

  [ Newbyte ]
  * meson: Use proper SPDX licence identifier.
  * README: Use proper SPDX licence identifier.

  [ Aleksandr Melman ]
  * Update Russian translation

  [ Piotr Drąg ]
  * Update Polish translation

  [ Asier Sarasua Garmendia ]
  * Update Basque translation

  [ Balázs Úr ]
  * Update Hungarian translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Sabri Ünal ]
  * Update Turkish translation

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Martin ]
  * Update Slovenian translation

  [ Nathan Follens ]
  * Update Dutch translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 27 Mar 2023 11:48:28 +0200

phosh (0.25.1) experimental; urgency=medium

  [ Guido Günther ]
  * lockscreen-manager: Avoid multiple lockscreens.
    When bringing up the lockscreen and shields we might get more events
    from the compositor that can trigger locking, which might result in
    multiple lock screens. In order to avoid this, guard the locking sequence
    and only add more lock screens when done.
    This happens during suspend but can also happen when pressing the power
    button quickly without any lock delay. (Closes: #838)
  * lockscreen: Ref lockscreen during auth.
    This makes sure it can't go away while the auth thread is running.
  * layer-shell: Use cast.
    This gives us proper warnings if something goes wrong
  * lockscreen-manager: Improve check.
    We can check for the type too
  * layersurface: Use consistent logging.
    Always use the address of self, using the surface's address just makes
    matching harder. Also always put the namespace first.
    Doing this in gdb is easier but this makes debugging simple in case one
    doesn't have the sources around.

  [ Sam Hewitt ]
  * settings: Clamp sliders in quick settings

 -- Guido Günther <agx@sigxcpu.org>  Thu, 02 Mar 2023 11:01:11 +0100

phosh (0.25.0) experimental; urgency=medium

  [ Guido Günther ]
  * build: Use gnome post-install when available.
    As this is only for dev builds we can assume recent meson so drop
    the hand crafted build-aux.
  * meson: Use version_compare.
    Easier to read
  * build: Drop phosh-config.h.in.
    This avoids this file getting out of sync with the variables set by
    meson.
  * util: Use memfd for shared memory on Linux.
    This avoids makes shm handling simpler as the compositor doesn't have to
    worry about the SIGBUS handler.
    I got reminded of this by https://lwn.net/Articles/918106/
  * ticket-box: Drop superfluous '-prefs' in log domain
  * build: Add a shared header for prefs plugins.
    This is used to pass data for i18n so that we don't have to do it for
    every plugin.
  * ticket-box: Setup text domain.
    We use phosh text domain but treat things as a library so
    it can work in e.g. phosh-mobile-settings.
  * tools/plugin-prefs-standalone: Fix locale dir in test mode.
    The plugins don't know that we're using a prefix for the installed data
    in case we're running the tests so fix that up again after the plugin is
    loaded (which invokes bindtextdomain() with the unprefixed path).
  * postinst: Trigger update notification
  * util: Wrap g_clear_fd.
    This allows us to use it on older glib too.
  * screen-saver-manager: Separate locking from blanking.
    Honor org.gnome.desktop.screen-saver lock-enabled so we don't lock the
    screen if that is disabled and handle lock-delay to not lock
    immediately.
    For that we mark screensaver as active/inactive based on the power mode
    of the primary monitor. We don't use the built-in monitor since that can
    be disabled in multi-screen setups but the primary is the last one to go
    off.
  * screen-saver-manager: Document what affects blanking and locking
  * screen-saver-manager: Handle power button.
    This moves it out of the compositor allowing us to distinguish lock
    from blank
  * gnome-shell-manager: Don't allow to bind power key.
    This allows us to do the "blank screen" handling until we fixed gsd#703.
  * shell: Track blanked state via primary monitor.
    If that is blanked all other outputs should be blanked too
  * screen-saver-manager: Unset idle source close to return.
    The return value indicates we want to remove the source so reset
    the idle_id close to that.
  * screen-saver-manager: Inhibit logind actions on power button press.
    We want to handle this ourselves. This will hopefully move to g-s-d (see
    gsd#703) once there's consensus.
  * screen-saver-manager: Disable lock delay timer on unlock
  * screen-saver-manager: Disable lock delay timer when screen becomes active
    again
  * Add a revealer.
    Similar to Gtk's revealer but toggles the transition based on the
    `present` property which also triggers it's own visibility so we don't
    use up any size when the child is hidden.
  * top-panel: Use PhoshRevealer for the top bar status icons
  * plugins/ticket-box: Exit early if we fail to list the tickets
  * plugins/emergency-info-prefs: Setup text domain.
    We use phosh text domain but treat things as a library so
    it can work in e.g. phosh-mobile-settings.
  * plugins/emergency-info-prefs: Use AdwWindowTitle.
    Uses the correct style and ellipsizes automatically.
  * plugins/emergency-info-prefs: Use a larger default size.
    A larger window avoids scrolling and makes things less fiddly to type.
  * tests: Screenshot emergency plugin prefs too
  * keypad: Drop overly eager debug message.
    Just to be on the safe side in case someone has too much
    logging enabled.
  * thumbnail: Shorten property enum names.
    See HACKING.md
  * thumbnail: Move property doc to doc string.
    We have it documented, make it show up in the docs
  * notify-feedback: Handle locked as blanked.
    When the screen is locked and something lights it up (or the user is
    using a plugin) we want to make sure there's some feedback that a new
    event arrived so handle lock as blanked for now.
    We'll revisit this when continuing the notification feedback cleanup.
  * screen-saver-manager: Split out unarming the lock delay timer.
    Move it to a separate function makes things more descriptive
    and logging consistent. We'll also get a function for arming
    the timer in the next commits.
  * screen-saver-manager: Split arming the lock delay timer into separate
    function.  There are cases where we only want to activate the timer since
    the screen is already blanked (e.g. when the compositor initiated the screen
    blank).
  * screen-saver-manager: Make sure lock timer is enabled on power mode changes.
    The compositor can initiate power save. Make sure screen locking is
    enabled in this case too.
    This can happen via 3rd party tools but also when g-s-d sets the
    PowerSaveMode DBus property on phosh's DisplayConfig dbus interface - we
    could handle this by letting the PhoshScreenSaverManager listen to
    power-save-mode changes on PhoshDisplayManager but since we need to
    react to external changes anyway let's use the same code path.
    (Closes: #894)
  * util: Indicate that get_desktop_app_info_for_app_id can return NULL
  * app-tracker: Check for NULL app info.
    Related: #865
  * overview: Handle empty carousel.
    We use an explicit cast as the signal definition uses an uint.
    https://gitlab.gnome.org/GNOME/libhandy/-/merge_requests/841
    (Closes: #865)
  * rotate-info: Adjust to current coding style
  * rotate-info: Add enabled property.
    Only on when rotation sensor is present and not rotation is not locked.
  * feedback-info: Add enabled property.
    Only off when profile is `silent`.
  * wwan-info: Add enabled property
    `TRUE` when the hw is enabled.
  * quick-setting: Fix indentation
  * quick-setting: Shorten enum names.
    Match current coding style
  * quick-setting: Use current coding style for property
  * quick-setting: Don't use underscore in property name
  * quick-setting: Add active property.
    Set when the quick setting should appear active
  * quick-setting: Toggle style class based on status icons enabled state
  * top-panel: Simplify drag handle calculation.
    Make the bottom bar draggable by default and let PhoshSettings enlarge
    it by a given amount (it's drag-handle offset).
  * settings: Update drag-handle on size allocation changes.
    The allocation changes e.g. between portrait and landscape,
    thus we need to update the handle size.
    This, together with the previous commit
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/802
  * settings: Reindent ui file.
    This was skipped in 66642424a370890430702d65ea8d23be0f258e3b to ease
    rebasing.
  * settings: Swap clamp and scrolled window.
    This makes sure the whole width is scrollable which eases scrolling in
    landscape mode as there's no dead area to the left and right.
  * util: Detect multi finger touches too.
    When checking for a gesture type we need to handle multi finger presses
    as otherwise a 2 finger touch will open the panel. (Closes: #853)

  [ Chris Talbot ]
  * emerg-info: Factor out common enumerations
  * lockscreen-plugins: Add emergency info Preferences

  [ Cédric Bellegarde ]
  * screen-saver-manager: Add a suspend delay inhibitor.
    We need to be sure ActiveChanged D-Bus signal is emitted before going to
    suspend as we'd otherwise blank right after resume.

  [ Sam Hewitt ]
  * quick settings: Rework layout and stylesheets for new design
    - rework flowbox buttons to appear as toggles
    - shuffle around things to wrap entire pulldown with GtkScrolledWindow
    - update stylesheet
    - change how QS focus

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Martin ]
  * Update Slovenian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Hemish ]
  * Update Hindi translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 28 Feb 2023 13:03:17 +0100

phosh (0.24.0) experimental; urgency=medium

  [ Guido Günther ]
  * Drop pandoc.
    We don't need to convert from markdown anymore
    Fixes e29a16ff3e6fb3fcc46ceec4fe44f94b38006063
  * Drop deps on doc packages.
    Not needed for gi-docgen
    Fixes 89f58c9596950047ce83c5d6ced95d93a484e715
  * docs: Add GTK and Libhandy deps
  * notification-content: Check for `NULL`
  * notification-content: Check for NULL lookup
    g_desktop_app_info_get_string_list can return NULL, check for that.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/874
  * bt-info: Add translation context for "On"
    Add a context so "On" can have a context specific translations.
  * rotateinfo: Add translation context for "On" and "Off"
    Add contexts so "On" and "Off" can have context specific translations.
  * feedbackinfo: Add translation context for "On"
    Add a context so "On" can have context specific translation.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/880
  * ci: Avoid artifact download for ASAN job.
    It's not needed and just wastes bandwitch
  * ci: Update images to 2023-01-05.
    Update the amd64 images to not waste resources by
    package updates.
  * feedback-manager: Don't try to register signal if we can't get a DBus proxy.
    Otherwise we might crash on startup when feedbackd gave up due to a
    broken theme.
  * feedback-manager: Shorten property enums.
    Consistent with HACKING.md
  * feedback-manager: Update prop descriptions.
    Use doc strings before adding a new property
  * feedback-manager: Init icon_name.
    This make sure we always display an icon.
  * feedback-manager: Allow to track inited state via present property.
    If we fail to init libfeedback there's no point to allow the user to
    change feedback settings, etc. Hence export this state via a `present`
    property similar to other managers that map to quick settings.
  * feedback-info: Init parent class first
  * feedback-info: Update indentation.
    This is the common style nowadays
  * feedback-info: Track feedback-manager's parent property
  * settings: Set feedback quick setting sensitive conditionally.
    It only makes sense to display the icon when feedback manager is
    available.
  * dbus/login1: Improve argument name
  * util: Add a log domain
  * util: Make phosh_find_systemd_session more robust.
    Don't rely on the display manager to set the desktop environment as this
    currently isn't set by e.g. GDM on Bookworm. Rather use our current pid
    or let logind make the pick.
    Without this we fail to lock the screen when e.g. suspending on a
    laptop's lid close.
  * screen-saver-manager: Log if we can't get a session from logind
  * screen-saver-manager: Improve debug message.
    Let's debug both cases
  * ci: Make it simple to just run visual tests.
    The screen shot tests take screen shots of the running
    shell. Make it easy to just run those.
  * shell: Fix typo in comment
  * thumbnail: Improve class doc
    set_thumbnail must chain up to get the property changed
    signal emitted.
  * system-modal-dialog: Bind title property in init.
    Binding in constructed is too late if we want to set the title
    via ui file (as happened for the run command dialog)
  * testlib: Add ALT keys to modifiers
  * gnome-shell-manager: Use default dbus prefix.
    This makes names significantly shorter
  * dbus: Drop docbook generation.
    We'll switch to markdown once that is in a released glib
    version and meson supports it too.
  * tests: Screenshot run-command dialog too
  * tests: Screenshot the OSD too
  * ci: Fetch phoc with working pixman renderer from CI
  * tests: Reenable overview screenshots.
    With the pixman renderer fixed we can reenable these
  * po: Mark wayland session file as translatable.
    The "Comment" field can be translated
  * wayland-session: Improve comment
  * wayland-session: Split list by semicolon.
    It's a desktop entry files so separate entries should be semicolon not
    colon separated. This shouldn't have any practical consequences.
  * packaging: Drop superfluous override
  * data: Rename phosh startup script to phosh-session.
    This hopefully helps to avoid confusion.
  * docs: Add a manpage
  * docs: Add a manpage for phosh-session
  * Build and install manpages.
    This can be toggled via -Dman=false
  * tools: Enable flash in screenshot check
  * screenshot-manager: Invoke complete area functions.
    In case of failure complete the correct functions
  * screenshot-manager: Move code to capture all outputs into a separate function.
    This will make allow to merge it with the
    area capture code.
  * screenshot-manager: Use do_screenshot for area capture too
    handle_screenshot_area and handle_screenshot were doing
    mostly the same thing so let them use the same function.
  * screenshot-manager: Use automatic cleanup for frames.
    Otherwise we'd leak the frames when we fail to create the
    file name.
  * screenshot-manager: Emit screen-capture event.
    This allows us to trigger proper feedback.
  * lockscreen: Strip "figure-space" from am/pm time.
    Newer glib uses that instead of ' ' to pad the time.
    We can drop the whole `g_strv_length (parts) == 3` part once we require
    glib 2.74 at runtime.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/883
    Thanks to Nicholas High for the detailed report and testing
  * tests/take-screenshots: Remove unused variable
  * tools/plugin-prefs: Don't take all available space.
    Let the flowbox expand with it's members
  * tools/plugin-prefs: Init gettext
  * tools/plugin-prefs: Use actions to activate plugins.
    This allows us to add keybindings easily which in turn
    allows us to add keyboard shortcuts that can then be used
    in the screenshot tests.
  * tools: Build plugin-prefs too when building tests.
    The screenshot tests will use it
  * plugins: Keep plugins in a list.
    While phosh itself should never bother about the actual plugins
    but infer it automatically at run time it can be useful for
    tests and tools to have a static list.
  * tools: Don't hardcode plugin list
  * tests: Add prefs plugins schema paths.
    This is needed if we want to either load the lock screen plugins
    or their prefs
  * tests/take-screenshots: Run ticket box prefs.
    We'll toggle individual pref dialogs in follow up commits
  * tests/take-screenshots: Take screenshot of ticket box plugin prefs
  * ci: Drop needless fixup.
    Fixes 3312583e ("gitlab-ci: No need to forcibly remove lcov anymore")
  * lockscreen-manager: Remove unused variable
  * polkit: Detect cleanup functions.
    Rather than using versions to see if we have cleanup for the polkit
    related objects rather check for them.
  * rotateinfo: Fix typo in debug message
  * head: Fix typo
  * build: Avoid relative paths for enums
  * Update to gmobile 0.0.1.
    This is 0.0.1 plus a few patches to build with older glib and to build
    json-glib as a fallback when not present.
    We adjust to the new API in the same commit as it's a minor change
    and keeps things bisectable.
  * layersurface: Update copyright years
  * layersurface: Make sure we destroy the layer surface before the wl_surface.
    Newer wlroots otherwise treats this as a protocol violation.
    Thanks to David Leppla-Weber for proposing a fix and testing.
  * layersurface: Use class methods instead of signals for map and realize.
    This makes it consistent with how we handle "unmap" now so we don't have
    parts using the signal and parts using the class method.
  * wl-buffer: Move crucial check out of g_return_val_if_fail()
    This can be compiled out and although it's unlikely phosh is built that
    way, let's be cautious.
  * toplevel-thumbnail: Switch to PhoshWlBuffer.
    Avoids some redundancies
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/545
  * overview: Don't leak list
    gtk_container_get_children is `transfer container` so we need to free
    the list.
  * widget-box: Don't leak list
    gtk_container_get_children is `transfer container` so we need to free
    the list. Prompted by checking all call sites due the previous commit.
  * overview: Simplify list handling.
    Use automatic cleanup and a local variable. This makes it match other
    sites that use gtk_container_get_children.
  * network-auth-agent: Be move careful on cancel.
    When the request got canceled in dispose we must not access the object
    anymore so avoid access to self in that case.
  * d/control: Bump dependency on phoc.
    This is needed for the screenshot tests
  * Revert "ci: Fetch phoc with working pixman renderer from CI"
    We can rely on a packaged phoc now
    This reverts commit 9830a0c76658733d40e6c9d8c55d72e1f57d77e5.
  * ci: Switch package build to Debian bookworm.
    PureOS is lagging behind.
  * session-manager: Use default DBus prefix.
    This makes names significantly shorter
  * tests/screenshot: Wait a bit longer for prefs app.
    This helps on busy systems. Ideally we'd wait for the toplevel to show
    up.
  * tests/screenshots: Screenshot more dialogs
    See
  * build: Use summary()
  * tests/screenshots: Clarify comment
  * tools/plugin-prefs: Adjust setup when run in the test-suite.
    The test-suite installs the locale files in a local directory,
    make sure we pick those up.
  * tools/app-buttons: Hide close button. Looks odd in screenshots of the running
    shell as it has shell styling.
  * tests: Don't emit warning when org.a11y.Bus can't be bound.
    Otherwise tools like plugin-prefs might emit it, abort and
    make tests using them fail.
  * app-buttons: Use desktop files with fewer dependencies.
    We have these almost installed anyway for the build so use these so we
    don't have to pull in additional dependencies just for the icons.
    This improves the running-app and overview screenshots in the testsuite.
  * build: Avoid wayland protocols and gtk listmodels in docs.
    The wayland protocol headers trip up the gir-scanner as the format isn't
    compatible. The gtk list models have the wrong prefix. This reduces the
    amount of warnings when building docs a whole lot.
  * notification: Add some missing transfer annotations

  [ Andrey Skvortsov ]
  * lockscreen: Make plugins to use more screen width if available.
    It's especially very useful for plugins that display a lot of
    information on lockscreen like 'upcoming events' and 'emergency information'.

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Goran Vidović ]
  * Update Croatian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Ekaterine Papava ]
  * Update Georgian translation

  [ Martin ]
  * Update Slovenian translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Aleksandr Melman ]
  * Update Russian translation

  [ Hemish ]
  * Add Hindi translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 31 Jan 2023 13:06:29 +0100

phosh (0.23.0) experimental; urgency=medium

  [ Evangelos Ribeiro Tzaras ]
  * call: Only stop time when call is ended.
    We want the timer to continue ticking when on hold to be consistent with
    calls. Now we also need to guard against starting the GTimer multiple times.
    Originally filed as
    https://gitlab.gnome.org/GNOME/calls/-/issues/502
  * plugins/ticket-box: Remove duplicated text.
    One warning is good enough

  [ Guido Günther ]
  * call: Document class.
    This makes it show up properly in the documentation
  * sm.puri.OSK0: Document DBus interface.
    As other projects sync from here document the interface implemented
    by squeekboard, virtboard and phosh-osk-stub better.
  * docs: Include the sm.puri.OSK0 DBus interface in the documentation.
    This allows us to link to the rendered docs.
  * widget-box-standalone: Initialize libhandy.
    This makes sure the styles get loaded.
  * dir-locals: Prevent tabs in meson mode
  * Drop remaining users of config.h.
    It was renamed to phosh-config.h a while back
    Fixes: b5b03b0c0123e8533896cddbfff19f1648f77d61
  * widget-box-standalone: Improve comment
  * widget-box: Add missing quote
  * build: Add a pkgconfig file with plugin information.
    This allows other tools and external plugins to figure out
    the file system locations.
  * build: Allow to disable the plugin build.
    This allows to disable all plugins (e.g. to reduce compilation time
    or dependencies).
  * build: Add and install plugin header file.
    This simplifies external plugins.
  * plugins/calendar: Use plugin header
  * plugins/calendar: Pass plugin name to compilation units.
    This makes sure they don't get out of sync
  * plugins/ticket-box: Use plugin header
  * plugins/ticket-box: Pass plugin name to compilation units.
    This makes sure they don't get out of sync
  * plugins/upcoming-events: Use plugin header
  * plugins/upcoming-events: Pass plugin name to compilation units.
    This makes sure they don't get out of sync
  * Add a phosh-dev package.
    This includes pkg config files and headers. Currently this affects
    plugins and is useful for locating the plugins (e.g. to load them or
    parse related information) or to build plugins outside of phosh's source
    tree.
  * shell: Allow to query blanked state easily
  * notifications: Use silent feedback when blanked, not locked.
    Now that these two states will become different.
  * shell: Disconnect the right monitor in phosh_shell_set_primary_monitor.
    Fixes 817ac486 ("shell: Update top panel height on primary monitor resize")
  * shell: Simply on_monitor_removed logic
  * build: Add include directory for dbus sources too
  * Switch to gi-docgen (Closes: #589)
  * src: Fix doc headers.
    Drop short_description and title so gi-docgen can pick them up.
  * debian: Adjust packaging for gi-docgen switch
  * ci: Adjust to new doc location.
    We also skip the doc check until we fixed more warnings.
  * tools: Update doc check.
    Drop warnings/errors from wayland protocols and contrib source code.  We
    always exit with success for the moment until we cleaned up more bits.
  * wwan/ofono: Fix comment.
    Don't start with `**` if not meant for gtk-doc/gi-docgen
  * wwan/mm: Fix comment.
    Don't start with `**` if not meant for gtk-doc/gi-docgen
  * vpn-info: Fix property name
  * docs: Mention sm.puri.OSK0.
    The docs are generated via our patch to gdbus-codegen. Should these land
    we can create it during build time with the next glib release.
  * docs: Remove now unused files
  * network-auth-prompt: Document signal arguments
  * polkit-auth-promopt: Document signal arguments
  * ci: Skip pages job with PKG_ONLY

  [ Chris Talbot ]
  * lockscreen-plugins-calendar: Encapsulate calendar to include ui file
  * lockscreen-plugins-calendar: Encapsulate in GtkBox
  * lockscreen-plugins-calendar: Add CSS
  * lockscreen-plugins: Create Emergency Info and Contact Plugin

  [ Aleksandr Melman ]
  * Update Russian translation

  [ Zurab Kargareteli ]
  * Update Georgian translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Martin ]
  * Update Slovenian translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 20 Dec 2022 16:23:55 +0100

phosh (0.22.0) experimental; urgency=medium

  [ Guido Günther ]
  * build: Use glib_ver consistently
  * build: Bump required glib version to 2.66.
    This is the version in Debian stable so we can safely
    use this as baseline.
  * Allow for notifications to have actions on the lockscreen.
    Related: https://gitlab.freedesktop.org/xdg/xdg-specs/-/issues/103
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/620
  * Add libgmobile subproject.
    We'll use it for timers in follow up commits
  * upcoming-events: Use a suspend robust timer.
    We need a timer source that takes system suspend into account.
    Use gmobile's gm_timeout_add_seconds_once() that is there for
    that purpose. (Closes: #826)
  * lockscreen: Use G_SOURCE_{REMOVE,CONTINUE}
    Easier to read than TRUE/FALSE.
  * lockscreen: Use g_clear_handle_id()
    Less code, less chance to break things on refactor.
  * lockscreen: Don't use two independent if clauses.
    It's all based on index so use `if/else` instead.
  * lockscreen: Set entry sensitive when focused.
    Focusing will fail otherwise so let's keep these together
  * lockscreen: Mark entry as initially sensitive.
    This avoids the letter one on the keypad being focused initially
    fixing a visual glitch that was triggered by unifying button styles:
    https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1154 Tested
    with both phosh-osk-stub and squeekboard.

  [ codewood ]
  * batteryinfo: Use percentage instead of icon-name to determine icon.
    Icon themes like adwaita provide icons for 10% steps, use these based on
    the current battery level rather than just the 3 levels provided by
    upower via the icon-name property.

  [ Sam Hewitt ]
  * overview: Close button improvements
    - new more proportional close icon
    - remove redundant css from close button and activity widget
  * style: Unified the button styles
    - cleans up a lot of duplication of button css
    - makes a single style for all buttons

  [ Zurab Kargareteli ]
  * Update Georgian translation

  [ Nathan Follens ]
  * Update Dutch translation

  [ Vojtěch Vengrin ]
  * Update Czech translation

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Balázs Úr ]
  * Update Hungarian translation

  [ Danial Behzadi ]
  * Update Persian translation

 -- Guido Günther <agx@sigxcpu.org>  Wed, 26 Oct 2022 16:26:10 +0200

phosh (0.21.1) experimental; urgency=medium

  [ Guido Günther ]
  * screen-saver-manager: Shorten DBus names.
    Make it match the PhoshDBusLoginSession proxy.
  * screensaver-manager: Use cancellable.
    This makes sure we cancel pending calls on shutdown and allows
    us to drop some refs/unrefs.
  * packaging: Ship NEWS.
    It's a short summary of upstream changes.
  * packaging: Update copyright.
    This got improved quite a bit so lets fetch this upstream too
    to minimize the delta.
  * packaging: Fix postinst interpreter
  * event-list: Use plain week day.
    This matches the designs and helps languages that would otherwise
    need a more complex pattern.
  * upcoming-events: Use ngettext for different plural forms
  * Update libcall-ui to 0.0.5.
    There aren't any breaking changes but the style refresh
    makes longer strings fit way better.
  * log: Track log domains instead of passing it to the handler as user data.
  * ci: Update cross image. This allows the i386 build to pass again
  * screen-saver-manager: Shorten DBus names.
  * shell: Avoid screen-saver singleton.
  * monitor-manager: Add method to set power-save mode of all monitors
  * Move blank on presence status change to screen-saver.
    This was on the LockscreenManager before but for blanking
    only we want it on the screensaver.

  [ Evangelos Ribeiro Tzaras ]
  * packaging: Mark phosh-doc as Multi-Arch:foreign (was all)
  * log: Guard against setting g_log_set_writer_func() multiple times.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/841
  * shell: Tweak phosh_shell_set_state() debug message

  [ Fiona Klute ]
  * util: Don't use G_REGEX_JAVASCRIPT_COMPAT.
    G_REGEX_JAVASCRIPT_COMPAT is unsupported as of glib 2.74 and
    not needed for the regex at hand.
    This works around a crash triggered by glib's switch to pcre2.
    See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2920

  [ Sam Hewitt ]
  * style: Overview & appgrid fixes for high contrast

  [ Zurab Kargareteli ]
  * Update Georgian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Piotr Drąg ]
  * Update Polish translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Goran Vidović ]
  * Update Croatian translation

  [ Aleksandr Melman ]
  * Update Russian translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Марко Костић ]
  * Update Serbian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Rūdolfs Mazurs ]
  * Add Latvian translation

  [ Martin ]
  * Update Slovenian translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 26 Sep 2022 11:19:53 +0200

phosh (0.21.0) experimental; urgency=medium

  [ Evangelos Ribeiro Tzaras ]
  * Update libcall-ui.
    This brings some UX improvements for the call display and updated
    translations.

  [ Guido Günther ]
  * shell-manager: Simplify include
  * shell-manager: Report version over DBus.
    Use GNOME_PLATFORM_VERSION and phosh's version on recent GNOME and
    fall back to gnome-desktop XML for older versions.
    Thanks to Jeremy Bicha for bringing this up.
  * gitlab-ci: Update container.
    Drop several workarounds to fetch recent phoc and just get it from
    unstable until it migrates to testing.
  * ambient: Set array size to 0.
    A bit simpler than removing elements
  * ambient: Clear array when we unclaim the sensor.
    This makes sure we don't start with a partially filled array
    claiming it again
  * ambient: Make sure to stop callback and unref array.
    Otherwise we leak on shell shutdown.
  * ambient: Claim / unclaim the sensor on shell unblank / blank.
    This makes sure the sensor chip can sleep when the screen is off
    (and hence any theme switching is useless)
  * screenshot-manager: Capture all outputs.
    So far we only grabbed the primary one.
  * sceenshot-manager: Handle grabbing a screen area.
    This allows the "Selection" button in gnome-screenshot to work.
    We use the slurp tool for that.
  * d/control: Recommend slurp.
    Used for marking the screenshot area
  * tools: Add helper to take screenshots
  * screencopy-manager: Avoid stdout.
    This trips up alpine's compiler
  * screenshot-manager: Fall back to g_memdup for older glib.
    Can be removed once we can assume 2.68.
  * libcall-ui: Update libcall-ui.
    This unbreaks the lock screen by moving to a commit
    that includes
    https://gitlab.gnome.org/World/Phosh/libcall-ui/-/merge_requests/55
  * gitignore: Ignore packaging directories
  * build: Drop -DHAVE_CONFIG.H.
    Fixes b5b03b0c0 ("build: Rename config.h to phosh-config.h")
  * build/gtk-list-models: Make them available in other dirs.
    Use file() rather than relative paths and introduce variable
    for include directories.
  * build: Move app id to phosh-config.h.
    This makes it available for other services as well
  * ci: Update build-deps.
    Update the build deps for Debian builds so we catch new ones added in
    MRs.
    Things got a bit simpler now that recent phoc is in bookworm.
  * ci: Add eds-dev to alpine build-deps
  * Add gnome-shell's calendar server.
    Import the whole folder as of 2c89b62247cf65a806173c901334e18671f67440
    before making any changes.
  * calendar-server: Drop unused files
  * calendar-server: Fix build
  * calendar-server: Don't shadow local variable
  * calendar-server: Don't hardcode either phosh nor gnome-shell.
    Will hopefully allow to share the code in the future.
  * calendar-server: Handle NULL zone
  * calendar-server: Use SPDX-License-Identifier
  * calendar-server: Add color to events.
    We add them as additional hint to each event. Tracking color
    changes will be a follow up.
  * debian: Install calendar-server and it's dependencies
  * plugins: Add an upcoming events plugin.
    The upcoming-events plugin implements the phosh-lockscreen-widget
    extension point so it can be displayed on the lock screen. It shows the
    upcoming events during the next 7 days.  Includes style fixes by Sam
    Hewitt
  * tools: Enable upcoming-events plugin
  * tools: Don't use magic constant gtk style priority
  * main: Drop unused variable
  * ci: Exclude autogenerated and imported sources
  * plugin-loader: Add and use property getters.
    Eases adding tests
  * tests: Test plugin loader.
    We skip that under ASAN as plugins aren't found in the ASAN build.
  * ci: Drop Needs: for po and license checks.
    They don't need to wait for a build. This gives gitlab-ci more
    room to schedule jobs as it sees fit.
  * ci: Avoid artifact downloads for jobs that don't need it.
    This saves ci resources.
    Fixes: f4b8daec ("ci: Drop Needs: for po and license checks")
  * calendar: Add plugin information.
    This allows us to provide description, etc. Since we use keyfiles we can
    use the same keys as in desktop files to leverage the translation
    system.
  * debian: Install plugin info
  * upcoming-events: Drop underscore from plugin path.
    This makes it match the name.
  * upcoming-events: Add plugin information
  * widget-box: Don't load widgets twice
    phosh_widget_box_set_plugins() already loads them.
  * widget-box: Add a placeholder page when a plugin could not be found
  * widget-box: Drop define from printf
  * tools: Add a nonexistent plugin.
    This allows to easily check the missing plugin page

  [ Sebastian Krzyszkowiak ]
  * overview: Only focus an activity on page change if it's not focused.
    Fixes #818

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Balázs Úr ]
  * Update Hungarian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Goran Vidović ]
  * Update Croatian translation

 -- Guido Günther <agx@sigxcpu.org>  Wed, 31 Aug 2022 11:33:08 +0200

phosh (0.20.0) experimental; urgency=medium

  [ Guido Günther ]
  * media-player: Don't forget to clear cancellable.
    We did cancel it but didn't dispose it yet.
  * Switch to HighContrast based on ambient sensor readings.
    Add an automatic high contrast toggle that allows to switch
    to HC automatically based on the current light level.
  * settings: Drop superfluous can-focus properties
  * shell: Move style sheet getter to separate function.
  * tests: Add simple test to load stylesheet.
    Stylesheet changes trigger warnings ever so often, add a test
    to catch these early.
  * d/control: Bump phoc dependency.
    Needed for
    https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1115
    (Handle draggable-layer sizing on monitor mode changes)
  * home: Focus app search on application-view action.
    The application-view action (triggered by
    KEYBINDING_KEY_TOGGLE_APPLICATION_VIEW (super-a)) is supposed to focus
    the app search. This got broken when moving to draggable layer surfaces.
    Fixes: 22b03f7f2 ("home: Make it a draggable layer surface")

  [ Sebastian Krzyszkowiak ]
  * lockscreen: Use page-changed signal when appropriate
    notify::position sometimes ends up sending starting event with position
    of the page that's being switched away from, which made us execute handlers
    that should only be called when switching into a new page. Fix that by
    using page-changed signal when appropriate - timer handling still uses
    notify::position since it needs to react to scrolling just being started.
    Fixes #664
  * lockscreen: Allow show_unlock_page to execute mid-transition.
    Otherwise it feels like the key event is missed when the user starts typing
    while page switch is still being animated.
  * lockscreen: Clear input right away when pressing ESC.
    It gets cleared by page-changed handler, but that happens only at the end
    of the scroll animation. If the user presses ESC and then quickly starts
    to type again, we would counter-intuitively end up appending to already
    filled up entry.

  [ Sam Hewitt ]
  * style: Fix osd using hardcoded colors
  * style: Fix notifications in high contrast

 -- Guido Günther <agx@sigxcpu.org>  Wed, 03 Aug 2022 12:32:34 +0200

phosh (0.20.0~beta3) experimental; urgency=medium

  [ Guido Günther ]
  * lockscreen: Drop am/pm from time formats (Closes: #103)
  * data: Install and add icon to desktop file.
    This will allow us to use it in e.g. phosh-mobile-settings panels.
  * tests: Allow for phosh's icon.
  * build: Adjust to polkit version changes.
  * build: Rename config.h to phosh-config.h.
    Otherwise we end up including config.h from elsewhere e.g. gvc.
  * testlib: Kill compositor on SIG{ABRT,SEGV,TRAP}
  * drag-surface: Add threshold getter. For symmetrie with the setter.
  * drag-surface: Remove drag_surface_new (). The created object is not very
    useful as we need to setup layer-surface too.
  * drag-surface: Fix argument type. Fold margins are integers.
  * tests: Add drag surface test.
    This way we at test the setters and getters.
    Fixes: 578a666f7fb69553bdf82ff8ab390467ab25165f
  * tests: Don't change signal handlers when ASAN is in use.
    ASAN wants to tweak these so don't touch them in these cases.
  * build: Abort post-install on missing arguments.
  * gitignore: Ignore i18n related generated files
  * lockscreen: Avoid some keyboard filtering when not on unlock page.
    This allows for keyboard navigation with the upcoming lockscreen plugins
    and emergency call support.
  * Add widget box to lock screen.
    The widget box loads plugins that implement the phosh-lockscreen-widget
    extension point and puts them on the lock screen.
    Swiping to the left switches to the plugins if at least one is enabled.
  * build: Generate module cache on install
  * tools: Add standalone widget-box.
    This allows to test the lock screen plugins without
    running phosh itself.
  * plugins: Add minimalistic calendar plugin.
    It implements the phosh-lockscreen-widget extension point. It's
    main purpose is to have a minimalistic example.
  * debian: Install plugins.
    We use an extra binary package so people can easily get rid of
    plugins and their dependencies. It will also help splitting things
    into a separate repo later.
  * debian: Add trigger for plugin directory.
    Run gio-querymodules to build the cache. Most of this copied
    from Debian's glib package.
  * monitor-manager: Drop useless ref.
    We unref right away anyway (by automatic cleanup) at the end of the
    function
  * monitor-manager: Make different enum types explicit.
    PhoshMonitorTransform and wl_output_transform have the same values
    but don't convert implicitly.
  * monitor: Add helper to detect "tilted" transforms.
    We consider a transform to tilt the display if it changes the
    display orientation from portrait to landscape or vice versa.
  * head: Make header private.
    PhoshHead should only be used by PhoshMonitorManager (and tests).  We
    had it in the comments, reflect it in the file name too.
  * monitor-manager: Move transform setting to PhoshHead.
    It only affects the heads which will ease testing.
  * monitor-manager: Adjust layout when rotating an output.
    When rotating an output we need to adjust outputs left and below the
    rotated output to avoids gaps or overlaps in the layout.
    We shift all these heads whether they're currently enabled or not.

  [ Sam Hewitt ]
  * icons: Add symbolic icon for Phosh

  [ Sebastian Krzyszkowiak ]
  * tests/stubs: Add phosh_shell_get_docked
  * overview: Raise toplevels on activity scrolling.
  * shell: Don't fold the top panel and keyboard on unfolding home screen.
    This isn't necessary anymore.
  * ui/lockscreen: Set the PIN entry to be initially insensitive.
    We change sensitivity based on carousel page in C code, but
    the initial state stayed out of sync, which could cause
    the keyboard to pop up right after locking the screen.
    Fixes: 5300ba2ce ("lockscreen: Use entry focus to request OSK")
  * stylesheet: Remove background from keypad's focused buttons.
    Focus doesn't do much there as the lockscreen intercepts keyboard
    input by itself, so don't display any visible focus indication
    to not confuse users.
  * lockscreen: Focus PIN entry on carousel page change when OSK is on.
  * lockscreen: Focus PIN entry regardless of OSK status.
    Won't hurt, but seems like a good idea that may help accessibility tools.
  * stylesheet: Apply lockscreen PIN entry styles also to disabled state.
    Otherwise caret-color may end up being animated when toggling sensitivity.
  * home: Remove duplicated "unfold on no activities" handling.
    It's already taken care of by PhoshShell.
  * shell: Only fold the home screen when the first toplevel is added.
    Folding when any window appears can get annoying if the user unfolds
    the home screen while waiting for an app to launch (for example to launch
    another app simultaneously).
  * home: Don't (un)fold while being dragged.
    Don't forcefully pull the surface out from under the user's finger.
  * overview: Focus the activity on carousel page change.
    Without this, we may end up scrolling back to some previously
    focused activity on carousel focus if the active activity has
    changed while the carousel wasn't focused.
  * overview: Focus the activity right away when scrolling to it.
    This fixes the same issue as the previous commit, but in cases
    where scrolling has been invoked programmatically by phosh and
    the animation hasn't finished before PhoshHome gained focus.

  [ Alexander Mikhaylenko ]
  * docked-manager: Update gtk4 is-phone setting too.
    Since gtk4 needs to be parallel-installable with gtk3, it ships its own
    schema. Change it as well.

  [ Efstathios Iosifidis ]
  * Update Greek translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Мирослав Николић ]
  * Update Serbian translation

  [ Zurab Kargareteli ]
  * Update Georgian translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 19 Jul 2022 09:52:36 +0200

phosh (0.20.0~beta2) experimental; urgency=medium

  [ Guido Günther ]
  * screen-saver-manager: Lock screen when suspending.
    This avoids seeing the unlocked screen for a moment on resume.
  * run: Add --args when using gdb.
    This makes sure `-U` isn't parsed by gdb.
    Thanks to Adrien Plazas for pointing this out.
  * shell: Honor modal dialogs and full screen when raising top-bar.
    Just handling the fader isn't enough as we want full screen windows and
    modal dialogs to stretch over the top bar as well.
    We have some more cases like screenshost screen flash but that needs
    proper z-level which we can introduce once the layer-shell-effects is
    in. Same if we want system modal dialogs on the lock screen.
    Fixes: 55bbe5758ba947a1d77c4b75d4424ea8cf4ebac6
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/merge_requests/370
  * shell: Don't try to close top-panel when not yet created.
    On start up there's no top-panel so don't try to close it
  * shell: Select top-panel layer based on lock state.
    When the panel gets created we want the overlay layer in case the screen
    is locked, otherwise top layer.
  * idle-manager: Drop primary monitor.
    We don't need it there and just hold a ref that we (so far) never gave
    up again.
  * tools: Add helper to submit a notification.
    Makes it simpler to test notifications style from the command line.
  * data: Indicate that we provide user feedback via audio, led and haptic.
    This will help setting apps to configure this.

  [ Evangelos Ribeiro Tzaras ]
  * Update libcall-ui to v0.0.3.
    Brings some UI tweaks, encryption indicator that is bound to calls
    `encrypted` property, fixes a small issue with libcallaudio usage and
    lots of updated or added translations.

  [ Linus Walleij ]
  * shell: Set monitor when creating rotation manager.
    I had an annoying bug on Samsung phones such as GT-I9070,
    GT-I8160 and GT-I8530 all using DPI displays that did not
    properly instantiate the rotation manager, while
    phones on the same platform using DSI would work fine.
    If the primary monitor has already arrived when the rotation
    manager is instantiated, the monitor does not get assigned to
    the rotation manager.
    This happens of phones such as Samsung GT-I9070 which use
    DPI displays on MCDE that arrive apparently very quickly.
    The same U8500 platforms with DSI displays does not have this
    problem, presumably because the primary monitor arrives
    later.
    This fix was developed working entirely on the target,
    compiling Phoc and Phosh natively on the GT-I9070 dual Cortex-A9
    and iteratively editing, recompiling and testing modifications
    to Phosh on the target itself.

  [ Sebastian Krzyszkowiak ]
  * activity: Emit "resized" signal
    size-allocate can fire despite of allocation not changing at all,
    so add our own signal that checks forchanges to get rid of
    extraneous thumbnail refreshes.
  * util: Add phosh_util_toggle_style_class
  * activity: Add "fullscreen" property
  * toplevel: Add "fullscreen" property
  * overview: Don't draw grey background around fullscreen window's thumbnail
  * top-panel: Crossfade between fold states
  * lockscreen: Use entry focus to request OSK.
    This allows the compositor to make informed decisions about
    when to elevate the keyboard surface above shell.
  * home: Reset overview at the beginning of unfolding.
    This prevents flicker at the end of unfolding animation.
  * overview: Request a thumbnail for foreground activity on reset.
    This reduces the amount of flickering when the thumbnail gets
    updated, especially when OSK hiding is involved.
  * overview: Don't update thumbnails when overview is unfolded.
    We don't do live updates of thumbnails yet, so having them update out of
    sudden but only in some situations makes it look unpolished. We still want
    to update when overview is folded in order to keep cache of thumbnails
    in state that was seen by the user the last time when windows change focus.
  * home: Update keyboard interactivity right away when user starts folding.
    This gets rid of keyboard flicker when folding animation finishes and
    an application that requested input method gets focus back.
  * home: Use a revealer to fade in/out the keyboard button
  * home: Hide the keyboard button right away when starting dragging
  * home: Don't hide the arrow when the surface is being dragged.
    Without this check, the arrow stays hidden during folding with
    no activities until the end of that animation.
  * top-panel: Disable keyboard interactivity while dragged.
    This allows OSK to pop back up earlier when folding, and makes it stay
    visible during unfolding animation or drag.

  [ Pablo Barciela ]
  * app-auth-prompt: Drop unused code
    add_choice_to_gvariant looks at the switch state not at data
    we store on the GObject so this code can go.

  [ Gerben Jan Dijkman ]
  * polkit-auth-agent: Scope cleanup function for PolkitAgentListener.
    Newer polkit defines a cleanup function so avoid it for polkit >= 0.121

  [ Sam Hewitt ]
  * notifications: Layout adjustments
    * put buttons in a horizontal alignment
    * update some label style classes

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Piotr Drąg ]
  * Update Polish translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Jürgen Benvenuti ]
  * Update German translation

  [ Nathan Follens ]
  * Update Dutch translation

  [ Aleksandr Melman ]
  * Update Russian translation

 -- Guido Günther <agx@sigxcpu.org>  Wed, 15 Jun 2022 14:10:41 +0200

phosh (0.20.0~beta1) experimental; urgency=medium

  [ Guido Günther ]
  * This is a beta release
  * portal-access-manager Sync dialog visibility with locked state.
    Otherwise we can have the dialog pop up on the lock screen.
  * settings: Make ui file match the class name.
    Another ancient inconsistency cleaned up.
  * Add no-notifications icon
  * settings: Mark button label as translatable
  * settings: Add indication when there are no notifications
    (Closes: #744)
  * lockscreen: Fix typo
  * lockscreen: Remove unneeded packaging
  * lockscreen: Name clock and date labels.
    Rather than using a style class name this single instance.
    This allows us to attach style classes in less confusing ways.
  * lockscreen: Move call-ui down by top-panel's height.
    Since the top-bar now takes up space we don't want the back
    button to overlap the top-bar.
    We chose that approach instead of changing the lockscreens exclusive
    zone so that it keeps to extend below the top bar. This will make e.g. a
    transparent top bar work as the background can shine through and also
    make the "centered" property of GtkBoxes on the lock screen still center
    on the screen without having to care for additional padding.
  * top-panel: Move top-panel to overlay layer.
    This allows to show the indicators on the lock screen.
  * top-panel: Prevent unfold when locked.
    We'll enable quick settings access in a separate MR. This will be a bit
    more involved as we need to disable long press, hide notifications, etc.
  * top-panel: Hide clock when shell is locked.
    We have a clock on the lock screen already
  * lockscreen: Drop indicators
  * lockscreen: Adjust clock and data size based on notifications.
    If notifications are present use a smaller clock. (Closes: #640)
  * lockscreen: Add bottom margin to center clock and date
  * lockscreen: Use revealer to show/hide notifications
  * shell: Move lock setting to function.
    This way we can avoid setting it multiple times
  * shell: Use explicit notify for locked property.
    Avoids rerunning code when there aren't any changes.
  * proximity: Add property to track fader status.
    This allows other parts of the shell to perform actions based on
    that.
    We want to move the whole fader handling out of the proximity sensor at
    some point.
  * shell: Hide top-panel when proximity fader is on.
    Since the top-panel uses an exclusive zone and the fader doesn't, the
    top-panel is arranged on top of the fader. Due to this the top-panel
    would still accept input e.g. during phone calls which leads to odd
    results when typing with the ear.
    So hide the top-panel for the moment when the fader is active. Later on
    we can move it one layer down which is a bit nicer but needs the
    corresponding phoc patches to support that.
  * shell: Mirror docked property.
    Easier to access (read) in other places of the shell
  * shell: Document `locked` property
  * shell: Use getter for locked property.
    For consistency.
  * top-panel: Disconnect seat signals.
    Otherwise we might get called after dispose (e.g. after moving
    primary to a new output)
  * top-panel: Show keyboard indicator only in docked mode (Closes: #206)
  * top-panel: Remove packed from indicators box.
    Not needed there.
  * top-panel: Remove can-focus from indicators box.
    Not needed there.
  * batteryinfo: Fix indentation
  * feedbackinfo: Add muted property.
    This allows to hide the icon when 'full' profile is in effect.
  * top-panel: Show feedback indicator (Closes: #284)
  * util: Use GCC diagnostic push.
    This makes sure we restore the old value
  * settings: Add on-lockscreen property.
    Indicates whether settings are currently displayed on the lock screen
    or in the unlocked shell.
    This eases binding bindings in templates.
  * settings: Add a box for the elements not visible on the lock screen.
    Toggle these by the "on-lockscreen" property.
  * settings: Consolidate all g-c-c panel opening in a single location
  * settings: Ignore long press that leads to g-c-c.
    This won't work on lock screen. We can keep the long press on
    the rotation button as this doesn't spawn anything else.
  * settings: Reindent ui file.
    Do this as a separate commit to ease review and rebase
  * top-panel: Hide power button on lock screen.
    We might support that later on but just hide it for now. This will
    change anyway with gestures.
  * Revert "top-panel: Prevent unfold when locked"
    Let's allow for quick settings on the lock screen
    This reverts commit a5beb47745a8632ec3bab3377005a68b009ef2b4.
    (Closes: #603)
  * top-panel: Move power button.
    Move the power button out of the stack that has the size
    of the top-bar. This will allow us to style it properly.
  * top-panel: Style power button.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/331
  * top-panel: Add larger clock when panel is unfolded.
    See e.g. https://gitlab.gnome.org/World/Phosh/phosh/-/issues/331
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/717
  * top-panel: Use property binding for the clock.
    Less code.
  * top-panel: Add lock-screen button.
    See https://gitlab.gnome.org/World/Phosh/phosh/-/issues/331
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/331
  * top-panel: Add arrow.
    This makes it match the mockups more
  * top-panel: Disable power/user button when on lockscreen.
    We do this by introducing a "on-lockscreen" property.
  * top-panel: Remove <packing> from network box.
    Just use the defaults.
    We don't have outstanding changes there so it doesn't create any merge
    conflicts.
  * d/control: Add libxml-utils. This allows to strip blanks.
  * d/control: Add xwayland to test dependencies
  * d/control: Add librsvg2-common.
    This helps to load SVG icons in the tests
  * tests: Disable thumbnail related test.
    Phoc currently doesn't support this with the headless backend.
    See https://gitlab.gnome.org/World/Phosh/phoc/-/issues/262
  * gitlab-ci: Only run unit test suite on alpine.
    This is more future proof than just skipping the screenshot tests
  * gitlab-ci: Build container without cache.
    This makes sure the container is rebuilt instead of just refreshed.
  * gitlab-ci: Use more caps when running docker container.
    This allows us to run gdb, etc. and we mostly want it for debugging.
  * gitlab-ci: Use newer docker file for builds and tests.
    This makes sure we build against GNOME 42.
  * layer-surface: Use namespace in debug messages.
    This greatly simplifies figuring out which surface this is about.
  * shell: Document phosh_get_usable_area ()
  * shell: Add helper to get whole screen area
  * top-panel: Fix namespace
  * top-panel: Use the full screen height for the top panel.
    For that we reduce the notification's scrolled window minimum height a
    bit as it will expand by itself.
    This prevents the settings menu from expanding beyond the lower screen
    edge in portrait mode (which happened so far when media player and
    notifications were shown).
    Using the fulls screen height is also in line with the designs -
    although it will be a bit black heavy in docked mode. We will need to
    compensate for that e.g. by using less black (and e.g. just blur the
    underlying screen space).
    This is in preparation for the gesture code as the draggable surface also
    uses the full screen height.
  * settings: Set vexpand on the notifications list box.
    Otherwise the initial notification might get cut off if it has multiple
    lines and an action.
  * top-panel: Ease UI file navigation.
    Add some comments
  * top-panel: Fix box_clock indentation.
    When moving elements around we wanted to have as little diff noise as
    possible, fix that up now.
  * proximity: Move fader handling to separate functions.
    Unclutters the code but also makes sure we always emit the notify
    signal. This wasn't the case in on_proximity_claimed before which
    resulted in the top-bar not showing up again.
  * meson: Add default prefix
  * dbus: Use default prefix for org.freedesktop.hostname1
  * dbus: Use default prefix for org.freedesktop.login1
  * top-panel: Fix inverted on-lockscreen logic
  * top-panel: Hide lock on lock-screen
  * gitlab-ci: Pull phoc 0.13.1 from Debian sid.
    We need that for the tests to pass
  * d/control: Require recent enough phoc.
    We want one that has layer-surface v2 support
  * protocol: Update layer-surface protocol to version 4.
    This is from phoc as of commit e86771e1ffccf216b2c016cf93226cc77e5caab5
  * wayland: Require layer-shell protocol version 2.
    We want to use set_layer.
  * layersurface: Allow to set layer
  * shell: Lower top-panel when proximity fader is on.
    Since the top-panel uses an exclusive zone and the fader doesn't the
    top-panel is arranged on top of the fader. Due to this the top-panel
    would still accept input e.g. during phone calls which leads to odd
    results when typing with the ear.
    Moving the top-panel to another layer is a bit nicer than just hiding
    it since we still have the layer around on the unlocked shell in
    case something goes wrong.
  * gitlab-ci: Deduplicate locale generation
  * home: Fix typo
  * settings: Fix typo
  * top-panel: Update doc string
  * shell: Drop outdated comment
  * build: Untabify tests meson build file
  * overview: Drop properties at their default values
  * layer-surface: Drop constructed()
    We can do all the work in init() which is there anyway.
  * layer-surface: Only emit configured when s.th. changed
  * Add draggable layer surfaces.
    They use the layer-shell-effects protocol to mark themselves draggable in
    one direction.
    Implementation is similar to layer-surface:
      - configure on mapped
      - guard all property setters so they don't fail with a NULL drag_surface
        which is the case during object creation
  * phosh-wayland: Require layer-shell-effects.
    We can't do anything useful without it.
  * phosh-wayland: Make it more clear what's missing
  * util: Add helper to distinguish touch from non touch press/release
  * top-panel: Remove superfluous can-focus properties from network box
  * top-panel: Make it a draggable layer-surface.
    Turn the top-panel into a draggable layer surface. This changes the
    behaviour from hiding/showing certain elements based on folded/unfoleded
    state to having all elements visible all the time having the DragSurface
    determine which bits are currently on screen.
    Since the DragSurfaces has folded and unfolded states by itself we can
    use that instead of keeping track of it on our own.
  * top-panel: Use full screen height.
  * top-panel: Don't trigger feedback.
    We don't want haptic feedback on swipe start and not on click either
    as that will be mouse only.
  * top-panel: Animate arrow
  * top-panel: Handle mouse click via gesture.
    We don't want to trigger fold/unfold on touch events as they'll
    be used for drag.
    This allows us to drop the button completely.
  * settings: Allow to retrieve a suitable drag handle offset.
    Based on the UI elements calculate a suitable draggable area.
    In follow ups we can take the notifications scroll position
    into account as well.
  * top-panel: Update drag-handle based on settings.
    Respect the drag area for touches settings informs us about.
  * home: Make it a draggable layer surface.
    Disable click related handling for now. Will be added
    back in a later commit.
  * home: Don't trigger feedback.
    We don't want haptic feedback on swipe start and not on click either
    as that will be mouse only.
  * home: Drop some unneeded properties.
    Eases GTK4 migration
  * home: Handle mouse click via gesture.
    We don't want to trigger fold/unfold on touch events as they'll
    be used for drag.
    Similar to what we do for the top-bar.
  * settings: Don't close when clearing all notifications.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/760
  * tests: Disable parallel tests with compositor.
    They currently fail when run in parallel. We'll investigate when phoc
    side is merged. Tests don't run much longer as those are quick.
  * gitlab-ci: Use a compositor that can handle gestures.
    Workaround the fact that the phoc side isn't merged yet by grabbing
    a suitable package from CI.
  * top-panel: Reindent ui file.
    Mechanical change now that
    https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/934 is
    merged.
  * home: Reindent ui file.
    Mechanical change now that
    https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/934 is
    merged.
  * bars: Add back 1px border in high contrast.
    Fixes 0ea0cccfd ("home: Handle mouse click via gesture")
  * top-panel: Drop phosh-top-bar style class.
    We have CSS by widget class and name already , we don't need styling per
    class too.
  * top-panel: Emit activated signal instead of folding/unfolding.
    Don't frees the top-panel from managing it's own state again.
    While at that make the signal and method names match our top-panel
    naming.
    Fixes 0ea0cccfd ("home: Handle mouse click via gesture")
  * top-panel: Fix comment
  * shell: Rename panel to top_panel.
    The "panel" term is from the times when we only had a single
    panel at the top but no home panel.
  * notify-manager: Move source layout closer to guidelines.
    We want the signals above the definition and the forward declaration
    for interface right above G_DEFINE_TYPE_WITH_CODE().
  * notify-manager: Drop SIGNAL_ from signal names.
    Consistent with other source files.
  * notify-manager: Emit "notification-activated"
    Emit a signal when a notification gets activated. This allows other
    parts of the shell to react on this.
  * shell: Fold top-panel on screen lock.
    This avoids that the user doesn't look at the (almost empty) settings
    when unblanking the screen.
  * shell: Fold top-panel when a notification gets activated.
    Otherwise we still cover the whole screen
  * util: Add helper to check if gnome-software is available
  * app-grid-button: Add "View Details" entry.
    Helps https://gitlab.gnome.org/World/Phosh/phosh/-/issues/549 as
    gnome-software offers an uninstall button there.
  * d/control: Bump phoc dependency.
    We require at least 0.20.0 due to phoc-layer-shell-effects
  * gitlab-ci: Use phoc 0.20.0.
    We'll update the base images once it migrated

  [ Sebastian Krzyszkowiak ]
  * hks-manager: Set rfkill IOChannel to non-buffered.
    Part of the kernel API is that the messages are delivered as
    separate reads. Buffering can mess it up, so disable it.
    This has been made apparent by kernel commit
    54f586a9153201c6cff55e1f561990c78bd99aa7,
    which makes the reads not exceed RFKILL_EVENT_SIZE_V1 by default.
    We are asking for more, so buffering was doing additional
    read calls on our behalf.
  * top-panel: Set drag threshold to 0.3 for consistency with PhoshHome
  * top-panel: Update PhoshArrow progress during surface drag
  * home: Update PhoshArrow progress during surface drag

  [ Arnaud Ferraris ]
  * phoc.ini: Drop no longer needed scale config.
    As `phoc` is now able to automatically compute the scaling factor based
    on the output's physical size, we no longer need to set this value in
    the default config: `DSI` output should return a correct physical size,
    while `X11` and `WL` outputs advertise a 0x0 mm size, leading phoc to
    fall back to the default scale value (`1`).

  [ Thomas ]
  * Rename call-inbound to call-added.
    Rename the call-inbound signal to call-added and remove the check to see
    whether a call is inbound and display the call independent from its call
    state. This is required for emergency calls to work in #615 and !904.

  [ Sam Hewitt ]
  * osd-window: Update to match new design
    - changes osd window from fullscreen to top-aligned bubble
  * settings: Polish layout when there are not notifications
  * lockscreen: Tweak clock animations
  * lockscreen: Tweak wwan and battery indicator style.
    Close: #272
  * top-panel: Style tweaks.
    Improve clock and button styling

  [ InsanePrawn ]
  * gitlab-ci: Add networkmanager to alpine deps

  [ Pablo Correa Gómez ]
  * monitor-manager: Mark SetOutputCTM call as unimplemented
  * monitor-manager: Implement ApplyMonitorsConfigAllowed property.
    Otherwise the monitor configuration will be locked and not editable
    by the user.
  * monitor: Add "n-gamma-entries" property.
    The gamma-size handling in wlr is inherintly asynchronous. Therefore,
    track the value of "n_gamma_entries" in a property, so consumers
    can be notified of changes
  * monitor-manager: Implement NightLightSupported property.
    Will be needed for GNOME Settings to avoid letting users modify
    Night Light when that is not available.
  * dbus: Pull latest org.gnome.Mutter.DisplayConfig interface

  [ Nathan Sherwood ]
  * build: Use libhandy 1.2 if used as a subproject

  [ Nathan Follens ]
  * Update Dutch translation

  [ Pablo Barciela ]
  * Update Spanish translation

  [ Balázs Úr ]
  * Update Hungarian translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Luna Jernberg ]
  * Update Swedish translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Piotr Drąg ]
  * Update Polish translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Danial Behzadi ]
  * Update Persian translation

  [ Quentin PAGÈS ]
  * Add and update Occitan translation

  [ Zurab Kargareteli ]
  * Add Georgian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Hugo Carvalho ]
  * Update Portuguese translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 23 May 2022 11:11:56 +0200

phosh (0.17.0) experimental; urgency=medium

  [ Pablo Barciela ]
  * head: Variable 'float' instead 'int' for 'base_scaled_w'
    'floorf' returns 'float'
  * Fix [-Wignored-qualifiers] warnings.
  * meson: Avoid deprecated 'Dependency.get_pkgconfig_variable'
  * Update Spanish translation
  * wwan-info: Drop unused macro

  [ Guido Günther ]
  * layer-surface: Allow to fetch margins.
    This is a bit simpler than using g_object_get() directly.
  * layer-surface: Allow to fetch configured width and height.
    Avoid g_object_get() roundtrip
  * util: Move local_date() from lockscreen.
    It's useful in the top-panel too
  * arrow: Add doc string
  * home: Simplify osk button visibility setting
  * tests: Fix typo
  * wwan: Make source file name match PhoshWwanManager.
    We separate words by '-'.
  * vpn-manager: Drop property name prefix.
    Use the style from HACKING.md
  * settings: Include the abstract WWAN header.
    We don't use any backend specific code here.
  * docs: Add PhoshWwanManager
  * wwan-manager: Add data-enabled property.
    This allows to indicate whether mobile data is enabled
  * wwan-info: Make source file name match PhoshWWanInfo.
    We separate words by '-'.
  * wwan-info: Indicate status of mobile data.
    We use two arrays with icon names so we can still avoid allocations.
    (Closes: #721)
  * quick-settings: Follow g-c-c to Settings rename.
    We have another mention of org.gnome.ControlCenter in
    phosh_get_desktop_app_info_for_app_id() but let's keep that for one more
    iteration to ease upgrades. Settings now reports a sane app-id
    `org.gnome.Settings`.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/742
  * po: Drop es_ES.po. We have es.po
  * build: Document libphosh_{,tool_} sources
  * testlib: Clear heads and modes only when used.
  * debian: Install portal
  * ci: Simplify docker file for i386 builds.
    We don't need any packages from experimental anymore
  * ci: Use bookworm for i386 build too

  [ Sam Hewitt ]
  * data: Add no-data variant of cellular icons

  [ Kai Lüke ]
  * Emit WakeUpScreen signal and reset idle timers on resume.
    When the device resumes from suspend and there is no user input,
    gsd-power remains in the "sleep" state because there is no WakeUpScreen
    signal such that even when the new idle timer that gsd-power registered
    after resume triggers, the transition from "sleep" to "sleep" is
    ignored and the system does not suspend. A second difference to the
    behavior of Mutter/GNOME Shell is that on resume there is no reset of
    the registered idle timers which should also be fixed to ensure that
    Phosh behaves the same.
    Act on the logind PrepareForSleep signal (the resume case) to emit the
    WakeUpScreen signal and reset the idle timers.
    Fixes https://gitlab.gnome.org/World/Phosh/phosh/-/issues/686

  [ Florian Loers ]
  * portal: Add access api.
    Implements org.freedesktop.impl.portal
    Closes #49
  * data: Install phosh.portal.
    This makes xdg-desktop-portal use our access implementation.

  [ free software ]
  * po: Update Spanish translation

  [ Martin ]
  * Update Slovenian translation

  [ Jiri Grönroos ]
  * Update Finnish translation

  [ Мирослав Николић ]
  * Update Serbian translation

  [ Prasanta Hembram ]
  * Add Santali translation

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Emin Tufan Çetin ]
  * Update Turkish translation

  [ Piotr Drąg ]
  * Update Polish translation
  * po: Remove .pot file.
    Damned Lies automatically generates one for us.

 -- Guido Günther <agx@sigxcpu.org>  Tue, 22 Mar 2022 15:53:19 +0100

phosh (0.16.0) experimental; urgency=medium

  [ Guido Günther ]
  * Doc updates
  * tools: Add helper to check OSD
  * osd: Drop superfluous packaging. Eases the GTK4 port.
  * osd: Rely on GTK focus defaults. Smaller UI file and eases GTK4 port.
  * gnome-shell-manager: Simplify AcceleratorInfo handling.
    It was allocated outside of grab_single_accelerator() but
    the details weren't ever needed by the callers so keep things
    local so we don't end up leaking again.
  * keypad: Drop superfluous receives-default properties
  * keypad: Drop superfluous can-focus properties
  * doap: Update description
  * sm.puri.OSK0: Name method argument.
    This generates slightly nicer bindings and documents the
    argument in one go.
  * Drop osk-stub.
    Since this grew more and more features and people accidentally installed
    it (#720) move it to a separate repo:
    https://gitlab.gnome.org/guidog/phosh-osk-stub/
  * tools: Build app-buttons when tests are enabled.
    The screenshot tests use it and abort with a timeout if not
    present.
  * editorconfig: Bump line length to 100.
    This is what we've been using for some time
  * background: Don't unref NULL pixbuf.
    If no background was ever set we'd generate a critical otherwise.
  * phosh-wayland: Make sure to destroy all globals.
    Doesn't matter much in practice as they only get created once
  * phosh-wayland: Destroy output globals.
    Otherwise we leak on output hotplug too.
    Since we destroy the output when removing from the hash table
    we no longer need to do so explicitly.
  * layer-surface: Use g_clear_pointer.  Less code and easier to read.
  * tests/timestamp-label: Don't leak str
  * testlib: Finalize PhocWayland before killing the compositor.
    Otherwise we try to cleanup on a dead connection.
  * top-panel: Don't leak action_names.
    We free when the bindings change but not on dispose.
  * monitor-manager: Drop unused variable
  * monitor-manager: Use casts.
    This will warn us if we get the types wrong
  * tests: Generate better backraces with ASAN.
    It makes the ASAN runs way slower but backtraces are more useful with
    `fast_unwind_on_malloc=0`
    Partially fixes 7d5d1c39 ("ci: Drop valgrind run until we have more RAM")
  * leak-suppress: Add GDK leaks.
    Some things aren't cleaned up by GDK in GTK3. Add these.
  * testlib: Drop unused variable
  * tests: Add a stub for head handling.
    Otherwise we'll produce head related leaks in the tests.
  * gitlab-ci: Run phoc based unit tests as well.
    This greatly improves the ASAN coverage
  * tests-monitor-manager: Remove unused variable
  * wifimanager: Don't leak ssid on shutdown
  * test-take-screenshot: Free virtual keyboard
  * tests: Add osd-window unit test
  * fading-label: Add constructor
  * Avoid gchar in multiple places
    We want to use standard C types where possible
  * tests: Add fading label unit test
  * build: Move app-auth-prompt to libphosh_tool. This makes it available in
    the tests
  * tests: Add test for app-auth-prompt
  * keypad: Allow to shuffle buttons. Allow them 0-9 to take random positions
    while any extra keys remain at fixed positions)
    (Closes: #431)
  * lockscreen: Allow to toggle shuffle via gsetting.
    Enable via
       gsettings set sm.puri.phosh.lockscreen shuffle-keypad true
  * channel-bar: Don't expose adjustment.
    Rather emit the change signal directly. This allows us to e.g.
    set the slider to zero on mute while still retaining the old
    adjustment value.
  * channel-bar: Don't emit volume-changed when muted.
    We want to keep the original volume on the stream for unumute
  * settings: Set is-muted when channel is muted.
    This moves the volume slider to zero but unmute still restores the old
    volume.
  * channel-bar: Drop zero adjustment.
    This should have tracked the volume when muted but never did
  * monitor-manager: Fix fd leak.
    See https://gitlab.gnome.org/World/Phosh/phoc/-/issues/257
  * docs: Drop wayand protocols.
    Since they're not using gtk-doc parsing always gave heaps of errors and
    the generated don't have much to say either.
    It would be great to have them documented (e.g. by linking to the
    upstream docs) but we can do that with the switch to gi-docgen.
  * build: Bump meson version to 0.54.0. We'll use the fs module
  * protocols: Use custom_target.
    This reduces the number of targets from ~3700 to ~2500.
  * lockscreen-manager: Fix argument type
  * settings: Fix argument type
  * call: Use PROP_ID to override id, not PROP_DISPLAY_NAME.
    And the other way around.
    Fixes: 70dd1f2825d18a23337fb56dad9c469f2858bc29
  * call: Store all param specs.
    We'll store one in the follow up commit but let's not have
    an array with holes in it.
  * call: Handle active-time property.
    This makes sure the call time doesn't get reset when locking/unlocking
    the shell and call times are in sync with the calls application (except
    when the shell restarts). For that we update to libcall-ui 0.0.2
    Closes: https://gitlab.gnome.org/GNOME/calls/-/issues/322
  * Update libcall-ui to latest main.
    This picks up some fixes on top of 0.0.2 that eases the build
    for downstreams.
  * d/gbp.conf: Ignore Marge-Bot's Part-of:
    We don't want to clutter the changelog with that

  [ Adrien Plazas ]
  * Add PhoshClamp. This will be used to clamp the natural size request of
    buttons.
  * app-grid-button: Limit the natural width request.
    This uses a PhoshClamp to limit the natural width request of the button
    in pixels rather than limiting the label's maximum width in characters.
    This dissociates the width from the font size, giving us more control
    over the button's size, and this allows the button's labels to take more
    width if available.
    This purposefully leaves the indentation broken to ease review. It will
    be fixed in the next commit.
  * app-grid-button: Fix the indentation.
    It was purposefully left broken in the previous commit.
  * Add fribidi dependency.
    This will be used to create a fading label.
  * Add direction helpers using fribidi.
    This will be used to create a fading label. This is copied from
    libhandy, which itself copied it from GTK.
  * Add PhoshFadingLabel.
    This is copied from Libhandy.
  * app-grid-button: Use a fading label.
    This gives the title a single line as desired by the designers to match
    GNOME Shell and iOS, while making more of the title visible and being
    less aggressive than an ellipsis.

  [ Sam Hewitt ]
  * osd-window: Update the layout and refresh the style.
    Reorders the layout of things in the UI and simplify CSS.
  * shell: Update lockscreen and notification styles
    - puts all the styling for the notifications together
    - improved :focus, :active and :hover styles for all buttons
    - update notification bubble style

  [ Pablo Barciela ]
  * notifications: Reduce the scope of some variables
  * phosh-wwan-mm: Reduce the scope of variable 'modem_object_path'
  * layersurface: Reduce the scope of variable 'gdk_window'
  * util: Reduce the scope of variable 'fd'
  * gnome-shell-manager: Fix memory leak.
  * gnome-shell-manager: Assert on action id.
    Makes things more obvious and the static analyzer happy.
  * head: Fix [-Wbad-function-cast] warnings.
  * head: Compare float variables with G_APPROX_VALUE
  * test-head: Compare float variables with G_APPROX_VALUE

  [ Evangelos Ribeiro Tzaras ]
  * gnome-shell-manager: Protect against overflow.
    If we overflow we must not allow for any new grabs since
    we'd otherwise risk to overwrite old ones.

  [ Danial Behzadi ]
  * Update Persian translation

  [ Matheus Barbosa ]
  * Update Brazilian Portuguese translation

  [ Fran Dieguez ]
  * Add Galician translation

  [ Yosef Or Boczko ]
  * Update Hebrew translation

  [ Marc Riera ]
  * Update Catalan translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

 -- Guido Günther <agx@sigxcpu.org>  Wed, 23 Feb 2022 16:57:35 +0100

phosh (0.15.0) experimental; urgency=medium

  [ Guido Günther ]
  * wifimanager: Create NetworkAgent async.
    This avoids a `g_main_loop_run` in the sync init.
  * monitor: Fix indentation
  * doc-check: Allow to specify dir to check
  * doc-check: Avoid whitespace that breaks the check
  * wl-buffer: Move create_shm_file to utils.
    This can be used in multiple places
  * monitor-manager: Use phosh_create_shm_file.
    This fixes a missing error check for the returned fd as well.
  * toplevel-thumbnail: Use phosh_shm_file ()
  * run-command-manager: Fix section name and log domain.
    Drop the additional "dialog-" which is not part or the class name.
  * media-player: Only load file URIs.
    Data from the network needs to be fetched async since it
    can stall. (Closes: #583)
  * testlib: Ignore warnings and criticals from the compositor.
    (avoids test failures with older phoc)
  * gitlab-ci: No need to forcibly remove lcov anymore.
    Debian's gcovr doesn't depend on lcov anymore
    (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=987818)
  * gitlab-ci: Use newer docker image.
    This doesn't forcibly remove lcov anymore which makes e.g. adding
    packages easier.
  * system-prompt: Handle mnemonic in choice label.
    Some of the prompt use it (e.g. gpg prompts for "save in password
    manager"). Otherwise we'd just get a leading '_'.
    Fixes: de1b395e ("system-prompt: Make sure the choice label wraps")
  * system-prompt: Use consistent spacing.  We use 6px between label and
    button.
  * toplevel-thumbnail: Drop flag check
    phoc <= 0.10.0 sent y_invert although we didn't use it. Phoc
    >= 11.0 doesn't send it triggering the critical so drop it.
  * run: Drop gnome session setup.
    Most of the time people want phosh+phoc so the session just causes
    trouble. We can drop it and people can needing a session can just fire
    it up. Adjust the README accordingly.
  * run: Always start unlocked.
    Running nested is the main use case and one usually wants an
    unlocked shell there so run unlocked by default.
    If people want to run locked they can pass '-L'.
    Adjust docs accordingly
  * README: Drop install step.  One can run fine out of the source tree and
    this avoids spreading files all over /usr/local.
  * README: Make phoc config the first argument.
    Makes it easier to edit phosh's run options
  * README: Use a screenshot of the unlocked shell.
    Since this is what we're launching in the example above.
  * run: Make it simple to override debugging.
    While full debugging is often useful sometimes one wants to limit to
    certain modules so honor a set `G_MESSAGES_DEBUG`.
  * README: Use ```sh for shell snippets.
    Be consistent. Also drop leading whitespace to ease copy/paste.
  * README: Fix path to gitlab-ci file
  * README: Drop section on libhandy.  It can be used as a subproject
  * run-command-dialog: Split submitted and cancelled signal.
    This will simplify processing when we handle errors better.
  * run-command-manager: Fix indentation
  * run-command-manager: Return success/failure when running command.
    Swap success/failure case while at that to avoid a negated expression.
  * run-command-dialog: Drop unneeded can-focus properties
  * run-command-{dialog,manager}: Show error message when command failed
  * run-command-dialog: Use on_ prefix consistently.  We allow for both
    (preferring `on_`) but don't want to mix in the same class.
  * background: Allow absolute paths too.
    When e.g. gnome-photos sets a background it uses an absolute path.
  * util: Add helper to markup escape text.
    This either escapes all markup or preserves elements allowed
    via the notification spec in a notification body. Based on
    what gnome-shell does as of commit
    919c4cf3d5657dd93f0c14c21a30071b8e90f6e2. Bugs introduced are
    my own.
  * notify-manager: Escape notification bodies.
    Otherwise bodies with markup would silently be dropped.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/690
  * system-modal-dialog: Mark swipe-away-bin as vertical
  * stylesheet: Sort colors alphabetically.
    Makes things easier when we add more
  * gitla-ci.yml: Don't build tests when building the docs.
    This brings down compilation time and resource usage and
    the tests don't contribute to the docs atm.
  * system-prompt: Don't access priv before checking the type
  * tests: Name screenshot suite as such.
    The tests aren't manual anyway since they're run by default.
  * Move network-auth related bits out of wifi-manager.
    Other connections types such as VPN want to do auth too
  * network-auth-prompt: Remove unused nmclient
  * network-auth-prompt: Drop custom Esc-key handler.
    Rather only use the one from system-auth-prompt since that is also
    wired up to properly cancel the network-auth request via
    `on_dialog_canceled()`.
    Otherwise e.g. VPN auth prompts can hang up to timeout
  * network-auth-manager: Use cancellable for agent registration too.
    We want to cancel this in case of e.g. early shutdown.
  * network-auth-manager: Use a separate cancellable for registration.
    NM doesn't like if we cancel a successful operation later on rather
    crashes in NMSecrentAgentOld's _register_cancelled_cb since the task data
    is already freed.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/673
  * newtork-auth-manager: Drop unused nmclient.
    Now that network-auth-prompt dropped it we can drop it here too after
    fixing cancellation.
  * contrib: Add vpn plugin related bits.
    Bring over the VPN plugin related bits as from gnome-shell's
    shell-network-agent as of 919c4cf3d5657dd93f0c14c21a30071b8e90f6e2.
  * network-auth-{manager,prompt}: Support VPN authentication.
    Heavily inspired by what NetworkManager's secret handling. Errors
    introduced are my own.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/630
  * network-auth-prompt: Use request_id to check if we're done
  * network-auth-prompt: Don't allow to reuse prompt.
    This allows the the auth-manager to figure out if we're already
    busy.
  * network-auth-manager: Cancel overlapping requests.
    Don't drop them to floor silently anymore. Later on we
    should just put them on a queue and process them one
    after another.
  * wifimanager: Drop unused set_property
  * Add vpn-manager to track the vpn status.
    Minimal implementation, will be expanded once we add a quick setting.
    It will later be used in the quick setting to toggle VPN on/off, etc.
  * shell: Spawn vpn-manager
  * Add vpn-info to display VPN state.
    Minimal implementation, will be expanded once we add a quick setting.
  * top-panel: Add VPN indicator.
    This displays the VPN state in the top-bar.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/631
  * vpn-manager: Handle wireguard connections as VPN connections
  * gitlab-ci: Set defaults.  Let's retry jobs on infra changes, make them
    interruptible and not run "forever".
  * gitlab-ci: Indicate it's a remote include.
  * gitlab-ci: Add MR sanity checks.
    These are taken from mesa and spot things like unsquashed fixups, etc.
    The commit-rules are based on what gnome-shell does.
  * README: Update to match reality.
    The XMPP channel and mailing list are unused so drop these
    together with the broken reference to developer.puri.sm which
    lost some redirects when it got moved recently.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/705
  * session: Swap entries
    xdg-desktop-portal does a left to right lookup - this makes sense as we
    go from specific to generic. So swap the entries.
  * build: Make it easy to build osk-stub conditionally.
    This avoids people installing it accidentally, messing
    up their installs.
  * osk-stub: Uncrustify.
    Reformat so further changes are simple
  * osk-stub: Remove unused variable.
  * osk-stup: Use EXIT_FAILURE.
  * osk-stub: Init gtk and listen to registry.
    This will allow us to hook up the input-metnod protocol
  * osk-stub: Add input-method stub.
    This allows us to trace input-method requests
  * osk-stub: Add an input surface.
  * osk-stub: Animate show/hide of the input surface.
    Do this when it is actually committed
  * osk-stub: Add debug output to intput-surface.
    This makes it easy to see ongoing changes
  * osk-stub: Add force-show debug flag.
    Usually we want to hide the surface when not used. Add a flag to
    always show it so we can trace activate/deactivate better.
  * build: Allow to disable the tools build.
    They are rarely needed but add on the build time so don't
    build them by default but in CI.
  * osk-stub: Indicate GNOMEs screen-keyboard-enabled setting.
  * app-grid-button: Drop unused variable.
  * activity: Allow to activate by keyboard.
    Activate the selected activity when hitting return
    (Closes: #701)
  * settings: Hide docked quick setting when not docked.
    It's only useful when we're there's enough hardware for docked
    mode.
  * settings: Hide torch quick setting when no hardware is found.
    We need to add the flowbox child for that since just hiding the
    QuickSetting won't make the FlowBox give up on the FlowBox Child's
    space.
  * data: Move icons into subdirectory.
    This unclutters data/
  * data: Add icon for disabled vpn.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/979>
  * vpn-manager: Track present and last connection.
    We indicate VPN presence when at least one VPN is configured.
  * settings: Add VPN quick setting.
    We only show it if there's at least on VPN configured. Toggling
    the quick setting either shuts down an active VPN or activates
    the last active one.
  * osd-window: Disable keyboard interactivity.
    We don't want keyboard input in the OSD anyway but this
    additionally makes sure the focused client doesn't reenable
    text-input potentially unfolding a manually hidden keyboard.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/706
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/1001>
  * settings: Print panel name on error.
    We free it in the callback now than after invoking the
    DBus call.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * quick-setting: Use const char * for panel.
    This indicates that we don't transfer any ownership
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * quick-setting: Check return value.
    When the return value is `NULL` an error occurred.
    This also tricks the compiler in not treating the variable
    as unused.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * gnome-shell-manager: Drop NULL check
    g_new0() terminates the application if allocation fails
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * monitor-manager: Drop unused variable.
    Fixes a6bab85e ("Allow to switch output configurations")
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * status-icon: Don't leak icon-name.
    When getting the property we phosh_status_icon_get_icon_name()
    which is transfer-full.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * run-command-manager: Avoid unnecessary copy.
    There's no need to build a GPtrArray and turn that into a GStrv
    when we can use the GStrv directly (which also leaked).
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * top-panel: Avoid unnecessary copy.
    There's no need to build a GPtrArray and turn that into a GStrv
    when we can use the GStrv directly.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * tests/mount-notification: Don't leak name.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * tests/util: Don't leak.
    Make sure we free the allocated markup and add macro to make things
    more concise while at that.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * tests/status-icon: Don't leak icon name.
    It's returned as transfer-full.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * tests/notification: Fix leaks.
    The values returned from `g_object_get()` are always allocated.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * tests/notification-source: Fix leak.
    The values returned from `g_object_get()` are always allocated.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * meson: Pass ASAN leak suppression automatically.
    No need handle these manually.
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>
  * gitlab-ci: Run unit tests under ASAN too.
    We currently only run the "pure" unit tests since the other
    ones need more cleanup.
    Partially fixes 7d5d1c39 ("ci: Drop valgrind run until we have more RAM")
    Part-of: <https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/999>

  [ Sebastian Krzyszkowiak ]
  * Switch to wlr-gamma-control protocol (Closes: #62)
  * app-grid: Debounce app search.
  * settings: Set/unset mute when setting output stream volume.

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Rafael Fontenelle ]
  * Update Brazilian Portuguese translation

  [ Pablo Barciela ]
  * Fix [-Wmissing-field-initializers] warnings inside GActionEntry.
  * shell-network-agent: Fix [-Wmissing-field-initializers] warnings.
  * GActionEntry: use designated initializers.

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Evangelos Ribeiro Tzaras ]
  * gitlab-ci: docker: Fix conditional.

  [ Fabio Tomat ]
  * Update Friulian translation

  [ PanzerSajt ]
  * lockscreen: Allow to show OSK to enter passwords.
    Add a button to the keypad that unfolds the osk and shows
    a text Entry. This allows for arbitrary passwords

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Nathan Follens ]
  * Update Dutch translation

  [ Alexander Mikhaylenko ]
  * swipe-away-bin: Add hide() and reveal()
    Support programmatic revealing and not just removing.
  * swipe-away-bin: Make orientable
  * swipe-away-bin: Add property to allow swipes in the other direction
  * swipe-away-bin: Add reserve-size property
  * panel: Use GtkGestureMultiPress and released signal for closing.
    Make sure we don't interfere with swipes in future.
  * notification-frame: Reimplement activation via GtkGestureMultiPress.
    Unfortunately, in GTK 3 it's not possible to use single click row
    activation together with swipes; they will interfere. Meanwhile, we still
    need activation for keynav, so switch to double click activation and
    implement it manually instead. Use this chance to unify click handling with
    the header.
  * notification-frame: Support swipe-to-remove

  [ Sam Hewitt ]
  * settings: Use speakers icon for volume slider
  * settings: Move media player above notifications box
  * settings: Add name property to clear all button
  * settings: Add style class to notifications header box
  * media-player: add style class to art
  * lockscreen: Add style classes to icons and text
  * lockscreen: Use full width for notifications and media player
  * stylesheets: GTK overrides for sliders.
    Make them look more like in the current mockups.
  * settings: Adjust quicksettings radii
  * lockscreen: Give the date and time more weight
  * stylesheet: Adjust modal dialogs to mockups.
    Most notably add a margin.
  * overview: remove background and borders from shell scrollbars
    hides unneeded gtk stylings from the scrollbar troughs mainly in the
    overview.
  * overview: Add focus style to the search box
    - remove some gtk styling
    - mirror the focus styling of the search box on desktop shell
  * overview: Improve grid separator styling
    - Add margin to the separator for better visuals
    - Use named colour to draw it so it isn't lost on light theme

  [ Danial Behzadi ]
  * Update Persian translation

  [ Vittorio Monti ]
  * Update Italian translation

  [ Matej Urbančič ]
  * Update Slovenian translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 23 Jan 2022 13:37:35 +0100

phosh (0.14.1) experimental; urgency=medium

  [ Guido Günther ]
  * Fixup margin-{start,end} vs margin-{left,right}.  The later ones are
    deprecated and complicate the GTK4 migration.
  * osk-manager: Drop `PHOSH_OSK_` prefix from property enum.
    Make it match what we use in HACKING.md
  * osk-manager: Use shell to listen for lock status.
  * osk-button: Make sure we disconnect signals when button goes away.
    When the button gets destroyed we need to disconnect the signals
    from osk-manager.
  * ui: Drop all glade markers.
    These are spread around although files aren't glade edited.
  * wifimanager: Don't drop unimplemented prompts silently.
    Instead of just doing nothing cancel the request so NM doesn't
    end up waiting until we hit a timeout. This mostly affects
    VPN prompts. This makes sure we don't interfere with e.g.
       nmcli c up <myvpnconnection>
    Related https://gitlab.gnome.org/World/Phosh/phosh/-/issues/630
  * app-grid: Ellipsize app filter button.
    This prevents horizontal scrolling when users select large fonts.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/645
  * lockscreen: Remove out of place '>'
    Fixes: 316a65c7 ("lockscreen: Allow to accept incoming calls")
  * Bring over HdyKeypad from libhandy 1.2.2.
    Adjust by dropping unused features. We do this in one commit to keep
    bisection intact. We use phosh-keypad as CSS class to not conflict with
    libhandy's keypad css class.
  * keypad: Derive from GtkGrid.
    GtkBin does not exist in Gtk4 so derive from GtkGrid directly.
    It's o.k. to expose the grid/container API here since this isn't
    a shared lib. This simplifies the GTK4 migration.
    While at that drop make it a non-derivable type for now.
  * dbus: Update calls DBus interface.
    Taken from calls commit 8f9f7311fa7095492c2c900a23610e3b86a874dd
  * call: Add avatar-icon property
  * tests: Use avatar in screenshots.
    We use cat.jpg from gnome-control-center
    License is GPL-2+ which is compatible with the demo app.
  * tests: Screenshot uk locale too.
    It's usually very complete and uses we get a
    good idea about cyrillic language layout.
  * subprojects: Forward to latest libcall-ui.
    This includes the textdomain fixes.
  * tests: Fix translations for call related screen shots
  * debian: Don't install libcall-ui translations.
    They're shipped by calls.
  * d/copyright: Flip sections.
    This makes lintian happy.
  * notify-manager: Set urgency.
    Don't forget to set the urgency when parsing the hints.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/653
  * notify-manager: Don't use a fallback icon for critical notifications.
    See Tobias comment in
    https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests/938
  * docked-manager: Ensure mode_changed_cb() sets all values on startup.
    If can_dock is False the mode_changed_cb() triggered from
    docked_manager_constructed() exits early letting the GSettings at their
    previous values. Make sure we always set these initially since we mode
    before e.g.  device shutdown might be different from the mode on boot.
  * build: Drop glib fallback.
    Since we don't require more recent glib than 2.62 we can also drop the
    fallback.
    Fixes: 8f37b6c9 ("tests: Drop g_test option")
  * layersurface: Make debug message more useful
  * shell: Add and use phosh_shell_set_builtin_monitor()
    More descriptive than `on_monitor_added()` and the later will
    do more soon.
  * shell: Simplify by using g_set_object.
    Move clearing and setting to one step that will also handle NULL
    correctly.
  * Allow the primary monitor to be NULL.
    This can happen when all monitors are gone.
    We basically need to make sure we don't create surfaces on gone devices
    but add them once a new monitor shows up.
  * shell: Remove primary-monitor startup workaround.
    Since we handle NULL now we can just catch up once a primary monitor is
    there.
  * shell: Trigger selection of a fallback monitor when all went away.
    When all monitors went away we need to select a new one to enable.
  * shell: Move find_builtin_monitor upwards.
    We'll use it from phosh_set_builtin_monitor soon.
  * shell: Rename phosh_set_builtin_monitor
    use phosh_shell_ prefix as with other methods
  * shell: Update builtin monitor in on_monitor_removed as well.
  * shell: Make sure we pick a new builtin monitor.
    Since monitors get removed at the very end of their live from the list
    of monitors we need to make sure we don't pick the same one when looking
    them up.
  * shell: Move compositor state notification to its own method
  * shell: Use compositor notifications on primary flips.
    When there's no primary monitor left let the compositor know we're in a
    recovering state and notify it when things went back to normal. This
    allows it to fade us in properly.
  * monitor: Split finalize and dispose
  * monitor-manager: Release wayland resources sooner.
    Start disposal of the monitor early so wayland resources are already
    released and hence can be re-added when e.g. a display of the same name
    shows up again. This mostly affects wlr-output-power.
  * monitor-manager: Clear pending head states on errors.
    Makes sure there are no pending head state changes when aborting
    a config, this might otherwise leak to other head changes in the
    future e.g. via phosh_monitor_manager_set_monitor_transform().
  * monitor-manager: Make it clear that the we were invoked with invalid data.
    The issue is not that we didn't get a primary monitor but rather that
    the sender didn't specify one.
  * monitor-manager: Fix protocol name in debug message
  * monitor-manager: Allow to select primary that is currently disabled.
  * ci: Always print error logs on failure.
    Makes debugging easier
  * testlib: Print compositor startup message.
    This helps to figure out when it started
  * testlib: Terminate comopsitor on SIGTRAP.
    Currently meson tests time out since the test/shell process ends on e.g.
    a SIGTRAP caused by a g_critical () while the compositor process keeps
    running making meson wait until it hits the timeout.
  * po: Remove panel.c from POTFILES.in too.
    Fixes: 08db8d89 ("Rename panel top top-panel")
  * po: Fix POTFILES.skip.
    The syntax didn't make `intltool -m` happy causing the
    check-po test to fail silently.
    Fixes: 0343af09 ("po: Use wildcard to ignore subprojects")
  * run-command: Use 'activate' signal.
    Avoids GDK event filtering.
  * system-prompt: Make sure the choice label wraps.
    Use a separate label where we can set the "wrap" property.

  [ Pablo Barciela ]
  * gnome-shell-manager: Fix show error, inside 'on_bus_acquired' function
  * app-tracker: Fix dereference of a null pointer.
  * notification-content: avoid duplicate break

  [ Hunman ]
  * app-grid: Sort with collation

  [ Dorota Czaplejewicz ]
  * gitlab: Improve bug report template

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Luna Jernberg ]
  * Update Swedish translation

  [ Florian Loers ]
  * Add run-command dialog with Alt+F2 shortcut.
    Closes #610

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Sebastian Krzyszkowiak ]
  * activity: Fix cut out thumbnails.
    Since 117e397da924093573e8dec57649b8615a7b079e, thumbnails were
    often cut out at the bottom. This was because get_scale function
    was checking size of a different widget than before refactoring.
  * ui: Move Activity's 6px bottom margin from GtkButton to Overview's
    Carousel.
    For thumbnail sizing to work correctly, PhoshActivity shouldn't have other
    margins than the ones defined by GtkDrawingArea.
  * overview: Use phosh_shell_get_usable_area for activity aspect ratio.
    Previously we effectively used the aspect ratio of PhoshOverview itself,
    which wasn't exactly the same as the ratio of most maximized applications.
  * activity: Take margin into account in get_preferred_width_for_height.
    The aspect ratio we're interested in is the one of GtkDrawingArea, so to
    get the aspect ratio of whole PhocActivity need to compensate for drawing
    area's margins.
  * activity: Add phosh_activity_get_thumbnail_allocation
  * overview: Request thumbnails based on GtkDrawingArea's size.
    Previously we used the size of whole PhoshActivity there, which isn't the
    same as we now have a bottom margin on GtkDrawingArea.
  * activity: Use GtkDrawingArea's context to determine its background.
    Using PhoshActivity doesn't make much sense there since it can
    already draw its own background.
  * activity: Use CSS to apply background for maximized windows
  * activity: Rename CSS classes, use widget name where possible

  [ Evangelos Ribeiro Tzaras ]
  * subprojects: Forward to latest libcall-ui.
    This includes the UI tweaks and fixes.
  * call: Reindent
  * dbus: Update calls DBus interface.
    From calls revision a28d6946238e46d37d1a750fb9bde70d3254d74b
  * call: Hook up CanDtmf property.
    This controls whether CuiDisplay allows revealing the dialpad.
  * call: Hook up SendDtmf DBus method.
    This sends the dtmf tone to Calls.
  * css: lockscreen: DTMF keypad should respect phoshs background color.
    The keypad is a child of a GtkActionBar in CuiCallDisplay which has the
    background style class set. Setting the background color for the GtkActionBar
    in CSS ensures that phoshs styling is respected.

 -- Guido Günther <agx@sigxcpu.org>  Wed, 01 Dec 2021 18:22:30 +0100

phosh (0.14.0) experimental; urgency=medium

  [ Mohammed Sadiq ]
  * wifimanager: Use hotspot icon if wifi hotspot is active

  [ Guido Günther ]
  * notify-manager: Move schema paths and key defines to header.
    Fixes the leftover from a4a338b70c12a6d0187d7bf9ae9227abf46b767e
  * osd: Hide label when empty.
    This avoids having the OSD out of center when the label is empty.
  * phosh.service: Reduce boot flicker.
    Take over tty1. We currently don't take over quitting plymouth
    but we'll do so once we wire in a display manager.
  * torch-manager: Don't emit a warning when no torch is found.
    This makes running with G_DEBUG=fatal-warnings harder than necessary.
  * system-modal-dialog: Drop `can-focus` properties that use default value
  * util: Add helper to strip '.desktop' from app_id.
    Needed in several places
  * Add PhoshSplash.
    Splash screen for launching applications. It times out after
    5 seconds if not closed.
  * Add marshalers list.
    We want special marshalers for more complex signal arguments.
  * phosh-private: Update phosh-private protocol from phoc.
    This gives us some more information when apps launch.
  * phosh-private: Emit signals when we receive startup-ids.
    This will allow other parts of the shell to track application
    start.
  * phosh-wayland: Allow to retrieve phosh_private protocol version
  * wayland: Use defines instead of hard coding protocol versions.
    We have multiple places where we check versions of phosh_private,
    use proper defines for readability
  * Add app-tracker.
    This keeps track of spawned apps (via glib's g_app_info) and
    corresponding startup_id's (mostly via gtk_shell1 protocol).
    Additionally we track org.gtk.gio.DesktopAppInfo on DBus
    This allows us to show splash screens for apps that are spawned by other
    processes than the shell itself. E.g.
        gtk4-launch gnome-control-center.desktop
    or when opening a file in nautilus. We only do something if we get a
    desktop file name and a startup id (the later is e.g. not the case when
    processes are spawned via 'gio launch' or gnome-contacts).
  * app-grid-button: Use app-tracker for app launching.
    A button shouldn't care about the details of app launching. Let
    the app-tracker handle that.
  * Add splash-manager.
    The SplashManager listens to app-tracker events and shows/hides
    splash screens as needed.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/183
  * shell: Add and parse debug flags.
    This makes it simpler to test certain aspects of the shell.
  * splash-manager: Only show splash when not docked
  * splash: Allow to prefer dark theme.
    Allow to set the dark/light theme preference during construction.
  * splash-manager: Honor global dark theme preference.
    Although apps can still opt out this way the splash is way more likely
    going to match the launched apps color scheme.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/618
  * monitor: Treat wlroots virtual connector as such`
    The wayland, x11 and headless backends don't correspond to real
    hardware so treat their connectors as virtual.
  * mode-manager: Unclutter external monitor check.
    This makes future additions simpler
  * mode-manager: Handle virtual monitor.
    If a system has a single output and that is virtual we treat it as not
    having external display hardware. This allows to test the undocked
    case more easily with virtual wayland backends like headless, x11 or
    wayland.
    If we want to test docked mode we can add a second output.
  * docked-manager: Treat unknown hardware as undocked.
    If modem-manager doesn't have enough information to set a hardware
    type (no logind, etc) assume undocked rather than docked since
    we want to default to phone mode.
  * tools: Fix paths to CSS.
  * d/control: Add more recommends.
    Add proper fonts and the SVG renderer. This is useful on minimal
    installs like in containers.
  * tests: Use the correct flags when creating DBus proxy.
    There's nothing object manager related there and we create a
    GDBusProxy in the end.
  * build: Add a suite to all tests.
    Ignore manual tests on the alpine build
  * gitlab-ci: Collect junit test reports
    gitlab can handle those for better test failure output.
  * build: Bump required meson to 0.52.0.
    This avoids a warning and 0.56.0 is in Debian stable.
  * media-player: Use cancellable.
    Don't hold a ref across async calls but rather check if the
    operation was cancelled. This makes sure we can properly
    dispose and don't end up in half finished async calls.
  * tests: Drop g_test option.
    Rather check if we're using recent enough glib at runtime
  * screenshot-manager: Assert on g_file_test.
    Just calling it isn't enough.
  * gitlab-ci: Use meson to run the tests.
    Ignore manual tests on alpine
  * README: Update test instructions.
    The manual tests need extra setup so skip those, we also don't
    need extra gtest invocation since some time.
  * tests: Use minimal device resolution for phoc.
    This makes screenshots, etc more useful
  * tests: full-shell tests: Use temporary file for XDG_RUNTIME_DIR.
    This allows to run tests in parallel. They were previously racing for the
    wayland socket.
  * tests: Run more tests in parallel.
  * gitlab-ci: Switch Debian builds to bookworm.
    We keep the cross build at bullseye for the moment to
    stay out of dependency problems.
  * gitlab-ci: Generate locales needed for the screenshot tests
  * gitlab-ci: Fix registry URL.
    We want the one from the blessed repo not a user's fork.
  * testlib: Init libcallui as well.
    We should init all libs used phosh (that for the "normal" shell get
    inited in phosh's main)
  * testlib: Allow to send modifiers via virtual keyboard as well.
    We use keycodes for those too so users only have to worry about
    KEY_* and not a mixture of wl_keyboard modifiers and keycodes.
  * top-panel: Handle toggle-message-tray keybinding.
    This brings up the settings menu (which contains the message tray)
  * tests: Take screenshots.
    Take screenshots for different locales during CI. This allows for quicker
    validation of how things look in different locales.
  * gitlab-ci: Expose test results and screenshots prominently.
    Add a separate job that takes the screenshots and use a container that has
    some more dependencies so we get the fonts right and images rendered
    correctly.
  * batteryinfo: Show missing battery icon when we can't connect to upower.
    This makes the quick settings look less odd in e.g. tests.
  * batteryinfo: Make widget insensitive without battery.
    No point in having it look available.
  * wifimanager: Always return an icon name.
    We have the `present` property to figure out if wifi is actually
    there so always return a sensible icon name to make it simpler
    for consumers to show something useful.
  * gitlab-ci: Condense all screenshots of a locale into a single image.
    This makes it simpler to get a quick overview.
  * calls-manager: Drop out early on duplicate call ids.
    Should we ever see this we better not reconnect signals etc
    but rater ignore the duplicate id.
  * testlib: Add a simple call mock.
    This can be used whenever we need an incoming call
  * app-tracker: Adjust to "launch-started" DBus API.
    GLib 2.72 emits "launch-started" for spawned and DBus activated apps.
    Track this too and use that instead of "launched" to bring up the splash
    since the later is emitted only once the app is up which is too late for a
    splash.
    There's some backward compatibility code to try get reasonable results
    with current released glib but for DBus activated apps you really need
    2.72.0.
  * app-trcker: Handle timeouts.
    So far we'd not properly dispose AppState if the app never
    showed up nor failed.
    With this we can drop the timeout handling from the splash.
  * splash: Remove timeout.
    This is now handled by the app-tracker.
  * notifications: Reduce spacing between content and header.
    Fixes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/286
  * monitor: Take mode into account for fractional scale.
    Thanks Pablo Correa Gomez for the analysis
  * splash-manager: Don't leak schema
  * settings: Use headphone icons when headphone is plugged
  * settings: Stop media player playback when headphone gets unplugged.
    We do this form settings since this is always around.
  * media-player: Use rounded buttons
  * Move adaptive apps filter to the bottom.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/628
  * splash: Use same icon shadow in light and dark mode
  * wifimanager: Simplify switch.
  * wifimanager: Use g_set_object to set dev.
    Just so we use the same throughout this file
  * wifimanager: Unref connection on update.
    When there's a new connection make sure we unref the old one and
    disconnect signals. So far we would leak the ref here.
  * wifimanager: Unref connection when there's no active one.
    So far we would leak the ref here. We can also drop the dev->dev check
    since `cleanup_device ()` checks that too and if we cleanup the device we
    want to clean up the AP too since that is bound to the device.
  * media-player: Reset artist/title/url without metadata.
    If we can't get any metadata reset to the defaults. So far
    we'd only reset if we got partial data at least.
  * media-player: Don't clear title and artist when player stops.
    Some players like Shortware don't send new metadata when resuming
    playing after stop if it didn't change. This makes sure we have it still
    around.
    (We also failed to reset the icon)
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/375
  * call: Drop unused include
  * shell: Fix callback signature.
    We don't use that param but it's better to be correct here.
  * protocol: Update to latest phosh-private
  * shell: Notify compositor that shell is ready.
    We still have some blocking calls and fetching all the apps isn't async
    either yet. So delay for a second until we signal to the outer world.
  * d/control: Depend on phoc > 0.9.0.
    This one supports '-S' to wait for the shell.
  * session: Enable shell mode.
    Make phoc wait until phosh attaches before unblanking
    the screen.
  * media-player: Make play button circular
  * media-player: Don't use `-1` as icon size.
    This triggers warnings. Since we want to avoid passing
    GTK_ICON_SIZE invalid or encode in two places set the
    property directly. Upside is that this also works with
    GTK4.
  * media-player: Make play/pause icon a bit smaller.
    Use 24px instead of 32px. The other icons are 16px.
    Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/632
  * activity: Use the correct background style for drawing the background.
    The grey border looks odd otherwise which is even more pronounced in
    high contrast mode.
    Helps: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/629
  * activity: Move the close button over the thumbnail.
    Before the mouse hovered close button be outside the thumbnail since
    windows aren't all the same width in e.g. docked mode. This calculates
    the margin from the allocated width and the thumbnail's size.
  * activity: Always align thumbnails to the top.
    This doesn't affect maximized windows but makes sure the close
    button is on top of the window.

  [ Vittorio Monti ]
  * po: Update Italian translation

  [ Evangelos Ribeiro Tzaras ]
  * proximity: Only act on changes if we claimed the sensor.
    Fixes #624

  [ Oliver Smith ]
  * editorconfig: treat *.ui like xml
  * media-player: add seek buttons.

  [ Florian Loers ]
  * activity: Drop activity labels.
    Remove the label in the activity overlay and move the icon into a centered
    position. Fixes: #330
  * activity: Remove title field.
  * activity: Add icon-dropshadow to activity icon.

  [ Sebastian Krzyszkowiak ]
  * util: Introduce phosh_get_desktop_app_info_for_app_id.
    This replaces phosh_fix_app_id and allows for logic in PhoshActivity
    and PhoshAppTracker to become a bit simpler.
    We get rid of "org.gnome." prefix handling (with one exception of
    g-c-c which apparently keeps non-revDNS desktop filename for
    backwards compatibility) as phoc will now forward application ID
    obtained via gtk-shell, which is used by GTK 3 applications.
    However, we now also check the last component alone and a lowercase
    version in order to increase compatibility with legacy X11 and
    non-GTK applications. Examples of apps that now get correctly
    matched thanks to that include Mumble, Audacity, Blender, Jamulus
    and Darktable.
  * phosh_get_desktop_app_info_for_app_id: Add gnome-usage to mappings

  [ Danial Behzadi ]
  * Update Persian translation

  [ Nathan Follens ]
  * Update Dutch translation

  [ Zander Brown ]
  * Update British English translation

  [ Goran Vidović ]
  * Add Croatian translation

  [ Hugo Carvalho ]
  * Update Portuguese translation

  [ Matej Urbančič ]
  * Add Slovenian translation

  [ Jiri Groenroos ]
  * Update Finnish translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 19 Oct 2021 14:31:17 +0200

phosh (0.13.1) experimental; urgency=medium

  [ Guido Günther ]
  * d/gbp.conf: Switch development branch to main
  * d/control: Bump breaks on gnome-calls.
    Not strictly necessary but makes missing deps easier to detect
  * ci: Add font to alpine image.
    This fixes the overview test crash since pango needs at least
    on font in some versions. Thanks to InsanePrawn for the backtrace.
  * notification-frame: Align timestamp to the end.
    The current center leaves too much space to the right.
  * notify-manager: Add method to close all notifications
  * settings-menu: Add heading to notifications list-box
  * Add callback to clear all notifications (Closes: #570)
  * build: libcall-ui moved to /World/Phosh too.
    Adjust the submodule URL
  * ci: Be verbose when installing alpine deps.
    This makes identifying breackage due to changed versions easier.
  * media-player: Fix button order
  * media-player: Move navigation buttons into a box.
    This makes {first,last}-child styling way simpler
  * media-player: Drop receives-default properties
  * media-player: Remove margin.
    This makes it the same width as notifications instead of slightly
    smaller which looked very odd.
  * media-player: Use the same border radius than notifications.
    Looks odd otherwise
  * media-player: Switch artist and title.
    Left align and dim artist to get closer to designs
    https://gitlab.gnome.org/World/Phosh/phosh/-/issues/543
  * media-player: Drop lockscreen styling.
    Style it the same way we style in settings menu and the notifications.
    Closer to designs in https://gitlab.gnome.org/World/Phosh/phosh/-/issues/543
  * media-player: Improve button layour and styling.
    Use larger play/pause button, move ff and rev a bit closer
    to the center.
    Closer to designs in https://gitlab.gnome.org/World/Phosh/phosh/-/issues/543
  * media-player: Use larger icon.
    Center text artist / song vertically to it. This looks odd
    with Firefox since it tries to be clever and use 16:9 which
    the gicon aligns renders to the top instead of centered.
  * lockscreen: Use less margin between elements.
    Lower the margin between icons and media player and media player and
    notifications quiet a bit to safe space and look more consistent.
  * Add initial PhoshMountOperation.
    This implements GMountOperation's ask-password to handle th UI bits for
    e.g. encrypted volumes. We can add other methods like `ask_question`
    later on.
  * mount-manager: Use PhoshMountOperation.
    This allows allow for interactive prompts to ask for passwords
    of encrypted volumes.
    With this encrypted volumes can be mounted without going through
    nautilus first. (Closes: #573)
  * shell: Use fractional scale for phosh_shell_get_usable_area too.
    Otherwise fractional scaling is off on the primary display.
    Fixes: 540c85c83e6634a7cf90a4f4276339003f10a352
  * overview: Use fractional monitor scale.
    This will allow us to drop the integer scale completely.
  * monitor: Drop integer scale
  * tests: Add test for head scale calculations
  * monitor-manager: Support fractional scale DisplayConfig.
    This allows to set fractional scale in Settings too. The actual
    calculation is based on what mutter does. (Closes: #479)
  * Revert "monitor-manager: Flip transform"
    This reverts commit 75cad1aaeb76f75b1cd6066392f956e083f6f5ec.
    There's no need to flip the transform with recent wlroots/phoc, we
    end up flipping the upside down in landscape mode otherwise when
    e.g. changing scale.
  * Rename panel top top-panel.
    This makes it match the ui file
  * top-panel: Drop priv.
    No need for that when we're never going to derive.
    Related: #378
  * home: Don't pass on <return> to search bar
    otherwise we end up activating from the search bar twice thus
    launching the apps two times (which  most of the times doesn't
    matter due to the apps single instance pattern but e.g. Firefox
    shows the issue).
    Fixes 60f6a2e157e60a38ad8b8913882ff1e6fea548a3

  [ Mohammed Sadiq ]
  * d/rules: Disable building tests if 'nocheck' set.
    Not building tests reduces the binaries to build by more than half

  [ Pablo Correa Gómez ]
  * feedback-manager: Rotate profiles on touch to quick settings.
    Currently, there exist three different feedback profiles:
    "full", "quiet", "silent", but quick settings touch only
     switches in-between "full" and "silent". Instead, rotate
     from "full" to "quiet" to "silent" and back to "full"

  [ Marc Riera ]
  * Update Catalan translation

  [ Kristjan SCHMIDT ]
  * Update Esperanto translation

  [ Daniel Șerbănescu ]
  * Update Romanian translation

  [ Michael Oppliger ]
  * Update German translation

 -- Guido Günther <agx@sigxcpu.org>  Sat, 28 Aug 2021 08:19:53 +0200

phosh (0.13.0) experimental; urgency=medium

  [ Arnaud Ferraris ]
  * torch-manager: use logind instead of upower for toggling the torch.
    The previous version relies on a downstream upower extension which was
    rejected by upstream[1].
    In order to avoid having to carry downstream packages, this patch
    provides a new implementation, based on udev for device discovery, and
    logind for enabling/disabling the torch.
    [1]: https://gitlab.freedesktop.org/upower/upower/-/merge_requests/50
  * dbus: remove upower torch protocol.
    This is no longer needed with the new torch manager implementation
  * d/control: add build dependency on libgudev.
    This is required by the new torch manager implementation.
  * gitlab-ci: add missing dependency for alpine-based jobs

  [ Guido Günther ]
  * doap: Add gnome userids
  * shell: Select a different style sheet for HighContrast theme.
    The stylesheet is the same as the default one except that
    it has foreground and background colors swapped. This
    allows us to use a high contrast light theme.
    Closes: https://source.puri.sm/Librem5/phosh/-/issues/523
  * css: Drop .phosh-settings-row and .phosh-settings-listboxrow.
    Code using that was removed in
    5e214df154f733088283d2de6406c2d18dc90548
  * css: Drop duplicated properties
  * css: HighContrast: Use a 1px border for panel buttons.
    This makes the shell chrome easy to identify.
  * home: Make keyboard handling a bit more standard.
    Use GDK_EVENT_{PROPAGATE,STOP} and gdk_event_get_keyval and a template
    callback.
  * overview: Focus search when user starts typing (Closes: #564)
  * gitlab-ci: Drop unused vars
  * gitlab-ci.yml: Drop and adjust tags.
    Adjust tags to GNOME's CI
  * gitlab-ci: Publish docs
  * gitlab-ci: Speed up package build.
    Drop the docs now that we have gitlab pages
  * Change URLs to gitlab.gnome.org.
    We also adjust the URLs of projects that are bound to move soon like phoc.
  * README: mention API docs
  * Add dockerfile to create image.
    The image has all the build-deps to speed up build and tests. Based
    on what libadwaita does.
    Use
     .gitlab-ci/run-docker.sh --base=debian-cross build--version 0.0.<date>
     .gitlab-ci/run-docker.sh --base=debian-cross push --version 0.0.<date>
    to update.
  * gitlab-ci: Use custom docker image for most jobs.
    This also does away with the global `before_script:`
  * gitlab-ci: Use prebuilt image for 32bit build too
  * dbus: Update calls protocol.
    This adds the needed bit to accept calls on the lock screen.
  * Add libcall-ui as submodule.
    This allows us to share the call ui between calls and
    phosh without coupling them further.
    To build we also need libcallaudio-dev since that's a
    dependency of libcall-ui.
  * main: Initialize libcall-ui
  * phosh-call: Add DBus based implementation of the call-ui-call interface.
    This wraps the DBus interface in a PhoshCall's object that implements
    CuiCall so it can be used with CuiCallDisplay.
  * lockscreen: Allow to accept incoming calls.
    Use CuiCallDisplay to handle incoming calls.
    Relevant mockups: https://gitlab.gnome.org/Teams/Design/os-mockups/-/blob/master/mobile-shell/lockscreen-calls.png
  * call: Handle can-dtmf.
    This makes sure we keep the dialpad disabled until the
    DBus interface handles it. libcall-ui has all the bits
    already and adding DBus support will be backward compatible.
  * schema: Calls moved to org.gnome.
    Adjust the favorite.
  * Move the calls DBus interface to org.gnome.Calls.
    This changed with the move to upstream GNOME.
  * monitor: Allow to get fractional scale.
    This is derived from the logical size as described in
    https://wayland.app/protocols/xdg-output-unstable-v1#zxdg_output_v1:event:logical_size
  * background: Scale by fractional output scale.
    Scale the background by logical scale instead of what we get
    from xdg_output->scale. This allows the background to scale
    with fractional scaling. (Closes: #338)
  * tests: Stub phosh_shell_get_locked()
    This will be used by PhoshNotifyFeedback and is hence needed
    in the standalone notification (test) server.
  * Move feedback for notifications to a separate class.
    It was o.k. to have it in settings since that was the only long term
    notification store and we just used a single feedback event with
    - notifications also being on the lock screen
    - sending different event feedback
    we don't want to add more complexity to that single notification
    display. This also stops abusing the ListBox's create_row callback to
    handle feedback events.
  * notify-feedback: Adjust event name based on notification category.
    Adjust the emitted feedback based on the notification category¹. We could
    use the sound-name instead but that has the problem that the application
    sometimes has a hard time to figure out what the appropriate event is.
    E.g. `message-missed-instant` and `message-new-instant` are hard to tell
    apart from an application PoV.
    1: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html
  * panel: Connect to "setting-done" only once.
    No need to connect on every unfold.
  * tests: Add stubs for notify-server-standalone.
    This keeps things compiling
  * notification-content: Allow to show/hide body and actions
  * notification-frame: Add show-body property.
    This allows to show/hide the bodies of contained notifications
  * lockscreen-manager: Allow to scroll to a lock screen page programmatically.
    This will be used to scroll to the unlock page when the user activates a
    notification.
  * lockscreen: Display notification summary
  * lockscreen: Add missing guard to public function
  * notify-manager: Trigger scroll to unlock page if shell is locked.
    If the user activates a notification and the shell is locked scroll
    to the unlock page.
  * lockscreen: Handle "show-in-lock-screen" gsetting
  * gresources: Sort icons alphabetically
  * feedback-manager: Use separate icon for quiet mode.
    This makes the current mode easier to identify

  [ Mohammed Sadiq ]
  * panel: Hide power popover on tapping topbar if open.
    If the user taps on the notification bar/panel,
    hide power popover (if open) instead of hiding the panel.
  * panel: Return GDK_EVENT_PROPAGATE in button-press-event handler.
    GDK_EVENT_PROPAGATE documents the purpose better than FALSE

  [ Pablo Correa Gómez ]
  * feedback-manager: Rotate profiles on touch to quick settings.
    Currently, there exist three different feedback profiles:
    "full", "quiet", "silent", but quick settings touch only
     switches in-between "full" and "silent". Instead, rotate
     from "full" to "quiet" to "silent" and back to "full"

  [ Zander Brown ]
  * notifications: Dim icon.
    See https://source.puri.sm/Librem5/phosh/issues/286
  * notifications: Use a bit less space between icon and title.
    See https://source.puri.sm/Librem5/phosh/issues/286

  [ Anders Jonsson ]
  * Update Swedish translation

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Efstathios Iosifidis ]
  * Update Greek translation

  [ Rafael Fontenelle ]
  * Update Brazilian Portuguese translation

  [ Мирослав Николић ]
  * Update Serbian translation

  [ Vittorio Monti ]
  * po: Update Italian translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 09 Aug 2021 11:06:16 +0200

phosh (0.12.1) byzantium; urgency=medium

  [ Guido Günther ]
  * d/control: Bump phoc recommends.
    Recommend a version that allows us to bind all the interesting
    keys.
  * rotation-manager: Clarify debug message.
    Otherwise it can be confused with the rotation mode
  * rotation-manager: Don't claim accelerometer with orientation-lock.
    This reduces the work for iio-sensor-proxy a lot improving battery life.
  * shell: Move public functions to the end of the file.
    This makes it consistent with HACKING.md
  * shell: Add guards to public functions
  * shell: Protect against lockscreen-manager not being up yet.
    We get the monitors very early and the lockscreen_manager is not yet
    created. Avoid a critical (and potential crash if we wiggle code around
    later on).
  * overview: Only lookup activity if needed.
    No need to lookup the activity if the toplevel didn't get activated.
  * overview: Change activity type.
    This avoids some casting
  * overview: Unset activity when toplevel goes away.
    This prevents us from trying to set a focus on an
    inexistent activity in phosh_overview_reset.
    Fixes: 009177fac12b41d780ffc255bbb1105915407ead
  * location-manager: Unref dbus proxy
  * bt-manager: Unref dbus proxy
  * wwan-mm: Unref modem dbus proxies
  * wwan-mm: Simplify chain up.
    Use same pattern as elsewhere
  * lockscreen-manager Unref session-presence proxy
  * screenshot-manager: Don't hold ref when acquiring the bus.
    Otherwise we never dispose since the ref would only be dropped
    on g_bus_unown_name which is called in dispose.
    Since the manager stays around until shell shutdown this isn't a
    problem.
  * location-manager: Don't hold a ref during name watching.
    Since the unwatch happens in dispose only we'd never drop that ref.
    Since the manager stays around during the shell's lifetime this
    is not a problem.
  * torch-manager: Cancel proxy creation on dispose.
    This makes sure there's no lingering async callbacks.
  * monitor-manager: Adjust DBus naming.
    Use DBus instead of Dbus as with all other protocols and drop
    use PhoshDBus as namespace which we want to use for all protocols
    that don't need an object manager.
    Reindent the interface function arguments while at that.
    Fixes: a749990f0c37c7e361f6c1df945053b0432d0415
  * mode-manager: Avoid warning when DBus operation got cancelled
  * tests: Fix alphabetic ordering
  * testlib: Simplify getting a useful shell object.
    This adds functions to get a compositor, shell and isolated
    session bus for testing which allows us to deduplicate some
    code.
  * test-notify-manager: Use testlib helpers.
    Simplifies the code.
  * test-monitor-manager: Use testlib helpers
  * test-screenshot-manager: Use testlib helpers
  * calls-manager: Move state enum to header file.
    This makes it usable in the tests
  * calls-manager: Don't clear calls hash when name owner goes away
    gio's object-manager sends us proper remove signals for each object.
  * gcovr: Exclude subprojects from coverage.
    We don't bother about glib or gvc test coverate
  * Add support for using glib as a subproject.
    This allows us to run the tests that have our object manager fixes.
  * gitlab-ci: Run extended tests on bullseye.
    Don't bother for the crossbuild since we don't run tests there and this
    would just make build times longer.
    Since we don't want to build documentation for glib we need to do an
    extra build for gtk-doc that uses system glib.
    This gets simpler again once the next glib is released.
  * calls-manager: Add test.
    We need to preserve DISPLAY for xvfb and set XDG_RUNTIME_DIR since
    g_test_dbus_up unsets those via g_test_dbus_unset.
    This needs https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2120
    to not deadlock.
  * build: It's phosh, not libhandy
  * phosh-wwan: Return NULL not boolean.
    The operator is a string.
  * check-po: Check for ui files too.
    Use an extended regexp so we don't miss ui files
  * po: Add gtk-mount-prompt.ui
  * po: Use wildcard to ignore subprojects.
    This makes sure we don't have to catch up when the subproject changes
  * docs: Add calls DBus protocol
  * HACKING: document that we prefer css names over style classes
  * lockscreen: Drop style class.
    We use gtk_widget_class_set_css_name so don't need an additional
    style class.
  * lockscreen: Use enum for page names.
    It quickly becomes confusing otherwise
  * lockscreen: Fix indentation.
    Bring this in line with current coding standards.
  * lockscreen: Use g_clear_handle_id ()

  [ Sebastian Krzyszkowiak ]
  * Revert "data: Update adaptive app defaults"
    The commit intended to update adaptive app list, but it actually
    changed the default favorites.
    This reverts commit 19ebe2ec3a0df741b6935ac37de610b3c5e01117.
  * data/phosh.service: Add Phosh to XDG_CURRENT_DESKTOP.
    Commit 86dad1dfcc20b56add8a1dff5c4637ce51a0ec69 has already done
    that for the Wayland session, but missed adding a similar change
    to the systemd service.
  * style: Adjust search bar spacing.
    This brings it back to how it looked before introducing
    app filtering, which was closer to the mockups.

  [ Vittorio Monti ]
  * po: Update Italian translation

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ Anders Jonsson ]
  * po: Update Swedish translation

 -- Guido Günther <agx@sigxcpu.org>  Mon, 12 Jul 2021 16:01:37 +0200

phosh (0.12.0) byzantium; urgency=medium

  [ Guido Günther ]
  * data: Add gsd-wwan to required components.
    This makes sure it's also started in systemd mode so the PIN request
    happens.
  * tests: Remove smoke test.
    It served us well initially but since we can now tests against
    the headless compositor without extra setup.
  * overview: Don't set CSS name twice
  * protocol: Sort wayland protocols alphabetically
  * phosh-wayland: Sort wayland protocol headers alphabetically
  * shell: Sort manager objects.
    Sort the ones that get created by the shell and those created on the fly
    into separate sections and sort those alphabetically. Ideally we want
    to distinguish the getters by name at some point.
    (There's a third type (singletons) which we don't bother about here and
    which we're reducing bit by bit)
  * phosh-wayland: Get virtual-keyboard-manager.
    This is only used in the tests.
  * tests: Allow to inject virtual keyboard events.
    That's fairly minimal at the moment but sufficient to test
    dialogs, etc.
  * system-modal-dialog: Allow to get and remove buttons.
    Add API to query the current buttons and remove them. This just
    proxies to GtkContainer.
  * Implement most parts of org.Gtk.MountOperationHandler.
    This allows to mount e.g. LUKS encrypted volumes via nautilus.
    (Closes: #158)
  * data: Add Phosh to DestkopNames.
    This adds 'Phosh' to XDG_CURRENT_DESKTOP
  * data: Only apply gsetting overrides to Phosh session.
    This makes sure we don't e.g. messup settings for GNOME like
    enabling the OSK.
  * screenshot-manager: Remove opaque handler in dispose
  * screenshot-manager: Actually set fader_id.
    It got cleared but never set.
  * lockscreen-manager: Shorten property enum values.
    This is what we recommend in Hacking.md.
  * proximity: Fix function spacing
  * lockscreen: Drop style class.
    We set it in the ui file already.
  * Drop HANDY_USE_UNSTABLE_API.
    Libhany's API isn't unstable anymore
  * Add calls manager.
    This tracks ongoing calls via the sm.puri.Calls DBus interface.
    This can be used to (e.g. activate the proximity sensor and to
    unblank the screen on incoming calls).
  * lockscreen-manager: Unblank on incoming calls.
    Do it here instead of in lockscreen-manager since
    is where we'd also switch to the calls page later on.
  * proximity: Only use proximity sensor on active calls.
    See https://source.puri.sm/Librem5/calls/-/issues/175
  * debian: Add breaks relationship on older calls.
    This makes sure calls we don't try to run against a calls without
    the DBus interface.
  * libhandy API isn't unstable anymore.
    So drop HANDY_USE_UNSTABLE_API.
  * overview: sort includes
  * shell: Shorten property names.
    This is what we recommend in HACKING.md
  * overview: Add missing G_{BEGIN,END}_DECLS
  * app-grid: Unref sorted model.
    The following gtk_filter_list_model_new() takes a ref on its own.
  * gitlab-ci: Build against PureOS byzantium.
    Debian currently lacks recent enough kernel headers
  * data: Always set `hidden_under_systemd`
    This avoids a meson warning
  * build: Set include dirs explicitly.
    Otherwise we might end up with the toplevel include dir pretty late in
    the search path and pick up GVCs config.h.
  * build: Drop -I. from project_arguments
    root_inc handles this for us.
  * hks-manager: Fix typo
  * hks-manager: Don't assert but rather use unknown operation type.
    Getting odd info from /dev/rfkill is not worth crashing the shell.
  * build: Write config.h later.
    This allows us to use more results from feature detection.
  * hks-manager: Use rfkill_event_ext when available.
    This makes sure we parse two consecutive results correctly. If the
    header is not available fall back to rfkill_event which works correctly
    on kernels that don't expose this field.
  * debian: Build-depend on recent kernel headers.
    These provide rfkill_event_ext
  * hks-manager: Don't leak list.
    Although we had a `_and_free()` function we didn't clean it up.
    Instead of cleaning up within that rather use automatic cleanup.
  * home: Reveal whole home-bar instead of only arrow.
    This gives us 40px more vertical space when there's no open applications
    and removes the somewhat odd looking black bar.
  * home: Add getter for overview
  * overview: Add getter for the app-grid
  * app-grid: Allow to filter for adaptive apps only
  * app-grid: Allow for a configured list of adaptive apps.
    This will help to avoid frustration until apps are tagged as such.
  * app-grid: Move signal enum above class.
    This makes it match the proposed layout in HACKING.md
  * app-grid: Allow to toggle adaptive app filtering via setter and property.
    This allows other parts of the shell to turn adaptive app filtering on
    or off.
  * app-grid: Move object cleanup to dispose()
    Otherwise we get a reference cycle between self->actions and
    and self disposal which keeps the app-grid around a bit longer
    and just long enough to make app-list-model emit another items-changed.
    Since `priv->search` is then gone we fail the 'priv->search != NULL'
    check in search_apps.
  * app-grid: Add menu button to toggle adaptive app filtering.
    Add a menu next to the search bar that allows to filter adaptive apps
  * shell: Sync adaptive app filtering with docked mode
  * Allow to toggle app filtering globally.
    This allows to turn of adaptive app filtering completely.
  * data: Update adaptive app defaults.
    Add those from phosh's default set that aren't marked yet
    but are adaptive and drop those that are and had a release.
  * Add NEWS file

  [ ZenWalker ]
  * brightness: 'g_warning' instead 'g_error'

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 29 Jun 2021 09:56:16 +0200

phosh (0.11.0) byzantium; urgency=medium

  [ Guido Günther ]
  * d/control: Mark build-deps as nocheck
  * gitlab-ci: Avoid some build-deps for cross-builds.
    They're not needed since we just check if the build works.
  * system-promper: Cleanup properly.
    Unref the prompter and make sure we don't unregister if not registered.
  * idle-manager: Guard against disposing multiple times
  * polkit-auth-agent: Indentation fixups
  * polkit-auth-agent: Don't leak error in error path
  * build: Use files()
    This avoids having path prefixes in some places and not in others
    and makes it simpler to use these from other directories.
  * test-app-grid-button: Drop test for expected message.
    We catch that in the output of the subprocess and it's a noop
    when running with `-DG_LOG_USE_STRUCTURED`.
  * d/control: Add dbus-x11.
    Needed for the shell test
  * build: add static phosh lib too.
    This contains the whole phosh without main() allowing reuse in
    tests. By using `both_libraries()` we can munge that into the
    shared lib build and unconditionalize this without increasing
    the number of targets.
  * tests: Create shell object.
    This creates the shell object making sure we create most of
    the objects that aren't created in the idle callback()
  * d/control: Add more schemas.
    The tests bring up more of the shell now so we need those schamas
    during tests too.
  * tests: Make shell enter main loop.
    This brings up all the manager objects
  * gitlab-ci: Drop the one output smoke-test.
    The test-shell unit test basically covers this.
  * gitlab-ci: Use gcovr instead of lcov.
    This creates a bit nicer reports but more importantly supports
    a gcovr.cfg in _build/ so we can exclude autogenerated files
    in the future.
    This needs some hackery due to
    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=987818
    but since this only affects this project and not e.g. downstreams
    it should be o.k. for the time being.
  * Add gcovr configuration.
    This allows us to exclude autogenerated files. It needs to go
    toplevel for gcovr to find it.
  * Bump glib requirement to 2.62.
    This is in byzantium/bullseye and will allow us to use
    g_clear_signal_handler() and friends.
  * Use g_clear_signal_handler.
    We can rely on glib 2.62 now.
  * brightness: Use simpler g_clear_object
  * mode-manager: Use correct type.
    Unused so far so the compiler didn't spot it.
  * home: Use correct type.
    Unnoticed by the compiler since the type was unused so far.
  * monitor: Use proper cast.
    This helps detecting bad types.
  * gnome-shell-manager: Run parent constructor first.
    This makes it consistent with other classes
  * media-player: Unconditionally dispose DBus connection.
    The connection is independent from the signal subscription.
  * system-prompter: Always unown DBus name.
    Don't bother if we ever acquired it, it's important if we tried
    (and hence got a > 0 id).
  * idle-manager: Unown DBus name.
    We should clean up properly on dispose.
  * monitor-manager: Unown DBus name.
    We should clean up properly on dispose.
  * notify-manager: Unown DBus name.
    We should clean up properly on dispose.
  * screen-saver-manager: Unown DBus name.
    We should clean up properly on dispose.
  * gnome-shell-manager: Unown DBus name.
    We should clean up properly on dispose.
  * shell: Dispose keyboard_events past gnome-shell-manager
    gnome-shell-manager invokes phosh_shell_remove_global_keyboard_action_entries()
    when disposing it's keybindings.
  * gnome-shell-manager: Properly free grabbed keybindings.
    We shouldn't remove elements form the GList of keys while looping over
    it. Fixing this makes sure we actually fee the entries (and is less
    code).
  * gnome-shell-manager: Handle DBus skeleton export error
  * screensaver-manager: Dup lockscreen-manager.
    We unref it on dispose so we need to take a reference.
  * on_bus_acquired: Use proper cast with type check.
    Seems this got copy pasted all around and should.
  * location-manager: Unwatch name on dispose.
    We don't want to be called after going away.
  * location-manager: Unexport the interface
  * gnome-shell-manager: Unexport the interface
  * monitor-manager: Unexport the interface
  * notify-manager: Unexport the interface
  * screen-saver-manager: Unexport the interface
  * screenshot-manager: Don't opencode g_clear_handle_id
  * screenshot-manager: Unexport the interface
  * session-manager: Unexport the interface
  * lockscreen: Move player to center widget.
    This makes the player centered with the indicators and clock
    See https://source.puri.sm/Librem5/phosh/-/issues/543
  * screenshot-manager: Only flash screen on success.
    Don't flash screen when taking the screenshot failed.
  * shell: Remove some trailing whitespace
  * tests: Use define for startup-timeout magic constant
  * util: Add helper for the common async callback error checking.
    A canceled operation error should not print a warning while all others
    should.
  * connectivity-info: Cancel nmclient acquisition on dispose.
    Otherwise we might access already freed data. We reorder the ready
    handler to not access self when the operation is cancelled.
  * wifimanager: Cancel nmclient acquisition on dispose.
    Otherwise we might access already freed data. We reorder the ready
    handler to not access self when the operation is cancelled.
  * session-manager: Cancel session registration on dispose.
    Otherwise we might access already freed data. We reorder the ready
    handler to not access self when the operation is cancelled.
  * brightness: Cancel proxy creation on dispose.
    This makes sure there's no lingering async callbacks.
  * gnome-shell-manager: Don't ref self when trying to own name.
    If the shell quits and the async g_bus_own_name didn't finish then
    `dispose` will not be run with when a ref is held and the name won't be
    given up. This prevents us from freeing up properly.
  * monitor-manager: Don't ref self when trying to own name.
    If the shell quits and the async g_bus_own_name didn't finish then
    `dispose` will not be run with when a ref is held and the name won't be
    given up. This prevents us from freeing up properly
  * modem-manager: Cancel proxy acquisition.
    Instead of holding a ref on self make sure we cancel the operation in
    dispose. This allows the object to dispose properly.
  * background: Cancel async operation on dispose
  * rotation-manager: Cancel async operation on dispose.
    Instead of holding a ref during the async operation we cancel it in
    dispose. Otherwise we might not properly dispose the object while an
    async operation is pending.
    We shuffle the code around to not access self prior to checking if the
    operation was canceled since it might not be existent anymore.
  * wwan-mm: Cancel async operation.
    This makes sure we don't use self although already disposed. Lower
    warning to `g_message` to not trip up tests when mm is not present
    or the operation gets canceled.
  * Add PhoshManager.
    This adds a common base class for managers that currently derive
    from GObject.
  * mode-manager: Use manager.
    This ensures the idle callback gets removed on dispose.
  * bt-manager: Move functions between class_init and init upwards.
    Matches our recommended layout and needed for the next commit.
  * bt-manager: Use manager.
    This ensures the idle callback gets removed on dispose.
  * torch-manager: Move functions between class_init and init upwards.
    Matches our recommended layout and needed for the next commit.
  * torch-manager: Use manager.
    This ensures the idle callback gets removed on dispose.
  * status-icon: Add idle_init virtual method.
    This allows for easier idle setup and makes sure we properly
    remove the callback.
  * torch-info: Use status-icon's idle_init.
    Instead of opencoding use the parent's class functionality which
    also makes sure the handler gets properly removed.
  * wwaninfo: Use status-icon's idle_init.
    Instead of opencoding use the parent's class functionality.
  * bt-info: Use status-icon idle_init.
    Instead of opencoding use the parent's class functionality.
  * docked-info: Use status-icon idle_init.
    Instead of opencoding use the parent's class functionality.
  * wifiinfo: Use status-icon idle_init.
    Instead of opencoding use the parent's class functionality.
  * home: Drop idle callback.
    Binding to settings is save and won't trigger excessive object
    creation.
  * media-player: Cancel idle callback in dispose.
    Cancel idle callback on dispose so we don't run it if we're already
    disposed.
  * Replace some g_warning()s with g_message()
    Some hardware is not required so reduce the log level. This helps
    tests and since those messages still end up in logs by default don't
    make debugging harder.
  * batteryinfo: Use g_autoptr
  * polkit: better error message
  * polkit: Lower warning when we fail to get session.
    This is likely due to no polkit at all.
  * Move DBus connect failures from warning to debug.
    When the DBus service is not even there no need to print a warning since
    the shell just disables that part.
    This helps to have warnings enabled in tests.
  * tests: Drain event loop in shell test.
    This make sure there's no lingering async/idle callbacks
    of disposed objects.
  * screensaver-manager: Cancel idle callback in dispose
  * screensaver-manager: Don't hold ref on self during g_bus_own_name.
    This avoids cancellation and hence proper cleanup. It's also not
    needed since we unown the name in dispose.
  * wifimanager: Don't use warning when failing to register agent.
    Lower to `g_message` to not trip up tests. It's not fatal anyway.
  * wifimanager: Don't use warning when failing to connect to NM.
    Lower to `g_message` to not trip up tests. It's not fatal anyway.
  * wifimanager: Unref access point.
    We need to disconnect the signals manually since
    nm_device_wifi_get_active_access_point is transfer none.
  * background-manager: Allow to retrieve backgrounds.
    Used in tests.
  * shell: Allow to retrieve background-manager.
    Makes it more symmetric with other managers, used in tests only atm.
  * notify-manager: Don't hold ref when owning dbus name.
    We unown the name in dispose. Holding the ref prevents proper cleanup.
  * test-shell: Simplify shell setup and tear down.
    This makes it reusable in other tests. We don't move that to testlib
    since that does not link against shell.c atm but stubs the shell object.
  * test-shell: Add test with two outputs.
    We need a 2nd fixture since setting up the 2nd output in the
    test itself is too late, the compositor is already running.
  * gitlab-ci: Drop two-output test.
    We run that via ninja now making it easier to use during local
    development.
  * ui: Remove receive-default properties from check buttons
    'False' is the default anyway.
  * system-modal-dialog: Drop unused dispose
  * polkit-auth-prompt: Simplify by using template_callback.
    Less code.
  * polkit-auth-prompt: Use correct cast.
    It's a label not an entry.
    Fixes: 3b60ed8fa4d08c18978e4b90ddf29e1cfd537c2b
  * polkit-auth-prompt: Drop receives-default.
    Otherwise moving the focus via tab to cancel and hitting
    <return> activates 'ok' instead of 'cancel'.
    Also drop the deprecated double-buffered property.
    Fixes: 3b60ed8fa4d08c18978e4b90ddf29e1cfd537c2b
  * system-prompt: Drop property descriptions.
    We have doc strings which allow for more context and don't
    end up eating space in the binary.
  * system-prompt: Simplify by using template_callback.
    Less code.
  * system-prompt: Drop receives-default.
    Otherwise moving the focus via tab to cancel and hitting
    <return> activates 'ok' instead of 'cancel'.
    Fixes: f2feed05d89bddf440685589b3c5f85bc61bd5f6
  * network-auth-prompt: Drop receives-default.
    Otherwise moving the focus via tab to cancel and hitting
    <return> activates 'ok' instead of 'cancel'.
    Fixes: 5ec5a932461fad35b3a9830fba3b23abe2a97050
  * app-auth-prompt: Drop receives-default.
    Otherwise moving the focus via tab to cancel and hitting
    <return> activates 'ok' instead of 'cancel'.
    Fixes: 14a763b094630cd326b4d7b09a834cd0e15a5973
  * end-session-dialog: Drop receives-default.
    Otherwise moving the focus via tab to cancel and hitting
    <return> activates 'ok' instead of 'cancel'.
    Fixes: fb4c5e1d3493865be3d84d00c3dc9859ea9bf107
  * end-session-dialog: Set focus.
    Make this explicit as in other modal dialogs
  * end-session-dialog: Avoid creating a row.
    Since we don't need to disable focus anymore we can just use
    gtk_list_box_insert ().
  * end-session-dialog: Make listbox insensitive.
    The list of inhibited apps should just be avoided when using keyboard
    focus however just setting can-focus = False on the listbox and the
    rows only makes it swallow the cursor completely. Mark the widget
    as insenitive instead. This dims the widgets in the listbox so
    undo that via CSS.
    With that using tab to cycle through the dialog works as expected (only
    switches bestween the buttons).
  * mode-manager: Don't use wl before we checked the async operation.
    Otherwise this can cause problems when the async calls is cancelled
    in dispose and PhoshWayland already got disposed since we'd trigger
    recreating the singleton.
  * wifimanager: Don't check type before async error check
    self might already be gone if the async call got cancelled in dispose.
  * docs: Drop coverage report.
    Using a gitlab badge is nicer since it doesn't clutter the the docs.
  * wwan: Move wwan DBus sources to src/dbus.
    This gets them ignored when calculating coverage but also gets us closer
    to have all DBus generation in once directory and meson variable.
    We keep file and interface names unchanged for minimal diff noise and
    just rename the interface definitions.
  * monitor: Move DisplayConfig DBus sources to src/dbus.
    This gets them ignored when calculating coverage but also gets us closer
    to have all DBus generation in once directory and meson variable.
    We keep file and interface names unchanged for minimal diff noise.
  * osk: Move OSK0 DBus sources to src/dbus.
    This gets them ignored when calculating coverage but also gets us closer
    to have all DBus generation in once directory and meson variable.
    We keep file and interface names unchanged for minimal diff noise and
    just rename the interface definitions.
  * osk: Move to src/
    No point to have a directory for single file.
  * tests: testlib: Unregister timeout handler.
    Otherwise it might fire at a later invocation.
  * tests: testlib: Don't fetch outputs early.
    This can cause trouble when using this to bring up the shell since we
    might otherwise miss wayland events in the shell (see
    phosh_shell_constructed).
  * tests: Always run idle-manager test.
    Now that we can use PhoshShell in tests use that
    in a thread plus a spawned compositor to always
    run the idle tests instead of requiring a running
    shell upfront.
    For that we need to fix resource leaks to not reuse
    DBus proxies on already gone shells, etc.
    We mark DBus session bus using tests as not being run in parallel for
    now since test clients might otherwise get confused.
  * tests: Add initial screenshot-manager test.
    Takes a screenshot and makes sure it ends up in the right location
    on disk.
  * Add initial monitor-manager test.
    Just queries the current state.
  * tests: Add initial notify-manager test.
    Since we want notifications on the lock screen soonish we better
    test this a bit.
  * gitlab-ci: Use libglade-common from experimental too.
    This fixes the build until bullseye gets unfrozen
  * po: ja: Fix printf format in translation.
    It swapped to arguments without marking as such.
  * po: ja: Remove second plural forms.
    Japanese uses nplurals=1
  * gitlab-ci: Install gettext.
    Needed for po file check
  * Move po check from gitlab-ci to a tools/
    This allows for easy local checking
  * tools/check-po: Check po files via msgfmt.
    This makes sure we don't end up with incorrect plural forms
    or broken format strings.
  * top-panel: Indicate disabled state for wifi and bt.
    The top panel so far handled disabled the same as missing for wifi and
    bt.
  * settings: Add torch brightness slider.
    This adds brightness slider when the torch is enabled. (Closes: #386)
  * debian: Switch to debhelper 13.
    This makes us fail on missing files
  * hacking: Fix property function names.
    We always use the singular form
  * Add css names to info widgets.
    This eases styling and makes things consistent with other widgets
  * top-panel: Add css name.
    Instead of using a CSS class on the top-panel and the widget name
    for home make this consistent.
    We use 'top-panel' since this is what is should be named (pending
    a source file and class rename).
  * top-panel: Always use bold font for indicators.
    We always want to use bold font on the right indicator box
  * batteryinfo: Drop superfluous NULL checks
    g_clear_object() does this for us.
  * batteryinfo: Add optional label with battery percentage
  * panel: Honor show-battery-percentage.
    This allows to show the battery percentage in the top bar
    Closes: https://source.puri.sm/Librem5/phosh/-/issues/268
  * debian: Use systemd.
    Use systemd for the CI debs and simplify installation (we don't
    need any enablement)
  * notify-manager: Fix docstring
  * notifications: Expand docs a bit.
    I always need to look up the relationship of the classes. Add some
    docs to make this simpler.
  * notification-content: Make sure we disconnect on dispose.
    Use g_signal_connect_object() instead of g_signal_connect()
    so that if self goes away the signal handler gets disconnected.
    The notification might live way longer than the content, e.g. when a
    banner expires but the notification is still in the notification list.
    Closes: https://source.puri.sm/Librem5/phosh/-/issues/321
  * shell: Emit signal when shell is fully up
  * tests: Test shell ready
  * main: Measure startup time
  * main: Inform systemd we're up
  * systemd: Inform systemd we support notify.
    Closes: https://source.puri.sm/Librem5/phosh/-/issues/568
  * tests: Don't hardcode version

  [ ZenWalker ]
  * layersurface: avoid redundant assignment
  * end-session-dialog: avoid redundant assignment

  [ Pablo Correa Gómez ]
  * settings: Remove duplicated assignment after check

  [ Dylan Van Assche ]
  * proximity: faster proximity fading.
    Fades out faster when in proximity.
    This improves the user experience when placing a call
    as the phone blanks faster. The user isn't 'afraid'
    anymore to accidentally touch a button with
    his/her/their ear when placing a call for example.

  [ lajonss ]
  * settings.c: quick settings Wi-Fi and BT toggle.
    Quick settings Wi-fi and BT buttons
    were opening the corresponding settings panel.
    This commit introduces new behaviour for
    Wi-Fi and BT quick settings:
    - toggling enabled state on clicked event
    - opening settings panel on long_pressed event
    This commit introduces "button-pressed" feedback
    on opening settings panels.
    Concerns: #372 (Quick toggles open settings panels)
  * settings: wwan quick toggle.
    Changes behaviour of wwan quick settings from:
    - opening settings panel on click,
    to:
    - toggling wwan enabled on click,
    - opening settings panel on long press.
    Introduces PhoshWWanManager - base class for WWan
    backends. Used for backend-agnostic nm operations.
    Concerns: #372

  [ Zhaofeng Li ]
  * data: Generate required session components from an array
  * Add systemd user units.
    This allows Phosh to be started with `gnome-session --systemd`, with
    most session components managed by systemd.
  * Allow the compositor path to be overridden in a Meson option.
    However, `/usr/bin/phoc` will still be used if it exists.
  * Add environment variable to support overriding the gnome-session executable

  [ Vittorio Monti ]
  * po: Update Italian translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 30 May 2021 12:22:27 +0200

phosh (0.10.2) byzantium; urgency=medium

  [ Sebastian Krzyszkowiak ]
  * docked-manager: Check whether docked mode can be enabled.

  [ Guido Günther ]
  * dbus: Fix indentation
  * Add screenshot manager.
    This, for now, just captures the primary display which is the main
    use case on mobile.
  * css: Fix indentation
  * system-modal-dialogs: Add box shadow.
    This makes sure the dialog gets visually distinct e.g. on dark-mode
    apps.
    Closes: https://source.puri.sm/Librem5/phosh/-/issues/538
  * proximity: Make sure we destroy the fader when we unclaim the sensor.
    We must never blank screen when not tracking proximity.
  * home: Fix use after free
  * system-modal: Drop unused struct member
  * fader: Simplify fader.
    No need to bother all layers with the wayland details, just
    pass in a monitor.
  * fader: Allow to set style class.
    This allows to use animations of any kind.
  * screenshot-manager: Copy to clipboard if filename is empty.
  * screenshot-manager: Use fader for screen flashing
  * Various style and consistency cleanups

  [ Mohammed Sadiq ]
  * meson: Fix build with tests disabled.
  * panel: Hide popover before folding top panel.
    Otherwise the popover shall re-orient to adapt with the parent
    widget before it's hidden
  * style: Use tabular font for clocks.
    So that the text has same size allocated and thus the text won't move
    when the value changes, which is very much visible when clock shows
    seconds
  * top-panel: Update power button style to match design

  [ Anders Jonsson ]
  * po: Update Swedish translation

  [ Evangelos Ribeiro Tzaras ]
  * monitor-manager: fix typo.

  [ scootergrisen ]
  * po: Update Danish translation

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ Daniel Șerbănescu ]
  * po: Update Romanian translation

  [ 寮 ]
  * po: Update Japanese translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 27 Apr 2021 10:21:21 +0200

phosh (0.10.1) byzantium; urgency=medium

  [ Guido Günther ]
  * rotateinfo: Fix indentation
  * monitor-manager: Fix doc string.
    Make function name match the actual definition.
  * torch: Make debug statement more useful.
    We want to what things changed not only that s.th. happened.
  * proximity: Handle NULL builtin monitor.
    There might be no builtin monitor at all or it could be disabled.
  * shell: Create sensor-manager early.
    We want that before the panels since those might use other
    managers that need the sensor-manager (e.g. rotation-manager)
  * shell: Don't bother with accelerometer.
    Rotation-manager takes care of that
  * shell: Decruft builtin monitor setup.
    Just look it up on start since it can't change.
  * Avoid sensor-proxy singleton.
    Treat it as regular initable that is fetched from the shell
    like other managers.
  * Add rotation-manager.
    The rotation manager listens to device orientation changes
    and adjusts the primary display accordingly.
    This interfaces with lockscreen, iio-sensor-proxy and
    gsettings to figure out the correct screen orientation.
    The manager has two modes: off (don't rotate any output) and sensor
    (adjust due to sensor values).
  * rotateinfo: Display either rotation lock or orientation.
    Based on the rotation managers mode display appropriate information.
    (Closes: #18)
  * settings: Add orientation lock to rotate quick setting.
    Long press switches between portrait/landscape and rotation lock.
  * settings: Don't close menu when toggling rotation lock.
    This makes it consistent with other toggles like feedback toggle.
  * Move Lockscreen rotation fixup to rotation-manager.
    No need to have several objects involved. This avoids
    lockscreen and rotation manager racing since we can
    do it past the unclaim of the accelerometer.
  * rotateinfo: Use monitor from rotation-manager consistently.
    So far this was dependent on mode and incorrectly tracked the primary
    monitor for manual toggle.
  * shell: Drop transform handling.
    This is done by the rotation-manager which always acts on the
    given monitor. (Closes: #56)
  * rotation-manager: Mess with transform as little as possible.
    On phones when we're already using portrait orientation don't bother
    fixing this up. This allows for e.g. upside down operation.
  * monitor: Update org.gnome.Mutter.DisplayConfig.
    This is from mutter's 331b5f356311f1dcfc1b580e349a60d25fc0e34f
  * monitor-manager: Drop supports-mirroring prop.
    It got removed with the DisplayConfig interface update. Mutter doesn't
    use it anymore, g-c-c still parses it but doesn't use it in 3.38.
  * monitor-manager: Handle panel-orientation-managed (Closes: #540)
  * monitor-manager: Delay 'monitor-added' until monitor is configured.
    This makes is simpler for other parts of the shell since they don't
    need to track this on their own.
    While at that make phosh_monitor_manager_add_monitor private since
    this should only happen within monitor-manager.
  * shell: Handle builtin monitor dynamically.
    It e.g. goes away when disabled in docked mode
  * rotation-manager: Update tracked monitor.
    Update tracked monitor when builtin changes. We do this explicitly
    rather than listening to changes on monitor-manager since this way
    the rotation-manager doesn't need to be aware that it's tracking
    a built-in monitor. It just tracks what's passed in.
  * rotateinfo: Make insensitive when built-in monitor is disabled
  * end-session-dialog: Drop debug leftover
  * lockscreen-manager: Remove unused timeout property.
    Unused since d3028d50686a1fba7876355ea3272def281ad030
  * lockscreen-manager: Document phosh_lockscreen_manager_set_locked.
    Use a better argument name while at that.
  * lockscreen: Fix signal name
  * monitor-manager: Clarify doc string
  * screen-saver-manager: Clarify debug message.
    Make it obvious we're sending out the DBus signal
  * shell: Look at the right manager.
    Don't check torch manager when we want location.
  * shell: Don't create loctation manager twice.
    Since the panels are constructed before the init in the shell's
    idle_cb we'd construct twice since priv->location_manager is still
    NULL. USe the getter instead to be independent from init order.
  * location-manager: Translate location accuracy levels.
    Geoclue uses something different then the desktop schemas.
    Thanks to Dylan Van Assche for the report

  [ Clayton Craft ]
  * meson: bump version to 0.10.0.
    Seems like this was missed when 0.10.0 was tagged.

  [ Daniel Șerbănescu ]
  * po: Update Romanian translation

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ Emin Tufan Çetin ]
  * po: Update Turkish translation

  [ Jan Jasper de Kroon ]
  * po: Update Dutch translation

 -- Guido Günther <agx@sigxcpu.org>  Sat, 10 Apr 2021 09:18:33 +0200

phosh (0.10.0) byzantium; urgency=medium

  [ Guido Günther ]
  * osd-window: Drop padding around levelbar.
    This avoids a thin black border noticeable on light backgrounds
  * wwan-iface: Add 'enabled' property.
    This indicates if the modem is enabled.
  * wwan-mm: Complete PhoshMMModemState.
    This matches MMModemState
  * wwan-mm: Handle 'enabled' property
  * wwan-ofono: Handle enabled property.
    We always return TRUE here to not break existing users.
  * wwaninfo: Correctly indicate disabled state.
    So far we used the signal-strength 0 icon which is confusing.
  * Add geoclue DBus interface files.
    This were taken from gnome-shell as of
    1dc971d76025416249598f9b8e5a12e37c9dec22
  * Add geoclue location manager.
    This honors the 'org.gnome.system.location enabled' GSetting for global
    access to location services.
    To work it needs an entry for phosh in /etc/geoclue/geoclue.conf.
    (Closes: #153)
  * Add "location service in use" indicator.
    This indicates that the location service is in use via the status bar.
    (Closes: #527)
  * location-manager: Reject all per app auth requests.
    Reject auth by default for the per-app case until we implemented per app
    location permissions (#524).
    It currently doesn't hurt us badly since the current test in geoclue
    whether there should be an auth request is based on
    gclue_client_info_get_xdg_id() returning !NULL. Due to /proc/%u/cgroup
    not containing '1:name=systemd:' this isn't the case and hence apps
    are authorized by geoclue by default.
  * polkit-auth-prompt: Make buttons use the whole width
  * polkit-auth-prompt: Move auth button creation into ui file.
    This makes it simpler to maintain with the reset of the code
  * polkit-auth-prpmopt: Move info label next to icon.
    This makes it more consistent with the other dialogs.
  * polkit-auth-agent: Make buttons a bit larger.
    This makes them easier to use on mobile. We add a style class
    so we can reuse that in other modal dialogs.
  * style.css: Move spacing to content area.
    This allows buttons to go to the very bottom of the dialog box.
  * system-modal: Document the style classes
  * system-prompt: Use system-modal style classes
  * network-auth-prompt: Use system-modal style classes
  * system-modal: Use ultrabold font for title.
    Introduce a style class for that. The other dialogs
    need more work since they don't use a generic title yet.
    See #201
  * top-panel: Add some spacing between the entries.
    Helps #331
  * polkit-auth-prompt: Remove the button border.
    This gets this dialog in line with the buttons of other modal dialogs.
  * system-modal: Adjust button layout to designs
  * system-modal: Adjust dialog color to designs (Closes: #201)
  * system-prompt: Adjust to designs.
    Drop the icon and center message texts
  * network-auth-prompt: Adjust to designs.
    Drop the icon and center message texts
  * system-prompt: Add missing G_{BEGIN,END}_DECLS
  * app-auth-prompt: Used to authorize app permissions
  * location-manager: Use app-auth-manager to ask for geoclue permissions
    (Closes: #524, #532)
  * dir-locals: Don't use tabs in ui files
  * test: Move get_monitor() to testlib.
    Useful for other layer-surface tests as well
  * Add system-modal-dialog class.
    This can serve as base for system modal dialogs
  * polkit-auth-prompt: Use PhoshSystemModalDialog
  * polkit-auth-prompt: Use SystemModalDialog's `dialog-canceled` signal
  * polkit-auth-prompt: Adjust to designs.
    Center text and icons. We need to use a label instead of
    putting the placeholder text into the password entry since
    GTK3 only allows for a placeholder text when the entry does
    not have the focus.
  * system-modal-dialog: Allow to swipe away.
    Allow to cancel dialogs by swiping them away
  * system-modal-dialog: Limit width to 400px.
    Add a clamp so the dialog keeps a sane width to height ratio.
  * app-auth-prompt: Use system-modal-dialog (Closes: #536)
  * system-prompt: Switch to system-modal-dialog.
    Less code and more consistency.
  * network-auth-prompt: Switch to system-modal-dialog.
    Less code and more consistency.
  * network-auth-dialog: Remove unused system-prompt-grid.
    Takes up vertical space but isn't used.
  * style.css: Remove now unused styling.
    All dialogs use PhoshSystemModalDialog now
  * batteryinfo: Don't leak string
  * head: Don't reassign product.
    Use model as intended
  * system-modal-dialog: Tweak system-modal-dialog CSS
    - Use slightly darker background
    - Use 2px separator between buttons
    - Use 2px separator to dialog content
    See: #537
  * dir-locals: Use 2 spaces for css indent
  * gnome-shell-manager: Properly name variable.
    Looks like a c'n'p from PhoshNotifyManager
  * docs: Add PhoshSystemModalDialog
  * app-list-model: Prefix timer with [phosh]
    This makes it consistent with other timers
  * dbus: Add org.gnome.SessionManager.EndSessionDialog protocol.
    This will be needed for the 'end session' dialog
  * panel: Drop workarounds
  * tools: Add script to check end-session-dialog
  * Add PhoshEndSessionDialog.
    This dialog will be invoked by PhoshSessionManager to present
    logout/reboot/restart requests.
  * session: Export end-session-dialog.
    Export the end-session-dialog DBus API used by gnome-session. Upon
    invocation it will spawn PhoshEndSessionDialog. (Closes: #54, #520)
  * home: Don't reuse bindings
    g_settings_get_strv() is transfer-full so reusing it before freeing
    it beforehand leaks the data.
  * background: Don't leak slideshow.
    We need to unref it before reassigning a new one.
  * gnome-shell-manager: Don't leak GVariantIter

  [ Evangelos Ribeiro Tzaras ]
  * shell: Use G_PARAM_STATIC_STRINGS for all properties
  * phosh_shell_get_state: Use enum value instead of magic constant
  * phosh_shell_get_state: Use `Removing from` instead of `Removing to` in
    debug message
  * shell: make `shell_state` a property.
    This allows to bind the new GnomeShellManager:action_mode property.
    For that we move the initial call to `phosh_gnome_shell_manager_get_default`
    to `PhoshShell`'s `setup_idle_cb()` (which is nicer anyway since we do
    less work on startup).
    Closes #513

  [ Sebastian Krzyszkowiak ]
  * style.css: Disable PhoshActivity's button transitions.
    Adwaita sets `transition: all 200ms $ease-out-quad;` for all
    GtkButtons. In our case, the transitions being animated are
    not visible at all, but they still cause redraws, which can
    be rather heavy when window thumbnails are involved.

  [ Andy Holmes ]
  * screen-saver-manager: fix type name in idle callback.
    Type name was PhoshTorchManager instead of PhoshScreenSaverManager

  [ Jan Jasper de Kroon ]
  * po: Update dutch translation

  [ Emin Tufan Çetin ]
  * po: Update Turkish translation

  [ Jaroslav Svoboda ]
  * po: Update Czech translation

  [ Balázs Meskó ]
  * po:Update Hungarian translation

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 30 Mar 2021 16:02:47 +0200

phosh (0.9.0) byzantium; urgency=medium

  [ Sebastian Krzyszkowiak ]
  * PhoshHome: Hide overview when fully folded.
    This prevents useless rendering work from happening offscreen on window
    focus or activator list changes.
  * PhoshHome: Fix jumping position when reversing an active animation
    `1.0 - self->animation.progress` assumes linear interpolation; however,
    cubic ease out is used for animating home view position, so the new
    reversed position needs to be adjusted for that in order to start from
    the same place on the screen.

  [ Evangelos Ribeiro Tzaras ]
  * minor: Fix typos, indentation and code style issues
  * shell-manager: Honor action modes
  * lockscreen: Set shell state.
    And allow querying the shown page
  * gnome-shell-manager: Distinguish lock and unlock screen
  * gnome-shell-manager: Pretty print grabMode mismatch
  * shell: Pretty print shell state changes
  * prompts: Update PhoshShellState
  * home: Update PhoshShellState
  * shell: screen blanking: Update PhoshShellState

  [ Guido Günther ]
  * settings: Ref output stream.
    The 'default' in gvc_mixer_control_get_default_sink () made
    me believe the object would stick around but it doesn't so
    we need to hold a ref. (Closes: #510)
  * Add PhoshHksManager.
    This tracks the state of hardware kill switches (rfkill
    hardblocked devices)
  * shell: Add PhoshHksManager.
    RFKILL code heavily borowed from g-s-d
  * data: Add icons for disabled camera and mic.
    These can be dropped once we can rely on GNOME 3.38.
  * Add PhoshHksInfo.
    This can be used to display info about the different HKS devices
  * top-panel: Add camera and microphone hks info
  * ci: Drop support for Debian buster and PureOS amber-phone.
    Drop support for Debian buster/PureOS amber-phone since we can't
    sensibly support these for CI builds since the packages in buster
    are too old and amber-phone lags so we have to wait too long for
    migrations.
    amber-phone will be handled via pkg-phosh. Bullseye will switch
    to bookworm once that's open.
  * gitlab-ci: Drop CI repo remanents.
    It's not being filled since ages
  * gitlab-ci: Fetch libhandy-1 from Debian experimental.
    We'll need this until either Byzantium catches up or Bookworm opens
  * dbus: Shell: Add showOSD and add stub
  * Add PhoshOsdWindow.
    This finally adds OSD information. (Closes: #33)

  [ Pierre Michel Augustin ]
  * po: Add Creole Haitian translation

  [ Alexander Mikhaylenko ]
  * Bump libhandy version to 1.1.90.
    This will be required to use #HdyCarousel:allow-long-swipes.
  * overview: Use long swipes.
    Allow to swipe multiple pages at once.

 -- Guido Günther <agx@sigxcpu.org>  Tue, 02 Mar 2021 14:52:00 +0100

phosh (0.8.1) amber-phone; urgency=medium

  [ Guido Günther ]
  * shell: Simplify css loading
  * shell: Don't use magic constant for CSS provider priority
  * settings: Ensure types in shell.
    We use widgets at various places. Make sure we make the types known
    in a single location since otherwise there's duplication.
  * panel: Ensure types in shell.
    We use widgets at various places. Make sure we make the types known
    in a single location since otherwise there's duplication.
  * lockscreen: Ensure types in shell.
    We use widgets at various places. Make sure we make the types known
    in a single location since otherwise there's duplication.
  * shell: Move type setup to class_init.
    Doing it on the class level is enough. The shell is a singleton
    so this doesn't change anything in practice.
  * shell: Always use g_type_ensure.
    Older code used `<type>_get_type ()`
  * top-panel: Remove duplicate properties
  * top-panel: Untabify.
    It was a mixture of tabs and spaces
  * ui: Untabify all files.
    We want spaces there. The top-panel was the first offender
    but let's get the others correct too.
  * service: Always restart
    gnome-session prefers exit status 0 - even on errors. So restart in this
    case too.
  * monitor: Add getter for wl_output
  * build: Move monitor sources to tool's lib.
    This allows usage in tests and tools. This will be needed by
    the system-modal tests.
  * notification-banner: Always use primary output.
    This makes sure notification banners end up where the top bar is.
  * layersurface: Don't make props construct-only.
    This allows us to override in the derived classes constructor.
  * Add PhoshSystemModal.
    Abstract class for system-model dialogs. This allows all system modal
    dialogs to use the same base class avoiding leaking layer-surface
    details up into the class that initially builds the dialog.
  * system-modal: Add minimal tests
  * system-prompt: Use PhoshSystemModal
  * polkit-auth-prompt: Use PhoshSystemModal
  * network-auth-prompt: Use PhoshSystemModal
  * network-auth-prompt: Focus password entry.
    Similar in spirit to 0098cdfc9d791b56f580cc76ea1f8e42a31efbdb
  * system-modal: Add style class.
    This allow to remove it from 3 ui files

  [ Sebastian Krzyszkowiak ]
  * gitlab-ci: Use http URI for amber-phone repos.
    Otherwise initial apt-get update fails because of missing ca-certificates.
  * settings: Add a long-press shortcut to g-c-c display panel on "Docked" icon

  [ Elias Rudberg ]
  * Add toplevels_pending array and keep toplevel pointers
    (Closes: #407)

 -- Guido Günther <agx@sigxcpu.org>  Mon, 08 Feb 2021 20:43:29 +0100

phosh (0.8.0) amber-phone; urgency=medium

  [ xam ina ]
  * po: Update French translation

  [ Guido Günther ]
  * keyboard-events: Drop newlines from `g_warning()`
    g_warning newline terminates on it's own.
  * d/control: Update from debian.
    This typos and package sections
  * d/control: Update dependencies/recommends from Debian.
    We don't pull them in on amber and we want them for byzantium
    anyway.
  * gitlab-ci: Drop test-package stage.
    Since we have PureOS packaging mostly separate drop the
    last pipeline stage since that is run there. This brings
    down build times and uses fewer runners.
  * Move overrides to data.
    This makes it simpler for downstreams to track changes.
  * Move systemd service to data/
    This makes it simpler to track for downstreams.
  * lockscreen: Drop leading space in day of month (Closes: #225)
  * po: Adjust locales to string change.
    This avoids breaking all locales
  * notify-manager: Don't leak notification.
    A ref is taken when added to the list so no need to keep
    it around
  * settings: Make sure we rotate clockwise
    wlroots as of 0.11.0 changed rotation correction. Adapt to that,
    we don't bother what older versions do - downstream can just
    revert.
  * shell: Properly sync lock property.
    The shell's locked property did not really reflect the state of
    lockscreen-manager's "locked" property. Fix this by binding those two.
    This will also simplify things like the rotation manager since we
    don't need to pass the lockscreen-manager around anymore.
  * polkit-auth-agent: Disable verbose debugging.
    We don't want cookies, etc to end up in the logs
  * polkit-auth-prompt: Unref session too.
  * polkit-auth-agent: Toggle auth prompt with lockscreen visibility
  * wifimanager: Toggle network auth prompt with lockscreen visibility
    (Closes: #299)
  * system-prompter: Toggle system auth prompt with lockscreen visibility
  * monitor-manager: Clarify physical and logical monitors
  * monitor-manager: Use head for physical monitors in get_current_state
  * monitor-manager: Don't bother setting up modes in GetResources.
    Only the ones from CurrentState are relevant.
  * monitor-manager: Make sure to bump serial on config changes
  * monitor-manager: Notify DBus listeners about config changes
  * monitor: Add description.
    We'll use that to match up with heads
  * head: Add connector information.
    Needed to switch monitor-manager to use heads.
  * Allow to switch output configurations.
    This allows to disable heads and turn them back on which is useful for
    docked mode)
  * monitor-manager: Flip transform.
    The transform we get from the DBus protocol is flipped
    regarding Waylands view on it. This is similar to what
    was done in wlroots to preserve config changes.
  * protocols: Update wlr-output-management
    v2 supports make/model/serial.
  * head: Use v2 of wlr-output-management.
    This allows for vendor/product/serial again.
  * monitor-manager: Improve display name.
    We have the necessary info in the heads now. Code
    inspired from what's done in mutter.
  * head: Add a mode name and lookup.
    We don't bother with a hash map since e.g. removal would mean
    iteration too so just do a linear search when needed.
  * monitor-manager: Set output resolution as well (Closes: #140)
  * head: Allow to fetch supported scales.
    We only do integer scaling and use the same limits than mutter
    (max 400%).
  * monitor-manager: Allow to set scaling too
  * mode-manager: Improve external output detection.
    If there's a single output and it's not built-in it's an external
    one. (Closes: #436)
  * head: Allow for smaller logical area in portrait.
    This allows to set the scaling e.g. on the Librem 5.
  * head: Allow to easily clear all pending state.
    Instead of having this in different places add a single helper.
  * polkit-auth-prompt: Grab focus on every request.
    Otherwise the input field isn't refocused after a failed attempt.
    (Closes: #470)
  * system-prompter: Focus confirmation entry.
    Select the confirmation entry when showing a confirmation prompt.
  * system-prompter: Focus password entry.
    Refocus the password entry when the prompt is shown. Otherwise
    the focus is on the button after failed password attempt when
    using touch.
  * timestamp-label: Introduce phosh_time_diff_in_words.
    This is mostly to make things easily testable
  * timestamp-label: Unbreak relative days and months.
    Phones have a long uptime so fall back to pure date printing
    after 1y.
  * timestamp-label: Unbreak relative years.
    So far there always was fallback, drop that.
  * timestamp-label: Add more flexibility to formats.
    Some languages want to have 'almost' and 'over' past the numbers.
  * po: Update pot file

  [ Anders Jonsson ]
  * po: Update Swedish translation

  [ Tomasz ]
  * Update Polish translation
    po: update Polish translation

  [ Timo Jyrinki ]
  * po: Update Finnish translation

  [ Sebastian Krzyszkowiak ]
  * gitlab-ci: Don't use global before_script for package jobs.
    It used to work accidentally because pipeline definitions
    had been overriding before_script, which isn't the case anymore.
  * gitlab-ci: Simplify package:deb-pureos-amber job.
    Thanks to librem5-ci!14 our before_script doesn't have to
    do the apt preparations anymore.
  * gitlab-ci: Use "needs" keyword instead of "dependencies" for test+docs stage.
    This allows for better parallelism in the pipeline.

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ 寮 ]
  * po: Update Japanese translation
  * docked-info: Mark 'Undocked' as translatable too
    "Docked" and "Undockd" are user visible strings and
    only the former was marked as translatable so far

 -- Guido Günther <agx@sigxcpu.org>  Sun, 17 Jan 2021 17:46:56 +0100

phosh (0.7.1) amber-phone; urgency=medium

  [ Guido Günther ]
  * background: Correctly chain up in dispose.
    This fixes a crash when unplugging a 2nd screen.
    Fixes 8828176f6c98a4bde94c9f6daa46d0a87a3c8d20
  * Add initial stubs for org.gnome.Shell DBus protocol.
    This will be needed for OSD, monitor labels and grabs
  * activity: Allow to focus.
    This fixes the toggle-overview keybinding
    Fixes 20c3a79fb888e876f30d1a590084c87cb1c16591
  * home: Hide arrow when there are no activities
    (Closes: #261)
  * Handle logind's Lock and Unlock.
    This allow 'loginctl lock|unlock <session-number>' to work.
  * phosh.service: Set session type and name.
    This way we can match the right session via phosh_find_systemd_session
    even when not using a window manager. We can drop the XDG_SESSION_TYPE
    once phoc switches to newer wlroots which takes care of it since 0.12.0.

  [ Evangelos Ribeiro Tzaras ]
  * shell-manager: Implement keygrabbing.
    Ungrabbing is only allowed for the client who originally grabbed
  * settings: get rid of explicit volume key handling.
    With the DBus interface org.gnome.Shell now supported, g-s-d/media key
    plugin now handles volume keys for us

  [ Sebastian Krzyszkowiak ]
  * Remove custom drawing in system prompts.
    Custom drawing doesn't seem necessary. Fixes unwanted background in
    popovers.

  [ Arnaud Ferraris ]
  * data: add 'System' category to desktop entries

  [ Andika Triwidada ]
  * po: Add Indonesian translation

 -- Guido Günther <agx@sigxcpu.org>  Thu, 17 Dec 2020 12:46:29 +0100

phosh (0.7.0) amber-phone; urgency=medium

  [ Guido Günther ]
  * Add session-manager.
    This adds a proper object - current session.c doesn't have that
    making it hard to use signals, etc.
  * Add mount-manager. This automounts new volumes
  * notify-manager: Add method to submit notifications.
    This will allow to submit notifications from other parts of
    the shell. Use it for the DBus part too.
  * notification: Allow for a NULL timestamp.
    This just uses the current time.
  * timstamp-label: Use 'now' instead of <15s.
    It looks odd when new notifications print '<15s' right away.
  * notify-manager: Allow derived classes to use different action handlers.
    We can turn the current 'default' notification into a
    PhoshDBusNotification to make that even more pronounced at some point.
  * Add PhoshMountNotification.
    A notification that displays information about newly mounted
    file systems.
  * mount-manager: Indicate mounts via notifications.
    We add a single action that opens the containing folder.
  * mount-notification: Only add action if we have a handler.
    Since nautilus is not adaptive don't add an action if
    it's not available.
  * Add PhoshDBusNotification.
    This allows us to have notification just do the right thing.
  * notification: Move do_action into dbus-notification.
    This avoids the special case in the notification manager.
  * data/phosh: Print version with `--version` (Closes: #425)
  * run: Simplify oneshot gdb.
    Often we just want to run phosh and get a backtrace e.g.
    for G_DEBUG=fatal-criticals:
       PHOSH_AUTO_GDB=1 SKIP_GNOME_SESSION=1  _build/run
    does this.
  * gitlab-ci: Make it simple to get a backtrace.
    This can be done by passing $SMOKE_PARAMS='-c' to gitlab-ci.
  * background: Add initial support for Background XML.
    Many 'slideshows' are just a fixed single image so handle that
    as a start. This allows us to use Debian's/PureOS background
    data (as per desktop-base package)
  * network-auth-prompt: Handle "sae" for WPA3 support.
    This unbreaks authenticating to WPA3 networks which
    so for ended in "not supported".
  * shell: Only show banners for apps with show-banners on

  [ Evangelos Ribeiro Tzaras ]
  * meson: bump version to 0.50

  [ Alexander Mikhaylenko ]
  * Slide back windows that failed to close.
    Closes: #429
  * Use easeOutBounce interpolator for the slide back animation.
    Make it a little fancier.

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

 -- Guido Günther <agx@sigxcpu.org>  Thu, 10 Dec 2020 13:58:42 +0100

phosh (0.6.0) amber-phone; urgency=high

  [ Guido Günther ]
  * run: Prepend current schema dir.
    This allows phosh to e.g. find phoc's schema if that also uses run.in
  * run.in: Use memory GSettings backend.
    This makes sure we don't mess with systems settings.
    Since this affects testing docked mode we allow to override it.
  * gitlab-ci: Build bullseye packages as well.
    This helps testing MRs against PureOS byzantium and Debian Bullseye
  * d/control: Update package description
  * debian: Add phosh-mobile-tweaks.
    We have this in Debian and it's useful overall since it minimizes
    librem5-base and makes it simpler to track changes for downstreams.
  * Rename notify dbus interface class to PhoshNotifyDBus.
    We have mixed Dbus vs DBus spelling in several interfaces but we want to
    use the later.
  * Rename idle dbus interface class to PhoshIdleDBus.
    We have mixed Dbus vs DBus spelling in several interfaces but we want to
    use the later.
  * Rename screensaver dbus interface class to PhoshScreenSaverDBus.
    We have mixed Dbus vs DBus spelling in several interfaces but we want to
    use the later.
  * layer-surface: Add debugging when a surface goes away.
    This helps tracing the order of events
  * lockscreen-manager: Explain purpose
  * lockscreen-manager: No need to disconnect signals from lockscreen.
    We're about to destroy the lockscreen object a couple of lines later
  * lockscreen-manager: Move lock screen when output goes away.
    We move the lock screen in case the monitor it's on goes away.
    (Closes: #385)
  * monitor: Add phosh_monitor_get_power_save_mode.
    Simple getter
  * lockscreen-manager: Handle transform only on power mode changes.
    This makes sure we rotate correctly when the screen unblanks and
    we don't operate on disabled outputs which trips up phoc.
  * lockscreen-manager: Don't rotate external screens.
    We keep the transform there as well assuming the lock screen fits.
  * home: Handle osk-button visibility.
    This was currently split between the button and the home
    bar which resulted in the button being shown although
    it should stay hidden because the OSK was disabled. (Closes: #403)

  [ Alexander Mikhaylenko ]
  * build: Compile gschemas on install
  * overview: Enable carousel reveal animation
  * feedback-manager: Stop using deprecated signals.
    This will be useful when PhoshActivity stops subclassing GtkButton.
  * Add PhoshAnimation.
    This will help us to have less verbose code later.
  * Add PhoshSwipeAwayBin.
    Implement a simple widget for swipe-to-remove pattern. It's always
    vertical and changes the child's position and opacity during the swipe.
  * activity: Implement swipe-to-close.
    Stop subclassing GtkButton, instead contain a PhoshSwipeAwayBin
    and a GtkButton inside. Pass through the clicked signal from the button.
    Make close button animate the swipe bin so that closing is animated too.
  * activity: Show close button only on hover.
    Now that we have another way to close apps on touch, let's hide the button
    and show it only on hover. This essentially makes it pointer-only.
  * Require libhandy 1.0.2

  [ Arnaud Ferraris ]
  * shell: add an accessor for the mode manager.
    Other modules should be able to query the device type too.
  * lockscreen-manager: undo transform only for phones.
    If the display is large enough to make the keypad usable even when
    rotated, we should not try to rotate it back to the default orientation.

 -- Guido Günther <agx@sigxcpu.org>  Sun, 15 Nov 2020 11:35:52 +0100

phosh (0.5.1) amber-phone; urgency=medium

  [ Guido Günther ]
  * debian: Depend on gnome-shell-common.
    We use that schema for the keybindings.
  * ci: Don't depend on gnome-session.
    This would have avoided the missing schema regression
  * osk-button: Remove unused defines
  * Don't hide OSK on lock screen.
    Let is pop up if requested, only hide it when locking.
    Closes: #406
  * osk-manager: Fix availability->visibility sync.
    Things like osk-button should look unpressed when the dbus name
    goes away.

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ Марко М. Костић (Marko M. Kostić) ]
  * po: Update Serbian translation

  [ Arnaud Ferraris ]
  * docked-manager: make tablets dockable too.
    The current code considers that only phones are dockable. This patch
    improves the device mode check so that tablets also benefit from auto mode
    switch (tested on the PineTab).

 -- Guido Günther <agx@sigxcpu.org>  Tue, 03 Nov 2020 17:18:48 +0100

phosh (0.5.0) amber-phone; urgency=medium

  [ Guido Günther ]
  * build: Sort enums alphabetically
  * enums: Sort types alphabetically
  * torch-manager: Cleanup DBus proxy
  * feedback-manager: Chain up constructed
  * shell: Don't show notification when settings menu is open.
    This avoids a notification banner when the notification list
    is already open.
  * settings: Use g_signal_connect_object.
    The panel might go away (e.g. when moved between outputs). This
    makes sure the notification list does not send to an already
    disposed object.
  * settings: Make sure we fill the notification list initially.
    Otherwise it remains empty e.g. when we move the primary display.
  * lockscreen-manager: Use correct level for debug message
  * wayland: Drop unused property setter
  * settings: Enforce four quick settings per row.
    We allowed to go down to three which makes things look bad when quick
    settings information gets too wide (e.g. wifi SSID).
  * debian: Support nodoc build profile.
    The doc build takes ages and it's often not needed on the device
  * monitor: Drop duplicate setting of wl_output_done
  * wayland: Drop priv
    for less code. And rather check for the right type in public methods
    instead.
  * osk-button: Show/hide depending on a11y setting.
    This makes sure we don't show the button even though
    squeekboard would not unfold. (Closes: #363)
  * osk-manager: Simplify on_osk_show
  * osk-manager: Fix lockscreen_manager typo
  * osk-manager: Use g_autoptr
  * osk-manager: Only hide the keyboard when we lock the screen.
    So far we hid it on every state change.
  * osk-manager: Handle visibility property directly.
    This makes the visibility property r/o and makes sure
    it gets updated when the corresponding DBus property actually changes
    (after the async call or when we're told it changed from the OSK).
    This makes sure they stay in sync. This is also simpler since we don't
    need to bother with variant parsing, etc.
  * overview: Focus current activity.
    This allows to keyboard navigate on the home screen
  * Switch keyboard-events to GAction.
    This allows to register global keyboard events from different
    parts of the shell easily and moves it's handling out of
    the overcrowded settings.
  * keyboard-events: Ungrab accelerator when GAction is removed
  * overview: Move public functions past `_new`
    As per coding style
  * app-grid: Move public functions past `_new`
    As per conding style.
  * overview: Add helper to focus app search
  * settings: Ungrab keyboard events (Closes: #398)
  * home: Bind key to show overview.
    We use org.gnome.shell.keybindings `toggle-overview` and
    `toggle-application-view` to focus the application switcher
    and app search respectively.
  * d/control: Depend on phoc that doesn't crash when unbinding keyboard grabs
  * shell: Create toplevel manager early.
    So far we were lucky that no wl_display_roundtrip () would let
    us miss existing toplevels.
  * shell: Process all pending wayland events on startup.
    This is needed to get reliable monitor information.
  * shell: Pick correct built in monitor.
    Simplify the code now that we know we have all the monitor
    information (Closes: #392)
  * panel: Fix typo
  * monitor-manager: Add property for number of monitors.
    This allows to listen to a single signal when the number
    of monitors changed.
  * monitor-manager: move DBus setup into idle callback.
    This makes sure we expose the DBus interface past setting
    up all the monitor related wayland protocol listeners
  * wayland: Add G_{BEGIN,END}_DECLS
  * wayland: Provide seat capabilities.
    We don't bother to introduce a separate PhoshWlSeat object
    for that yet.
  * dbus: Add org.freedesktop.hostname1 interface.
    So we can cherry the chassis type
  * data: Add symbolic phone icons.
    From
    https://gitlab.gnome.org/Teams/Design/icon-development-kit/
    as of
    0831cbb900e02aaa37bd270a25171c1751394cb8
  * Add mode-manager to handle different device modes.
    This uses logind's chassis type and information about
    connected hardware to determine the device type and
    what the device acts like (e.g. a phone with monitor
    and keyboard/mouse should be handled like a desktop).
  * Add 'docked' quick setting and manager.
    Docked manager figures out if a device has enough
    hardware around to be treated as desktop/laptop.
    If so it sets the corresponding settings like
    floating windows, etc.
    The quick setting allows to override this.
  * status-bar: Add docked icon when docked.
    Show no icon when undocked
  * osk-button: Show/hide depending on a11y setting.
    This makes sure we don't show the button even though
    squeekboard would not unfold. (Closes: #363)
  * schema: Add adaptive apps filter entry.
    This will allow the shell to have a positive list of adaptive
    apps in case their desktop files aren't up to date yet.

  [ Марко М. Костић (Marko M. Kostić) ]
  * po: Update Serbian translation

 -- Guido Günther <agx@sigxcpu.org>  Tue, 27 Oct 2020 10:13:19 +0100

phosh (0.4.5) amber-phone; urgency=medium

  [ Anders Jonsson ]
  * po: Update Swedish translation

  [ Guido Günther ]
  * phosh.desktop: Add 'DesktopNames'
    Handle it where it's supposed to be handled.
  * shell: Drop env setup.
    The session manager is supposed to handle this.
  * d/phosh.service: Set XDG_CURRENT_DESKTOP.
    Do it here until we run a display manager.
  * gitlab-ci: Use libhandy1 for alpine builds.
    This fixes the CI builds
  * po: Rename pt_PT.po to pt.po.
    This allows to fall back for other Portougese translations.
  * feedback-manager: Drop TODO.
    We use the correct icons since some time
  * keyboard-events: Move comment to signal description.
    The comment confused gtk-doc since it stared with /** and the signal has
    a clearer gtk-doc string already.
  * feedback-manager: Fix gtk-doc strings
  * home: Fix gtk-doc strings
  * home: Properly document enum values.
    This allows gtk-doc to pick it up.
  * monitor: Make declaration match definition.
    We call the object we act on self.
  * layersurface: Fix gtk-doc strings.
    Document the function parameters
  * phosh-wwan-iface: Document interface.
    This makes gtk-doc happy.
  * phosh-wwan-mm: Mention ModemManager.
    Now that we have two implementations mention MM here.
  * docs: Add some missing client protocols.
    This brings down the number of warnings significantly.
  * quick-setting: Fix class names.
    Several lacked the Phosh prefix and hence did not turn into links.
  * connectivity-info: Fix class name
  * bt-info: Fix property separator.
    It's ':' for props not '::'.
  * shell: Make definition match declaration.
    Fixes several gtk-doc warnings
  * wwaninfo: Fix class name.
    Fixes another gtk-doc warning.
  * shell: Add missing parameter docs
  * layser-surface: Document configured signal
    and fix typos related to that.
  * thumbnail: Add class doc.
    Avoids another gtk-doc warning.
  * panel: Properly document enum.
    Use gtk-doc strings to avoid warning and make them show up in
    the documentation.
  * tools: Add a tool to check for gtk-doc warnings.
    This ignores warnings from the generated DBus and wayland
    protocols for the moment but reduces the noise so we avoid
    errors in new code.
  * system-prompter: Unlink PhoshSystemPromtper.
    It's not a class, so we can't link to it.
  * session: Unlink PhoshSession.
    It's not a class, so we can't link to it. Update the doc
    string while at it.
  * polkit-auth-prompt: Unlink PolkitAgentSession.
    Polkitsdocumentation does not end up in /u/s/gtk-doc
    on Debian so the reference can't be resolved.
  * layersuface: Add missing G_{BEGIN,END}_DECLS
  * network-auth-prompt: Add missing G_{BEGIN,END}_DECLS
  * docs: Drop gi ref.
    We don't use it.
  * d/control: Add doc packages.
    Needed to get the cross references right
  * doc-check: Ignore link to NMClient|NMConnection.
    They can' be properly linked to even with the docs installed
    due to their odd type.
  * monitor: Document PhoshMonitorConnectorType
  * notification: Document PhoshNotificationUrgency
  * notification: Document PhoshNotificationReason
  * shell-network-agent: Stub enum doc.
    Use a minimal change since this file is in contrib/.
  * gitlab-ci: Run documentation check.
    This avoids regression on the generated documentation. We
    ignore errors from generated files.
  * Rename session presence dbus interface class to  PhoshSessionPresenceDBusPresence.
    We have mixed Dbus vs DBus spelling in several interfaces but we want to
    use the later.
  * Rename sensor-proxy dbus interface class to PhoshDBusSensorProxyProxy.
    We have mixed Dbus vs DBus spelling in several interfaces but we want to
    use the later.
  * Rename rfkill dbus interface class to PhoshRfkillDBus.
    We have mixed Dbus vs DBus spelling in several interfaces but we want to
    use the later.
  * docs: Sort in keyboard-events alphabetically
  * monitor-manager: Add missing G_{BEGIN,END}_DECLS
  * monitor-manager: Use g_autoptr.
    Eases upcoming additions
  * monitor: Add missing G_{BEGIN,END}_DECLS
  * monitor: Make debugging more useful
  * shell: Don't allow to set rotation property.
    It's marked as read-only
  * monitor-manager: Add sections.
    This makes it easier to figure out where to add new
    private methods.
  * Wire up zwlr_output_management_v1.
    This does the minimum to maintain a list of heads. A
    head represents a display device that might or might
    not be part of the current compositor space.
  * monitor: Add monitor transforms.
    This allows us to not leak the wayland transforms to classes
    outside PhoshMonitor and PhoshMonitorManager.
  * phosh-head: Add pending state.
    This will allow monitor-manager to prepare pending configuration
    updates.
  * PhoshMonitorManager: Allow to apply state changes.
    This adds the methods to change and apply new
    configuration state.
  * Switch from primary monitor rotation to transform.
    Use the output transform in instead of a degree value.
    This will allow us to handle flipped configurations correctly.
  * shell: Use wlr-output-management instead of phosh private protocol.
    This gives us better control which output to rotate and does
    away with one more private protocol.
  * monitor-manager: Get modes from head instead of monitor
    wlr-output-management has all the modes listed while wlroots only
    gives us the current mode via xdg_output.
  * monitor-manager: Don't apply non persistent config changes.
    This makes sure we don't switch the primary display right away
    but rather on 'apply'.
  * quick-settings: Don't leak panel in error path
  * quick-settings: Keep DBus proxy around long enough
    g_dbus_proxy_call does not take a ref so we were just lucky
    that proxy was still valid in `call_dbus_cb` so far.
  * Move helpers to tools/
    There's no clear distinction between them.
  * gresources: Sort icons alphabetically
  * bt-manager: Fix typo
  * settings: Fix indentation error
  * settings: Fix misaligned function definitions
  * settings: Sort type_ensures and template bindings alphabetically
  * settings: Don't let settings_constructed grow out of bounds.
    Use separate `setup_` functions for individual widgets. This
    helps shuffling stuff around later on and we can drop
    create_vol_channel_bar.
  * dbus: Add (not yet merged) UPower Torch interface
  * Add initial torch support.
    Add a simple torch quick setting.
  * shell: Fix typo
  * shell: Update primary monitor when it goes away (Closes: #382)
  * lockscreen-manager: Drop PhoshLockscreenManagerPrivate.
    It's a finally type so no need for priv (and it's very unlikely
    we'll ever derive here)
  * lockscreen-manager: Fix up indentation.
    Since we created enough churn in the previous commit let's
    fix the indentation too.
  * tests: Drop unused test.
    It's neither built nor run
  * tests: Don't include bad-props.h when unused
  * tests: Rework tests using g_test_expect_message.
    This no longer works with structured logging so use
    g_test_trap_assert_stderr() as recommended by glib docs.
  * Use structured logging.
    This will pick a suitable log writer automatically and
    pass on structured information when e.g. logging to the journal.
  * Add a custom log handler.
    This is to a large extend what glib does but we don't read the levels
    from the environment but allow to set them when setting the handler.
    Resetting the handler instead of just adjusting the domains has the
    advantage that we can pass in new user_data. Otherwise we'd have to keep
    the current log domains around and protect them by an additional mutex
    to not corrupt the log domains of handlers running in other threads.
    When setting the handler glib handles that for us since handler
    replacement is already mutex protected.
  * main: Toggle debug messages on SIGUSR1.
    We need to use a custom log handler to stay clear
    of modifying the env var.
  * d/gbp.conf: Automatically bump meson.build version.
    No more manual editing.

  [ Juliano de Souza Camargo ]
  * po: Update Portuguese translation

  [ Emin Tufan Çetin ]
  * po: Update Turkish translation

  [ Julian Sparber ]
  * docs: add info about the env GTK_INSPECTOR_DISPLAY

  [ Tobias Bernard ]
  * Add torch icons

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 11 Oct 2020 13:50:48 +0200

phosh (0.4.4) amber-phone; urgency=medium

  [ Guido Günther ]
  * gitlab-ci: Add i386 cross build.
    This ensures we don't break 32bit again. We allow failure
    though since we need to pull packages from Debian for that
    that might not always be up to date.
  * timestamp-label: Unbreak build on 32 bit platforms.
    Use a G_ format specifier for GTimeSpan.
  * gitlab-ci: Don't use Immediate-Configure.
    This confuses apt like.
  * media-player: Clarify some translatable strings
  * media-player.ui: Match ui strings with the ones in the code
  * wwaninfo: Disambiguate 'cellular'
  * po: Update pot file
  * Drop zanata.xml.
    We're using GNOME's translation infrastructure
  * README: update description.
  * d/rules: Work around failed doc build on install.
    This works around a problem where an invocation
    of `meson-install` does not generate all docs. See
    https://github.com/mesonbuild/meson/issues/2831
  * docs: Split out homepage url
  * debian: Build-depend on pandoc for the deb build
  * Add gtk-markdown-to-docbook (taken from GTK)
  * docs: Add some context
  * data/phosh.in: Be a bit more friendly when asked for help
  * po: Add initial Korean translation. Thanks Seong-ho Cho
  * doap: Add Zander Brown.
  * debian: Install all phosh related schema files.
    Otherwise we lack the enums and fail to start
  * Switch to libhandy 1.0
  * treewide: Replace HdyColumn by HdyClamp
  * lockscreen: Adjust to HdyKeypad API changes
  * treewide: libhandy API is stable now
  * lockscreen: Use HdyCarousel instead of HdyPaginator
  * overview: Use HdyCarousel instead of HdyPaginator
  * style: Adjust to HdyKeypad internal changes.
    The grid is now embedded in the widget.
  * gitlab-ci: Use libhandy-1 in smoketests too

  [ Zander Brown ]
  * l10n: disambiguate timestamp strings
  * po: Update British English translation
  * general: update license headers.
    Make sure all our license headers match the style in HACKING.md
  * ci: validate license headers
  * treewide: Use two empty lines between functions.
  * arrow: Use G_PI instead of M_PI
  * treewide: Don't use C++ style comments. As per coding style.
  * general: use char instead of gchar.
    Usage of gchar is discouraged in projects such as glib/gtk
    In gtk4 all usage of gchar has been dropped
    Closes: #364
  * general: use int/double/float instead of gint etc.
    Usage of gint,gdouble,gfloat is discouraged in projects such as glib/gtk
    In gtk4 all usage of gint/gdouble/gfloat has been dropped
    Closes: #364
  * keyboard-events: drop unused props global

  [ anteater ]
  * wwan-mm: cleanups for style/consistency
  * wwan-mm: use Ugly_Case to correct MMDBus codegen
  * wwan: build: reformat
    make things more like other meson.build files and avoid rightward drift
  * wwaninfo: use PHOSH_WWAN interface to access wwan object
    This is more flexible and PhoshWwanInfo doesn't care about the
    implementing type
  * wwaninfo: reorder includes
  * wwan: add PhoshWWanOfono
  * shell: add missing whitespace
  * shell: clean up dispose, fixing leaks
  * shell: reorder includes
  * Add and use wwan-backend setting

  [ Luís Fernando Stürmer da Rosa ]
  * po: Update Brazilian Portuguese translation

  [ Sebastian Spaeth ]
  * po: Fix German translation of Phone Shell.

  [ Nikola Pavlica ]
  * po: Add Serbian (Cyrilic) translation

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ Emin Tufan Çetin ]
  * po: Update Turkish translation

  [ Fabio Tomat ]
  * po: Add friulian translations

  [ scootergrisen ]
  * po: Update Danish translation

  [ Марко М. Костић (Marko M. Kostić) ]
  * po: Update Serbian translation

 -- Guido Günther <agx@sigxcpu.org>  Fri, 18 Sep 2020 13:37:36 +0200

phosh (0.4.3) amber-phone; urgency=medium

  [ Darren R ]
  * Add timestamp-label. The PhoshTimeStamp label display relative times and
    will be used in notifications.

  [ chefe ]
  * po: Merge all german translations together

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ Guido Günther ]
  * po: Update pot file

  [ Evangelos Ribeiro Tzaras ]
  * Add keyboard forwarding protocol. This will allow the
    Volume Buttons to work with recent phoc.

  [ Daniel Mustieles ]
  * po: Update Spanish translation

 -- Guido Günther <agx@sigxcpu.org>  Sun, 02 Aug 2020 18:47:19 +0200

phosh (0.4.2) amber-phone; urgency=medium

  [ Guido Günther ]
  * shell: Add phosh_shell_get_locked ()
    This makes it symmetric with `phosh_shell_set_locked ()`.
  * settings: Emit feedback when notifications get added.
    We only to so when the screen is locked. The feedback is ended
    when the list is cleared.

  [ Marc Riera Irigoyen ]
  * po: Update Catalan translation

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ Tim Sabsch ]
  * po: Update German translation

  [ Daniel Șerbănescu ]
  * po: Update Romanian translation

  [ Arnaud Ferraris ]
  * d/control: drop Recommends: phoc
    phoc is now a dependency, it shouldn't appear in the `Recommends:`
    section anymore

  [ Luca Weiss ]
  * panel: implement restart action.
    Fixes #241

 -- Guido Günther <agx@sigxcpu.org>  Fri, 24 Jul 2020 10:55:08 +0200

phosh (0.4.1) amber-phone; urgency=medium

  [ Guido Günther ]
  * wifimanager: Make variable name match property.  Otherwise it's confusing
    what it refers too.
  * wifimanager: Compare to the old state rather than the probed state.  Emit
    property changes when the old and new state differ not when our state
    differs from detected devices.
  * shell: Attach to primary monitors configured signal.  This allows us to
    emit the 'rotated' signal when it really happened.
  * rotateinfo: Mark orientations as translatable
  * rotateinfo: Take display geometry into account.
    We assumed portrait from the very beginning but that's not correct
    on laptops and TVs. (Closes: #326)
  * shell: Undo rotation on startup.
    This makes sure we get an unrotated shell in any case
    (e.g. if phosh crashes in landscape mode) (Closes: #265)
  * monitor: Fix several gtk-doc strings.
    This fixes some of the warnings during doc generation
  * background: Load image async.
    This avoids blocking on I/O.
  * background: Avoid updating the background twice.
    Only update the settings on layer-surface configure but wait for the
    monitor::configured signal before drawing anything.
    This avoids drawing the background twice on each rotation causing even
    more flicker.
  * background-manager: Tell background about it's scale
    gtk_widget_get_scale_factor gives us the wrong value with multiple
    outputs of different scale.
  * background: Skip any image loading if layer surface isn't configured.
    There's no point to waste resources and we don't have valid dimensios
    and it breaks the tests.
  * wifiinfo: Sync initial state.
    The downside of not using a property binding is that we need to
    do that on our own.
  * monitor-manager: Set logical position.
    This makes the monitor layout in g-c-c match what the compositor thinks
    it is so monitors are displayed next to each other rather than over
    each other.
  * build: Move all dependency() calls to top level build file
  * Bluetooth quick setting and status indicator
  * background: Avoid warning on NULL pixbuf.
  * wwan-mm: Connect to modem async
  * wwaninfo: Use operator name as detail.
    This gives us the operator name in quick settings

  [ Julian Sparber ]
  * AppGrid: Don't set the focus to AppGridButton when clicking on them.
    Set the property `focus-on-click` to TRUE so that we don't show the blue
    border and don't set the focus to the AppGridButton when clicking on
    them.

  [ Emin Tufan Çetin ]
  * po: Update Turkish translation

  [ Daniel Șerbănescu ]
  * po: Update Romanian translation

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ scootergrisen ]
  * po: Update Danish translation

  [ Balázs Meskó ]
  * po: Update Hungarian translation

  [ Sebastian Krzyszkowiak ]
  * overview: Clean up unneeded size checks.

 -- Guido Günther <agx@sigxcpu.org>  Mon, 06 Jul 2020 10:25:20 +0200

phosh (0.4.0) amber-phone; urgency=high

  [ Guido Günther ]
  * feedbackinfo: Add translation note.
    Link to feedbackd's theme description to help translators
  * media-player: Don't act on every name change.
    We were looking at all vanished DBus names instead of only players. This
    lead to a slight flicker of the widget e.g. on audio events or
    notifications (which was especially noticeable on the lock screen).
  * PhoshLayerSurface: Add missing sentinel
  * Add small testlib allowing for wayland based tests using phosh-wayland
    and spawning a phoc instance. Add two initial tests using that.
  * monitor: Properly invaliate wl_output_done.
    On `wl_output` configuration changes invalidate the done flag
    so another `configured` signal is emitted once all changes
    are processed. So far we only handled the initial configure.
  * phosh-wayland: Clarify ownership of phosh_wayland_get_wl_outputs
  * shell: Do nothing when primary monitor does not change
  * shell: Don't clear faders when we dispose the panels
  * status-icon: Drop show-always (Closes: #312)
  * Add WWAN quicksetting
  * gitlab-ci: be more robust when using xvfb
  * background-manager: Avoid recreating backgrounds too often
    Only do so initially and let PhoshBackground adjust to configuration
    changes notified by PhoshBackground instead.
  * background: Skip image loading when using colored mode.
    There's no need to even try to load an image if we're not using
    it later on.
  * tests: Add a simple background test.
  * d/rules: Depend on phoc >= 0.4.0.
    While we can run with older versions this makes sure people
    pull in a recent enough version for all the feaures.

  [ Daniel Șerbănescu ]
  * po: Update Romanian Translation

  [ Sebastian Krzyszkowiak ]
  * PhoshHome: Use PhoshLayerSurface signals and props to handle resizing.
    This fixes the issue with disappearing bottom bar when output dimensions
    change and it actually more in line with what we wanted to achieve there.
  * PhoshWayland: Don't require phosh_private interface in latest version.
    We can still deal with earlier ones.
  * Render window thumbnails in the overview
  * wwaninfo: Use network-cellular-disabled-symbolic when no hw is present
  * background: Stop listening to `rotation`
    PhoshMonitor now signals rotation correctly

  [ marty1885 ]
  * monitor: prevent sending multiple event in one monitor configuration
    change
  * background: recreate background on monitor geometry change

  [ Julian Sparber ]
  * wifimanager: Use disabled icon for unknown states.
  * Add Wifi quicksetting

 -- Guido Günther <agx@sigxcpu.org>  Tue, 30 Jun 2020 14:14:27 +0200

phosh (0.3.1) amber-phone; urgency=medium

  [ Sebastian Krzyszkowiak ]
  * PhoshOverview: Add haptic feedback when clicking on activity
  * feedback-manager: Add a helper to trigger feedback on button press/release

  [ Daniel Șerbănescu ]
  * po: Add Romanian translation

  [ Rafael Fontenelle ]
  * Update Brazilian Portuguese translation

  [ Guido Günther ]
  * feedback-manager: Make 'connect_feedback' specific to buttons.
    Those have 'clicked' and 'released' signals.
  * app-grid-button: Make sure we unref the allocated gesture
  * build: Bump version
  * lockscreen: Drop HDY_DISABLE_DEPRECATION_WARNINGS.
    We're not using any deprecated widgets
  * lockscreen: Add G_{BEGIN,END}_DECLS
  * Lots of gtk-doc fixups
  * Build documentation via gtk-doc.
    We need a shared lib for gtk-doc, only build this
    when building Documentation.
    Closes: #88
  * debian: Add phoc-doc.
    This makes the documentation usable via devhelp.
  * gitlab-ci: Build documentation
  * docs: Document C file layout
  * gitlabci: Move coverage gathering to different step
    Fixes spurious build failures.
  * phoc.ini: Drop cursor config.
    Phoc does not care anymore and with one output it does not match
    anyway. So people with multiple outputs and touch need to run
    the latest phoc release. This avoids a warning on phoc startup.
  * phosh: Indicate connectivity state.
    We show no icon if we're connected but indicate the lack of a connection
    (or if we have a connection and can't reach the internet)
    Closes: #229
  * brightness: Connect async to g-s-d.
    Shell startup sometimes stalls for a longer period of time. Connect
    async to g-s-d to avoid at least one stall spotted with gdb.
    It also fixes a leaked DBus connection.
  * css cleanups
  * tests: Don't try to spawn atk bridge.
  * Add media-player widget.
    This interfaces with mpris Mediaplayer2 based players
    Closes: #94
  * settings: Add media player.
    Will only be shown when a player is present
  * lockscreen: Add media player widget
  * po: Update pot file.
    This introduces the new translatable strings for the music player.
  * layer-surface: Add the configured width and height to debug message.
    We have that anyway so make it more useful
  * layer-surface: Fix indentation
  * layer-surface: Add a section header
  * top-panel: Drop useless placeholder
  * top-panel: Remove extra vertical padding from power button
  * gitlab-ci: Skip po and doc when using PKG_ONLY
  * media-player: Wire up Can{Go{Forward,Previous},Play}
    This makes sure we don't enable ui elements the player can't handle
  * media-player: Add a playable property.
    The player might be stopped or not have a song list. Add a playable
    property so the container has a better idea if it's worth showing
    the player.
  * lockscreen: Use playable property of media player.
    We don't need a widget for a stopped or unusable player.
  * settings: Use playable property of media player.
    We don't need a widget for a stopped or unusable player.
    Closes: #315
  * feedbackinfo: Listen for feedback changes.
    When switching from silent to quiet (and back) the icon name does not
    change so we need to listen to profile name changes to update the
    text below the icon.

  [ Zander Brown ]
  * app-list-model: phantom launcher.
    At last a fix for the missing item problem

  [ Yuri Chornoivan ]
  * po: Update Ukrainian translation

  [ Alexander Mittermeier ]
  * Remove reference to rootston as the link was broken and the project is
    deprecated. https://github.com/swaywm/rootston

 -- Guido Günther <agx@sigxcpu.org>  Mon, 22 Jun 2020 16:27:59 +0200

phosh (0.3.0) amber-phone; urgency=medium

  [ Arnaud Ferraris ]
  * monitor: add "power-mode" property.
    In order to be able to notify other objects when the power state of a
    monitor changes, this commit adds a `power-mode` property to the monitor
    class.
  * shell: lock screen when builtin monitor is powered off
  * src: fix typos
  * phosh.service: don't hardcode user name.
    In order to allow the user to change the default username, use the UID
    instead of the username.
  * po: fix French translation.
    This patch fixes the long date format on the lockscreen.

  [ Mohammed Sadiq ]
  * polkit-auth-prompt: Use symbolic icon

  [ Guido Günther ]
  * settings: Drop PhoshSettingsPrivate.
    We'll never derive from that widget so drop the indirections.
  * settings: Ensure types during class_init.
    No need to do so during each instance creation.
  * panel: Drop unused height getter
  * shell: Move settings into top bar widget.
    This will allow us to drop the xdg popup code.
    (Closes: #155, #216)
  * shell: Drop xdg popup handling.
    We don't use it atm and if we need popups again we want to wrap
    them in proper objects.
  * panel: Set keyboard interactivity.
    This allows us for keyboard navigation in the settings menu
  * panel: Disallow focus on panel widgets.
    We only want to keyboard navigate settings
  * settings: Fix QuickSetting keyboard focus behaviour.
    We set each QuickSetting to not-focusable since we otherwise
    have to press TAB twice on each button: once for the flowbox
    focus and one for the button focus.
    To trigger the QuickSetting we wire up the FlowBox's `child-activated`
    signal.
  * panel: Close settings menu on ESC and when clicking/touching into empty
    area.
  * smoketest: Keep phoc around.
    Phoc changed to exit after the session exited but the smoke tests rely on
    a running compositor so keep it around to parse some parameters.
  * po: Last time sync from zanata.
    We're switching to GNOME infra.
  * README: Point to GNOMEs translation system
  * panel: Drop superfluous gettext define.
    We have gi18n.h for that.
  * monitor: Allow to set power save mode.
    This allows to set a monitors power save mode:
    OFF: monitor is turned off
    ON: monitor is turned on
    We don't use the constants from the wayland protocol
    to not leak the implementation.
  * Process enums for monitor.h too.
    They will be used in the following commit
  * shell: Add method to turn on power saving.
    This method can be used to turn power saving on or off.
    Currently it only turn on power saving for the display but
    this can be extended in the future.
  * monitor: Use PhoshMonitorPowerSaveMode enum.
    This makes sure we treat the wayland protocol enum as internal
    to the monitor implementation.
  * monitor-manager: Remove unused PowerSaveMode
  * panel: Add a GtkStack to switch top bar.
    The top bar has a different content when the settings menu is
    unfolded. Add a stack for that.
  * panel: Move shutdown to power popover
  * Move power off from settings menu to top bar
  * Move lock screen button to power popover
  * session: Add logout.
    Since we don't have a logout dialog yet we don't ask gnome-session
    to show one either.
  * panel: Wire up logout (Closes: #234)
  * settings: Drop button to launch settings.
    This frees up space for the notification area.
  * panel: Keep settings widget around.
    This avoids e.g. a jumpy volume slider when unfolding the
    settings menu. We manage it outside the stack for later gesture support.
  * wifimanager: Avoid excessive g_strdup() on signal strength changes.
    Suggested by Zander Brown.
  * wwaninfo: Avoid excessive g_strdup() on signal strength changes
  * status-icon: Don't leak icon name
    phosh_status_icon_get_icon_name() returns a copy so we need to
    free it and also can't compare by address.
  * tests: Test phosh_status_icon_set_icon_name()
  * gitlab-ci: Barf on files with translations but not in POTFILES.in
  * po: Add files not needing translations to POTFILES.skip
  * po: Sort POTFILES.in alphabetically
  * po: Add missing source file (Closes: #305)
  * po: Update pot file
  * gitlab-ci: Allow to skip build and test.
    Sometimes we just want a package (e.g. when only changing the packaging or
    when we're sure(tm) we didn't break anything). Hence allow to skip the
    build and test stages via `PKG_ONLY = 1`
  * data: Rename compositor config to phoc.ini.
  * data: phoc.ini: Don't fall back to rootston.
    This gives confusing error messages when e.g. phoc is not installed.
  * data: phoc.ini: Honor WLR_BACKENDS.
  * settings: Hide notification box when empty
  * notification-tray: Move style closer to designs.
    Use a gray background for the tray and no drop shadows for individual
    bubbles.
  * settings: Close settings after acting on the last notification
  * feedback-manager: Add helper to trigger async feedback.
    We don't pass the manager itself since it's not needed.
  * home: Emit feedback event on home bar press
  * overview: Trigger feedback on window close
  * panel: Trigger feedback when top bar is clicked.
    This can go away once we have gestures in place.
  * app-grid: Provide haptic feedback on app launch
  * shell: Avoid signal emission when shell is already locked.
    LockscreenManager got this right but the shell would emit a signal on
    every invcation although the state would not change.
  * MonitorManager: Use wlr-power-manager to set handle GNOMEs power_save_mode
    requests. This allows the screen to blank when g-s-d thinks so.
  * shell: powersave: Just lock the screen.
    With the monitor-manager's PowerSaveMode wired up it's enough to lock
    the screen to make g-s-d then tell us to blank the screen.
    This makes sure compositor, shell and g-s-d have the same idea about
    the screen state.

  [ Efstathios Iosifidis ]
  * Update Greek translation

  [ Rafael Fontenelle ]
  * phosh.doap: fix URL to source code repository
  * Update Brazilian Portuguese translation

  [ Danial Behzadi ]
  * Add Persian Translation
  * Add Persian to Linguas

  [ Zander Brown ]
  * utils: phosh_clear_handler, g_clear_handler for older GLib.
    This can go away once we dep on 2.62
  * notification-frame: fix a leak when header tapped
    get_item returns a reference which we weren't dropping causing some
    notifications to live forever
  * notification: store the urgency/transient/resident/category hints
    urgency/transient/resident modify the behaviour of the message tray
    category is included for completeness, we may never use it
    (sound hints are still ignored as we don't declare support for it)
  * notifications: a model for notifications from a single source
  * notifications: keep a list of notifications
  * tests: test the new notification models
  * notifications: maintain a message list
    expired notifications are no longer automatically dismissed
  * notifications: add list to settings drop-down
  * tools: explain notify-[blocks/server-standalone] use

  [ Yuri Chornoivan ]
  * Update Ukrainian translation

  [ Yi-Jyun Pan ]
  * i18n: zh_TW: update translation
    https://l10n.gnome.org/vertimus/phosh/master/po/zh_TW/

 -- Guido Günther <agx@sigxcpu.org>  Tue, 19 May 2020 08:08:34 +0200

phosh (0.2.2) amber-phone; urgency=medium

  [ Guido Günther ]
  * wwan: use interface prefix.  This shortens the function names
  * WWan: Connect to ModemManager async.
    The rest is all property access which is async.
    (Closes: #289)
  * wwan: Free GDBusObjects too. We only freed the list itself so far.
  * lockscreen: Drop unused variables
  * settings-menu: Drop expand from feedback button.
    This makes sure we don't use up extra space when other elements get
    hidden (like the music player)
  * shell: Avoid gtk_widget_show_all.
    This is needed in preparation for #155 anyway.
  * lockscreen: Fix unlock page type.
    It's a grid not a box
  * network-auth-prompt: Inform user about unknown auth types.
    This avoids another empty dialog similar to #292.

  [ Arnaud Ferraris ]
  * wifimanager: create network-auth-prompt only for WiFi connections.
    While the network-auth-prompt only supports only WiFi connections, it
    would still show (empty) if NM sends a secrets request for WWAN.
    This patch makes sure the prompt isn't created if the connection type
    isn't WiFi. (Closes: #292)

 -- Guido Günther <agx@sigxcpu.org>  Fri, 03 Apr 2020 11:26:01 +0200

phosh (0.2.1) amber-phone; urgency=medium

  [ Guido Günther ]
  * feedbackinfo: Use 'On' for the 'full' feedback theme.
    See: #276
  * wwaninfo: Don't overwrite sim missing status.
    This allows the sim-missing status to be displayed. (Closes: #281)
  * monitor: Wire up zwlr_output_power_management.
  * protocol: Generate protocol with private code.
    That's sufficient since we don't want to export anything
  * po: Update translations from zanata
    Thanks to all the translators!
  * Settings: wire up feedback setting long press.
    This opens the notifications panel now that we can configure
    feedback there.
  * Shell: Don't access variable before type check
  * Feedbackinfo: Toggle to silent instead of quiet.
    Also turn of vibra with the quick setting. Vibra can be turned on via
    g-c-c.
  * gitlab-ci: Run xvfb-run with no-reset.
    This avoids spurious test failures.

  [ Rasmus Thomsen ]
  * gitlab-ci: pull in feedbackd on Alpine too
    fixes #278

  [ Julian Sparber ]
  * Wifimangager: set icon-name always via the same function.

  [ Zander Brown ]
  * protocols: generate with public-code not code
    public-code does the same thing but without logging warnings
  * app-list: fix lookup cache.
    We never invalidated the cache leaving us in an invalid state after
    install/remove
    This potentially explains the missing icons that turn up after reboot
    (probably) fix https://source.puri.sm/Librem5/phosh/issues/213
  * apps: use a common placeholder icon (Closes: #197)

  [ Darren R ]
  * README: Explain how to skip gnome-session setup.
    This avoids spawning unintended services.

  [ Sebastian Krzyszkowiak ]
  * panel: Clean up unused widget references

 -- Guido Günther <agx@sigxcpu.org>  Thu, 19 Mar 2020 19:07:18 +0100

phosh (0.2.0) amber-phone; urgency=medium

  [ Guido Günther ]
  * Upload to amber-phone (since amber has no feedbackd yet)
  * phosh: Register the session late so calls sees the right status
    Closes: https://source.puri.sm/Librem5/calls/issues/126
  * Proximity sensor support
    Closes: #120
  * Add Feedback quick settings to toggle current feedback status.
  * wifimanager: consistently update icon on enable/disable/kill switch
  * Fix build with meson 0.53
  * Fix build with tests disabled
  * build: Allow to build libfeedback as subproject.
  * phosh: Use drm backend by default to help wlroots 0.10.0 and hence phoc
    0.1.6.
  * Update translations including 7 completely new ones. Thanks everyone!

  [ Sebastian Krzyszkowiak ]
  * ui: Adjust the icon margin of backlight slider in settings menu.

  [ Julian Sparber ]
  * Improve lockscreen unlock button styling
  * Introduce QuickSetting base class for quicksettings
  * Introduce StatusIcon base class for top bar icons and
    quicksettings
  * Groundwork for WWan and Wifi quicksettings
  * Add BatteryInfo quick setting and show percentage
    Closes: #268
  * Make rotation a quick setting

  [ Zander Brown ]
  * Groundwork for future notification improvements:
    - split out notification content from banner
    - split the frame from the banner.
    - track notifications not widgets as preparation
    - introduce NotificationFrame
  * editorconfig: strip whitespace.

 -- Guido Günther <agx@sigxcpu.org>  Wed, 26 Feb 2020 09:34:47 +0100

phosh (0.1.8) amber; urgency=medium

  [ Julian Sparber ]
  * Lockscreen: Replace submit btn with unlock btn
  * Fader: fade completely to black on shutdown.
    Closes: #257
  * Fix brightness slider being jumpy while sliding.
    Closes: #258
  * StatusIcon: Introduce base class for status icons
    and use for top panel icons.

  [ Guido Günther ]
  * phosh-system-prompt: Toggle ok button sensitivity.
    Pressing <return> so far caused to send e.g. an empty pin to a smart card
    and we'd rather not run out of retries so require a non empty password.
  * build: Bump version to 0.1.8
  * build: Use libhandy 0.x branch if used as a subproject.
    Closes: #264

  [ Zander Brown ]
  * build: bump glib dep.
    We where using stuff from 2.54 already and buster ships 2.58
  * notifications: separate the data and widget.
    Move notification information into a separate class from the banner,
    moving forward this will ease lockscreen/notification drawer
    implementatinon

 -- Guido Günther <agx@sigxcpu.org>  Sat, 08 Feb 2020 13:44:20 +0100

phosh (0.1.7) amber; urgency=medium

  [ Darren R ]
  * Update meson.build to show version 0.1.6

  [ Guido Günther ]
  * phosh.in: Use builtin session handling.
    Until we can rely on a newer gnome-session use the builtin session
    handling everywhere for now instead of systemd. (Closes: #181)
  * gitlab-ci: Build an arm64 deb
  * wifi-manager: Rework connection handling.
    So far we gave up early when the currently active connection did not
    have any devices. It seems this can happen early up in the connection
    process of *new* connections. Hence always redo the device check on
    connection state changes.
  * wifimanager: Consolidate device cleanup.
  * wifimanager: Clean up device state when (de)activating a connection.
    Don't use the device and access point information before we're
    actually associated. Otherwise we show strength information from
    outdated access points. (Closes: #202)
  * lockscreen-manager: Undo rotation when locking the screen.
    This makes sure we don't leave the user with a screen that can't be
    unlocked. (Closes: #73)
  * auth: Drop pin length limitation.  (Closes: #233, #234)
  * network-auth-prompt: Allow to toggle password visibility.
    This makes entering wifi passwords a bit simpler. Inspired by
    GTK4's GtkPasswordEntry.

  [ Julian Sparber ]
  * Lockscreen: add submit button, allows arbitrary pin lengths.
    This also adds the emergency button but for now it is hidden, because
    emergency calls don't work yet.

 -- Guido Günther <agx@sigxcpu.org>  Thu, 09 Jan 2020 15:34:36 +0100

phosh (0.1.6) amber; urgency=medium

  [ Julian Sparber ]
  * Lockscreen: replace HdyDialer with HdyKeypad.
    The new Keypad uses a GtkEntry to store the entered pin/password.
  * Lockscreen: use GcrSecureEntryBuffer for the pin entry.
  * BatteryInfo: drop private data for gobject.
    Since the BatteryInfo is a final it can't be subclassed, therefore it
    doesn't need private data.

  [ Guido Günther ]
  * background: Plug leak
  * home: Plug leak
  * topevel: Avoid NULL check
  * toplevel: Don't leak app_id and title
  * toplevel: Guard handle from being destroyed multiple times
  * wwaninfo: Separate access tec and signal srength (Closes: #118)
  * top-panel: Adjust label margins.
    Use the same margins as for other text in the top panel.
  * top-panel: Use only right margins.

  [ Darren R ]
  * lockscreen: Use show_symbols False

 -- Guido Günther <agx@sigxcpu.org>  Fri, 27 Dec 2019 23:05:07 +0100

phosh (0.1.5) amber; urgency=medium

  [ Guido Günther ]
  * rootston.ini: Drop keyboard config section.
    Not parsed anymore by phoc, uses GSettings now
  * Turn on autorestart.
    Mitigates #212
  * gitlab-ci: Switch to shared gitlab-ci jobs.
    This gives us more tests with less code.
  * debian: Add trivial autopkgtest.
    This makes sure we at least install correctly
  * wifimanager: Don't leak icon name
  * d/control: Depend on the used gsettings schema
  * gitlab-ci: Test pureos against staging.
  * build: Make libhandy dep explicit
  * wwan-mm: Give up if we can't get proxy.
    Just printing a warning is no enough.
  * wwaninfo: Only show wwan icon if a modem is present
    (Closes: #64)

  [ Julian Sparber ]
  * Bump libhandy to 0.0.12

  [ Alexander Mikhaylenko ]
  * lockscreen: Allow mouse dragging for lockscreen.
    See https://source.puri.sm/Librem5/libhandy/merge_requests/344

 -- Guido Günther <agx@sigxcpu.org>  Fri, 13 Dec 2019 17:43:41 +0100

phosh (0.1.4) amber; urgency=medium

  * activity: Add title setter
  * activity: Set app_name on title changes.
    So far we only did this in the constructor.
  * toplevel: Emit signal when properties change.
    So far we emitted signals when a new toplevel shows up. Add
    a signal that is emitted when a already 'configured' toplevel
    gets configured event. This will allow to e.g. check for
    title changes.
  * overview: Adjust title in overview when the toplevel changes title.
    We take a detour via the overview since the link between
    activity and topleve happens there. We can avoid this
    once the activity properly owns the toplevel.
  * tests: Avoid duplicate config target
    otherwise we fail with meson 0.49.
  * gitlab-ci: Build pureos amber package as well
  * panel: Move decision if we need a lang label into one place.
    This makes sure we do the same on input source changes and keyboard
    connect/disconnect.
  * debian/gbp.conf: Sign tags by default

 -- Guido Günther <agx@sigxcpu.org>  Fri, 22 Nov 2019 17:16:45 +0100

phosh (0.1.3) amber; urgency=medium

  [ Guido Günther ]
  * main: Simplify signal handling
  * main: Handle SIGINT as well.
  * main: Don't initially lock screen when we were started by gdm
  * main: Add -L to force a locked shell.
  * brightness: Fix brightness setting.
  * top-panel: Display current keyboard layout if a keyboard is connected.
    This makes tings less conusing when using/testing different layouts
    The layout is only displayed when a keyboard is connected to the
    seat.
  * session: Unset DESKTOP_AUTOSTART_ID.
    This makes sure we don't leak it to child processes.

  [ Sebastian Krzyszkowiak ]
  * activity: Handle apps with "gnome-" prefix in their app ID.
    Otherwise we end up with "org.gnome.Gnome-software" kind of names.
  * util: Move app_id fix up code to separate function
  * toplevel: Rename phosh_toplevel_raise to _activate for consistency
  * app-grid-button: Activate existing window instead of trying to relaunch.
    Fixes #102

  [ Zander Brown ]
  * build: only rebuild generated sources when linking tests/tools.
    This avoids extra (wasted) build steps for tools/tests/etc
  * app-button: don't emit app-launched when an error is set.
    Previously we emitted even when GLib reports an error
  * app-button: store favourites in a model, add action menu.
  * tests: improve testing of app-button.
  * tests: add tests for the favourites model.
  * favourites: use en_US spelling.

 -- Guido Günther <agx@sigxcpu.org>  Fri, 15 Nov 2019 01:54:40 +0100

phosh (0.1.2) amber; urgency=medium

  [ Bart Ribbers ]
  * gitlab-ci: don't build test coverage for Alpine Linux

  [ Guido Günther ]
  * Add wayland session file.
    This allows to run phosh directly from e.g. gdm which makes testing
    on GNOME way easier
  * Recommend phoc. We don't make it a hard dependency since we can run with
    other compositors as well.
  * Drop all rootston fallbacks. rootston is unmaintained and has only very
    limited functionality while phoc had a release.
  * debian: Bump compat to 12.
    This makes some things simpler like dh_nissing and it moves
    phosh to /u/libexec where it should have always been.
  * debian: Add install file for phosh.
    This makes us pick up the right files when we add more binary packages
  * build: move glib/gio dependency to toplevel meson file.
    This and assigining it to variables makes it simpler for
    other meson files to use.
  * Add keyboard stub.
    This helps to fulfil gnome-session dependencies on desktops where we
    don't have squeekboard (yet) and where it should not unfold
  * layer-surface: Emit signals on width/height changes.
    We missed signals on phosh_layer_surface_set_size().
  * layer-surface: Don't make width/height construct only.
  * po: Update translatable files
  * po: Update translations from zanata

  [ Dorota Czaplejewicz ]
  * layersurface: remove phosh-wayland include.
    This makes the file copy-portable again.
  * layer-surface: Distinguish requested and configured width/height
    {width,height} represent the user request while
    configured_{width,height} represent what the compositor sent us.
    This allows clients to see how their size request matches the
    actual surface size.

  [ Mohammed Sadiq ]
  * Add shell-network-agent.
  * Add network agent. Network agent is responsible for requesting credentials
    when connecting to networks that requires credentials

 -- Guido Günther <agx@sigxcpu.org>  Fri, 25 Oct 2019 21:07:24 +0200

phosh (0.1.1) amber-phone; urgency=medium

  [ Guido Günther ]
  * lockscreen: Use proper ellipsis.
    Use '…' instead of '...'
  * session: Drop org.gnome.SettingsDaemon.Clipboard.
    It was unused anyway. (Closes: #195)
  * notify-manager: ignore errors closing inexistent notifications.
    This trips up qt 5.11 otherwise
  * debian: Don't restart session on package upgrades.
    Otherwise a logged in user will get logged out. (Closes: #193)
  * gitlab-ci: Make current image explicit
  * gitlab-ci: Build and unit test for Debian Bullseye as well.
    We keep the smoketests at buster for the moment
  * debian: Add gbp.conf.
    This makes `gbp tag` do the right thing.
  * Update translations from zanata

  [ Hysterical Raisins ]
  * AppGrid: Live update search when using an input method.

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

 -- Guido Günther <agx@sigxcpu.org>  Fri, 11 Oct 2019 11:54:52 +0200

phosh (0.1.0) amber-phone; urgency=medium

  [ Zander Brown ]
  * app-grid: align top
  * overview: focus styling, follow focus
  * app-grid: enter activates first app search result.
    Fix https://source.puri.sm/Librem5/phosh/issues/171
  * app-grid: hint app that will launch on enter
  * notifications: support images, bring styles close to design
  * notifications: add actions.
    This means firefox doesn't complain anymore and actions are clickable
  * notifications: handle display scaling and rotation
  * notifications: slide down from top
  * tools: test notification sender
  * notifications: emit notify::app-info
  * apps: display name not display name.
    This makes sure apps have the same name as in shell

  [ Alexander Mikhaylenko ]
  * overview: Remove close on click.
    It's triggered where swiping PhoshPaginator. I'm not sure this is wanted
    from design standpoint anyway, so remove it for now.
  * overview: Use paginator for switching apps

  [ Guido Günther ]
  * polkit-auth-agent: Allow to cancel dialog via escape key.
    I've seen gnome-shell users hitting that a lot.
  * system-prompt: Allow to cancel dialog via escape key.
    I've seen gnome-shell users hitting that a lot.
  * notify-manager: Handle org.gnome.desktop.notifications show-banners.
    This allows to globally enable / disable message bunners aka
    'notification popups' as gnome-control-center calls them. (Closes: #167)
  * build: sort source alphabetically
  * session: Reindent.
    Reindent according to coding style
  * Add fader that fades from transparent to almost black.
    We might want to make this more flexible later so we can also use
    it for the fade in animation on startup.
  * session: Use fader on shutdown.
    This gives immediate visual feedback.
  * main: Fade out on sigterm
  * po: Update translatable files
  * session: Only show fader on EndSession.
    QueryEndSession only asks for a shutdown, we don't want to fade
    in that case.
  * Kill fader after 15 seconds
    if we can't shut down promptly kill the fader instead of leaving
    the shell in an unusable state.
  * auth: Unconditionally set pamh to NULL.
    Don't do it only in the successful case since the handle is
    not useful afterwards and later calls might otherwise reuse the handle.
    Also don't use the handle in the error path after pam_end.
  * rootston.ini: Remove 'binding' section.
    This is now handled via gsettings and triggers a warning
    on phoc startup.
  * po: Update translatable files
  * po: Update translations from zanata

  [ Julian Sparber ]
  * Lockscreen: Give visual feedback on wrong password.
    This makes the dots shake when the user enters a wrong password
  * Lockscreen: add hack to remove # and * form the keypad
  * Lockscreen: Style keypad buttons.
    Fixes: phoc#18
  * AppGrid: make search case insensitive.
    Fixes: #186
  * AppGrid: Make line below favorites darker and thinner
    fixes #182
  * AppGrid: use a revealer to hide the favorites when search is started
    fixes: #185
  * AppGrid: increase spacing around line below favorites

  [ Sebastian Krzyszkowiak ]
  * PhoshBackgroundManager: Divide the background size by scale.
    Without this the background surface buffer is needlessly oversized,
    putting unnecessary load on the GPU.
  * toplevel: Add "activated" property and its getter
  * overview: Scroll to currently focused activity
  * style: Remove unnecessary blending.
    GTK uses software rendering and pixman isn't optimized on aarch64.
    This makes blending huge surfaces pretty expensive - and there's
    no reason to do that if we're blending black on black anyway.
    This makes fullscreen scrolling in app drawer way smoother.

  [ Hysterical Raisins ]
  * AppGrid: hide favorites on search
    - conserve vertical screen space (which will be at a premium when both osk
      and overview are visible at the same time)
    - blend in favorites when searching
    Fixes phosh#177
  * NotifyManager: plug a leak in variant iteration
  * AppGrid: Don't activate first item unless search has focus.
    Fixes #177 (for real this time)
  * AppGrid: Correct return types for focus events
  * AppGrid: plug casefold leaks.
    Fixes #190

  [ Tobias Bernard ]
  * Style: prettier search bar
    - Minor styling changes (rounded corners, more padding)
    - Add placeholder text
  * Style: adjust margins around search bar and favorites.
    Fixes an issue with icons being cut-off only on the sides
    when scrolling.
  * Minor: fix ellipsis and string in search placeholder

 -- Guido Günther <agx@sigxcpu.org>  Mon, 30 Sep 2019 10:54:01 +0200

phosh (0.0.4) purple; urgency=medium

  [ Guido Günther ]
  * PhoshLayerShell: Don't realize layer shell's right away.
    This allows us to create them early and keep them around. It also
    makes them behave more like regular Gtk widgets. (Closes: #91)
  * system-prompt: Use a template instead of builder.
    This makes this prompt consistent with all the other layer surfaces we
    have.
  * debian: We can act as polkit auth agent
  * debian: Update description a bit
  * po: Update LINGUAS
  * system-prompt: Wrap on word boundary.
    Otherwise we overflow on small screen sizes
  * system-prompt: Add a border.
    This makes sure we don't have text and buttons pressed to the left and
    right screen edges.
  * lockscreen: Add date (Closes: #101)
  * Update pot file with new strings.
    The date format needs a string to be printed correctly in the
    different locales.
  * lockscreen: Move date, time and icons into a common box.
    This allows spacing.
  * po: Update translations from zanata
  * favorites: Drop labels.
    This makes the "overview issue" go away with up to 8 favorites.
    This improves the status quo until we fix #89 and merged !187.
  * favorites: Trim down app list.
    These are the ones that the focus is on atm. (Closes: #100)
  * css: Drop HdyArrow css.
    We're currently not using this widget
  * css: Make polkit auth agent's background black too
  * SystemPrompt: Set grid alignment in the ui file
  * system-prompt: Right align labels.
    Following https://developer.gnome.org/hig/stable/visual-layout.html.en
  * system-prompt: Move checkbox below text inputs
  * system-prompt: Adjust spacing.
    Following https://developer.gnome.org/hig/stable/visual-layout.html.en
  * polkit-auth-prompt: Right align labels.
    Following https://developer.gnome.org/hig/stable/visual-layout.html.en
  * polkit-auth-prompt: Adjust spacing.
    Following https://developer.gnome.org/hig/stable/visual-layout.html.en
  * polkit-auth-prompt: Use bold font for user name
  * polkit-auth-prompt: Remove empty row
  * PolkitAuthAgent: Remove duplicate gtk_widget_show ()
  * PolkitAuthPrompt: Translate most common request
  * po: Update translatable files
  * po: Update pot file
  * shell: Activate background again
    https://github.com/swaywm/wlroots/issues/897 is true independent if
    there's background surface or not so we're not making matters worse
    by enabling it. (Closes: #76)
  * PhoshPanel: Make signal handlers consistent
  * PhoshLockscreen: include locale.h.
    Fixes build with -O0
  * PoshBackground: Drop things now handled by PhoshLayerSurface
  * PhoshBackground: Use g_autoptr instead of explicit unref
  * PhoshBackground: Get width and height from layer surface
  * PhoshBackground: Drop pointless defaults from init
  * PhoshBackground: Validate signal handler signatures
    while at that move 'self' first like in the rest of the codebase.
  * PhoshBackground: unref settings
  * lockscreen: Set wifi icon visible by default (Closes: #111)
  * PhoshBackground: Drop priv.
    Less code and consistent with other new code.
  * PhoshBackground: Listen to configured signal.
    This is simpler then g_signal_override_class_handler()
  * lockscreen: Determine wifi status on idle.
    This makes sure we determine the wifi status after the widget set up.
    Otherwise the widget might sometimes stay invisible.
  * PhoshShell: Make background surface span the whole output.
    The background will make sure to not draw over/under panels. (Closes: #6)
  * PhoshBackground: Implement zoom style.
    Listen for picture-option and handle scaled (as already implemented)
    and zoom. If the style is unknown default to zoom like gnome-shell.
    Code taken from GnomeBG.
  * PhoshBackgroundManager: Add manager to handle multiple outputs.
    This handles multiple output making sure we update the backgrounds
    on output changes. (Closes: #113)
  * PhoshBackground: Use g_object_connect
  * PhoshBackground: Use defines for setting keys.
    We need them in several places.
  * PhoshBackground: Don't hardode grey as color.
    This allows to set the background color from gsettings.
  * PhoshFavorites: Scale icon images to 64px
  * favorites: Don't scale by output scale.
    Otherwise icons are way to large.
  * favorites: Use gtk_image_set_pixel_size.
    This leaves the scaling to gtk.
  * PhoshWWanInfo: Set pixel_size when setting widget size
  * PhoshWWanInfo: Don't round trip through pixbuf when using theme icons.
    There's no need to roundtrip through a pixbuf when we're using theme
    icons. This removes blur from the no-sim and sim locked case.
    See: #118
  * favorites: Drop custom drawing
  * service: Restart on compositor crashes.
    So far we wanted to keep the state around for debuggig but it's stable
    enough now that we can restart.
  * layersurface: Use phosh_wayland_get_default() everywhere.
    This makes it consistent with _mapped()
  * Add editorconfig.
    Prompted by tabs in ui files.
  * PolkitAuthPrompt: Make background app paintable.
    This makes it consistent with the gcr system modal dialogs.
  * Use the same style class for gcr and polkit prompts.
    This makes sure they stay visually consistent.
  * PhoshSystemPrompt: Swap ok and cancel.
    Conform to GNOME HIG.
  * PolkitAuthPrompt: Swap ok and cancel.
    Conform to GNOME HIG.
  * app: Add close button.
    Emit a 'app-closed' signal when that button is clicked.
  * Update phosh private protocol to v3
  * PhoshFavorites: Close application on 'app-close' signal (Closes: #67)
  * tests: Use phoc instead of rootston.
    This is our primary compositor and while the usage of the phosh-private
    protocol is optional if we bind to it we require at least version 3
    which is not supported by our rootston fork.
  * PhoshLayerSurface: Destroy layer surface on unmap.
    This and moving some of the initialization from `realized` to `mapped`
    allows us to properly `gtk_widget_{show,hide}()` layer surface widgets.
    This is brought over from squeekboard
    c3a54595ea72638fbc7b65ffc3c26966de772e15
  * PhoshHome: Drop priv.
    This makes the code smaller and easier to read.
  * build: Fix indentation.
    We want two spaces.
  * Use glib-mkenums.
    This will allow us to use enums as types.
  * PhoshLayerSurface: Allow to set size of the layer surface.
    This can be useful to fold/unfold surfaces.
  * PhoshHome: Clarify PHOSH_HOME_HEIGHT.
    Rename to PHOSH_HOME_BUTTON_HEIGHT since to not confuse the home button
    with the home screen (which takes the full screen except for the panel).
  * PhoshHome: Track folded/unfolded state.
    We fold/unfold the surface on home button clicks.
    We use an enum since we might end up with half folded states
    or a different state when using app switch via swipe.
    This surface will later on have the app drawer. (Closes: #89)
  * PhoshHome: Show favorites on home screen.
    Instead of making PhoshFavorites a separate layer surface popup show the
    widget on the home screen by deriving from GtkBox instead of GtkWindow.
  * PhoshActivity: Rename activity-closed signal.
    The name is misleading since the signal is emitted when the close
    button is clicked not when the actual activity is being closed.
    Rename to 'close-clicked' to make that obvious.
  * favorites: Replace assert by g_return_if_fail ()
  * favorites: Use g_return_if_fail in type check.
    This makes sure we don't silently ignore the error.
  * PhoshTopLevelManager: Move function assignments to top.
    This makes it consistent with other classes.
  * PhoshTopLevelManager: Move public methods to the bottom.
    This makes it consistent with other classes.
  * PhoshToplevelManager: Add num-toplevels property.
    This allows us to keep track about opened toplevels.
  * PhoshShell: Unfold home screen when no application is running.
    When we don't have any wayland toplevels show the overview. (Closes: #99)
  * PhoshActivity: Remove unused defaults
  * PhoshAcivities: Drop superfluous braces
  * PhoshActivities: Match property defaults to what's set in `_init()`
  * PhoshActivities: Mark properties as G_PARAM_EXPLICIT_NOTIFY.
    Because they are.
  * PhoshAcitivity: Avoid superfluous object emission and resizes.
    No need to do anything if the property does not change.
  * PhoshLayerSurface: Be verbose when acking configure.
    This is an important event when surface properties change.
  * Add gtk4's list model.
    This is from commit ddc74a08bea170c73effe6eddca45a077bf130a7
  * PhoshHome; Make Image a child of the button.
    This allows for more fine grained styling.
  * PhoshHome: Use CSS animations to change home button arrow direction
  * PhoshHome: Set initial arrow state to 'up'
    Initially the surface is folded. That doesn't matter when starting up
    but it matters when phosh restarts with windows already open.
  * PhoshFavorites: Rename to create_favorite.
    We create a widget but don't add it to the flowbox yet.
  * PhoshFavorites: Use g_auto()
  * PhoshFavorites: Show created favorite.
    This makes sure changing favorites refreshes without restarting phosh.
    This wasn't a problem when favorites was a pop up since the widget
    got recreated when opened.
    Brokey-by: bc2198f6bbe8d3132d711cfa30719578eada5473
  * PhoshFavorites: Avoid gtk_widget_show_all()
    All widgets are being gtk_widget_show()n correctly now.
  * home: Drop superfluous gtk_widget_{show,hide}
  * Settings: Add type checks to callbacks
    while debugging it became obvious that we don't type check
    here which makes life cycle issue fixing harder then necessary.
  * Settings: Swap signal emission and lock trigger.
    The lock trigger brings up new surfaces which discards the popup so the
    object might not exist anymore once we want to emit the signal.
    Fixes
    (phosh:5485): GLib-GObject-WARNING **: 17:11:59.262: instance with invalid (NULL) class pointer
    (phosh:5485): GLib-GObject-CRITICAL **: 17:11:59.262: g_signal_emit_valist: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
    Broken-by: cb7b20ebf94177199d6a7347d5fe48b144bf81f0
  * Settings: rotation_changed_cb: Move self in front.
    This makes it match the other call backs.
  * LockscreenManager: Only lock session when we go idle.
    So far we locked on any status change which didn't matter since we
    only get the idle information. Now that we get org.gnome.ScreenSaver
    we get other states reported as well.
  * LockScreen: Emit signal when the output should be woken up.
    This is useful to indicate that  the output used by the lock screen
    should be woken up e.g.  on keypress.
  * LockScreenManager: Remember activation time.
    Save the point in time the lock screen gets activated, this will
    be used by the screen saver manager.
  * LockscreenManager: Emit signal when all screens should be woken up.
    This is mostly meant for org.gnome.ScreenSaver
  * Add PhoshScreenSaverManager.
    This adds the skeletion for the org.gnome.ScreenSaver
    DBus API that allows applications get the lock state
    and ask for screen lock.
  * ScreensaverManager: Hook up to LockscreenManager.
    Implement org.gnome.ScreenSaver by invoking the appropriate methods
    on our Lockscreenmanager and listen to it's relevant signals.
    We keep this in a separate object to keep the lock screen code
    separate from the DBus interaction.
    We inject the lock screen manager instead of fetching the singleton
    to make the code more self contained.
  * helpers: Add script to check screen saver state
  * Lockshield: Use type as parent, not class
  * LockShield: Drop unneeded custom rendering.
    We don't need a drawing area and no custom rendering when we just
    want to render a black background.
  * tests: Test AppGridButton
  * AppGridButton: Remove superfluous initializers
  * AppGridButton: Rename pspec to props.
    Just cosmetics to make it consistent with the other classes.
  * AppGridButton: Whitespace cleanups
  * AppGridButton: Use getters and setters for GAppInfo.
    This makes the property handler sway smaller
  * PhoshAppInfo: Add tests for new methods and constructor
  * gitlab-ci: Add coverage information
  * README: coverage badge.
    This is a bit misleading since it only covers unit test coverage and
    even that doesn't run all the tests.
  * tests: Add app-list-model tests
  * tools/app-scroll: Fix activity scaling.
    Otherwise activities are just as large as the close button.
  * tools/app-scroll: Drop max-* properties.
    They were dropped from app-grid-button as well.
    Spotted-by: Zander Brown
  * Overview: Rename overview evbox and flowbox to apps.
    This contains the application (favorites and later on installed
    applications).
  * lockscreen: Slide lockscreen down on timeout.
    This makes the lock screen slide down instead of coming back up after
    timeout. (Closes: #105)
  * layer-surface: Allow to set keyboard interactivity
  * home: Move fold/unfold logic into a single if/else
  * home: Allow keyboard input when unfolded.
    This allows application search to receive keyboard input and will
    e.g. allow keyboard based window switching later on.
  * defaults: Drop terminal from favorites.
    With the app drawer it's easily accessible and we're back
    to one line of favorites which looks way better.
  * Update translations from zanata
  * build: bump version.
    We released 0.0.3 a while ago
  * Add PhoshNotifyManager.
    This will handle the org.freedestkop.Notifications DBus protocol
  * phosh-notification: Add notification widget.
    This is a layer surface that handles displaying a single notification.
    When adding notifications to the lock screen, etc. we will likel make
    this a data only type that is consumed by the various implementations
    but that depends on how the designs for this will look like.
  * notify-manager: Create basic notifications.
    Activities, animating slide in/out, showing notification on the lock
    screen, do not disturb mode and silencing individual application are
    left as follow-ups.
  * debian: Provide notification-daemon.
    We provide the DBus daemon and basic functionality
  * Bump libhandy requirement.
    The arrows need 0.0.11
  * notifications: Don't leak app_icon
  * Release phosh 0.0.4

  [ Tobias Bernard ]
  * Top panel: move clock down a tiny bit
  * Lockscreen: improve spacing on clock, date, icons
  * Minor: lockscreen.ui indentation
  * Lockscreen: Stop arrow animation after 15 cycles.
    This should mitigate #108 somewhat.
  * Settings: make circular button styling specific to settings
  * Favorites: remove button styling and circular shape, add icon shadow.
    This also makes 4 icons fit into onto the screen at 360px.
  * Favorites: highlight on click, instead of hover
  * App switcher: No margin and border radius on the title overlay
  * Fake app placeholder: round top corners
  * App Switcher: styling for temporary close button

  [ Dorota Czaplejewicz ]
  * session: Use the default OSK instead of Virtboard

  [ Sebastian Krzyszkowiak ]
  * PolkitAuthAgent: fix build with Polkit >= 0.114.
    Polkit 0.114 introduced bunch of predefined g_autoptr cleanups, which
    leads to compilation failure due to duplicate cleanup definition for
    PolkitSubject. Note that even the latest polkit doesn't have a cleanup
    for PolkitAgentListener defined, so it's left there unguarded.
  * PhoshBackground: Draw the wallpaper at full resolution on HiDPI screens
  * background: Unescape the URI of the background file.
    Fixes #130
  * Use wlr-foreign-toplevel-management instead of private protocol.
    Introduces PhoshToplevelManager and PhoshToplevel classes for
    managing and representing toplevel surfaces.
    Thanks to that:
     - it doesn't match the window to close via its title or app id,
       always trying to close the correct window instead
     - it removes the window from the overview only after it really got
       closed - which is especially noticeable in case of windows that
       refuse to be closed
     - it updates the list automatically as the changes happen, without
       having to close and open the overview back again
    Closes #37
  * PhoshApp: Rename to PhoshActivity.
    Single application can be represented by multiple PhoshApps. It's also
    not a window, as in the future, multiple windows may be represented
    as a single PhoshApp as well - therefore, PhoshActivity seems to be
    the most fitting name to this entity.
  * PhoshHome: Hide the keyboard button when unfolded
  * PhoshHome: Don't set the width of the home bar.
    When setting 0 as width value, the compositor will set the width
    automatically according to anchors.
    This fixes an issue of folded home bar size not being updated after screen
    rotation until it's unfolded.
  * PhoshLayerSurface: Allow to set anchor margins of the surface
  * PhoshLayerSurface: Allow to change the exclusive zone value
  * PhoshHome: (Un)folding animation.
    Uses layer-surface margins to animate the unfolding without resizing
    the surface.
  * PhoshHome: Adjust arrow transition duration to match unfolding time
  * PhoshHome: Show correct arrow orientation with GTK animations disabled
  * shell: Fold home screen when a new toplevel appears.
    Closes #154
  * home: Fold on Escape key press.
    This doesn't matter much for phone, but makes the interaction much
    more pleasant on desktop.
  * overview: Hide the list of activities when there are none.
    This allows the app launcher to take all available space.
  * phosh-wayland: Don't require wlr-foreign-toplevel-manager extension.
    It's not very widely implemented yet and it's considered a privileged
    protocol that's unlikely to be exposed by default anyway.
    Closes #144
  * layersurface: Add phosh_layer_surface_wl_surface_commit function
  * home: Remove gtk_widget_queue_draw from (un)folding animation.
    This was causing a massive performance drop on the devkit, while a surface
    commit is all that's really needed there.
  * home: Reset the app grid state when unfolding.
    This includes clearing the search field and scrolling the list to the top.
  * shell: Fold the home screen when unfolding settings screen
  * shell: Hide the keyboard when unfolding the home screen
  * app-grid: Use g_auto cleanup macros
  * app-grid: Store the list of favorites.
    This will allow to skip allocate/free cycle per every entry when filtering.
  * app-grid: Don't show favorites on the app list.
    Fixes #164

  [ Zander Brown ]
  * build: use the kwarg for PIE
  * switcher: Rework app switcher.
    This moves the window title and application icons to the bottom of the
    running application widget and uses a fake window where the actual app
    content will go later on.
  * build: handy as a subproject.
    Some of us don't want to install handy master globally
  * general: ignore VSCode settings/metadata
  * build: split some components into static lib
    makes tests/demos simpler
  * tools: app-scroll demo.
    Simple demo of PhoshApp
  * tests: use the full name not just the first letter.
    Meson being too clever for it's own good
  * favorites: Switch to kgx (Closes: #133)
  * gtk-list-model: Adjust to build out of gtk4's tree
  * Add PhoshAppGridButton.
    This will be used in the app drawer for launchers
  * Favorites: Use PhoshAppGridButton.
    This will be used in the app drawer for all launchers but for now it's
    just favourites
  * launcher: force wrapping of long titles
  * app-grid-button: handle NULL app-info
  * launcher: import app-list-model.
    Taken from my maynard fork
  * overview: rename PhoshFavorites now it's function has changed.
    The overview is the widget that contains the
     - activities (running applications)
     - the favorites
     - the app drawer
  * app-grid: AppGrid widget to launch installed applications
  * overview: Add app-grid
  * tools: Add wrapper to run standalone tools.
    Similar to phosh's run to set e.g. the schema dir
  * tools: Add tool to show app-grid outside the shell.
    Provider wrapper to setup env to run tools
  * overview: Move favorites launchers into app-grid.
    They inetract closely, e.g. on search so it makes sense to have them in
    the same widget.
    TODO: the css name change from phosh-favorites to phosh-overview should
    go in a separate commit (Closes: #38)

  [ Adrien Plazas ]
  * system-prompt: Style overhaul.
    This makes system prompts look more like part of the shell than part of
    apps.

  [ Sybolt de Boer ]
  * Use g_value_set_int() to set an int

  [ Heather Ellsworth ]
  * Add Contacts to list of favorites

  [ Alexander Mikhaylenko ]
  * favorites: Resize apps before size allocation.
    Instead of connecting to 'size-allocate' signal on evbox_running_apps,
    override size_allocate vfunc on the window itself, then do the resizing
    before chaining up.
    This will allow to avoid glitches with paginator.
  * activity: Simplify sizing.
    Follow window aspect ratio without minimum width and height. Switch to
    width-for-height geometry management.
    When favorites widget is allocated, set window width and height from
    favorites's own allocation before chaining up, this avoids any glitches
    on the first allocation.
    Remove now unused max-width and max-height properties.
  * Introduce PhoshArrow.
    An animated arrow. This will be used for home/overview transition.
  * home: Use PhoshArrow for animation
  * home: Use libhandy animation functions.
    See https://source.puri.sm/Librem5/libhandy/merge_requests/308
  * meson: Bump libhandy version to 0.0.11
  * lockscreen: Fix indentation in xml
  * lockscreen: Hide dialer action buttons in xml.
    There's no point in doing this only on swipe up.
  * lockscreen: Follow finger when swiping.
    Pack the two pages into a PhoshPaginator. This also allows to swipe back
    from keypad to the info screen.
    Remove the GtkEventBox around the info page, as the paginator is already
    a subclass of GtkEventBox.

  [ Hysterical Raisins ]
  * LayerSurface: constructed() needs to be chained up

 -- Guido Günther <agx@sigxcpu.org>  Sat, 07 Sep 2019 01:36:19 -0700

phosh (0.0.3) purple; urgency=medium

  [ Guido Günther ]
  * IdleManager: Use G_GUINT64_FORMAT.
    We missed that one. This breaks the build on armhf.
  * Monitor: Save transform too
  * Monitor: Allow to detect flipped outputs
  * Monitor: Allow to get rotation by degrees
  * Shell: Determine usable area by output transform.
    Instead of looking at our rotation property look at the monitors actual
    transform instead. (Closes: #55)
  * MonitorMnager: Report transform too
  * MonitorManager: Fix formatting
  * Shell: Fix type of 'rotation' property
  * Shell: Derive rotation property from primary monitor's rotation.
    This way they can never get out of sync.
  * Shell: Setup a primary monitor after probing outputs.
    This way we don't have to make any assumptions. We don't do this via
    set_primary_monitor since we don't want to trigger panel recreation to
    avoid flickering.
  * Settings: Switch shutdown and lockscreen.
    This matche gnome-shell's layout.
  * Settings: Make sure the buttons stay circular
  * MonitorManager: Specify integer types in g_variant_builder_add.
    This makes sure we treat guint64 correctly.
  * App: Don't print title if it's identical to the applications name.
    This avoids printing the same thing twice.
  * rooston.ini: Drop scale=2.
    We had this for the testing the OLED displays. The devkit has a separate
    HDMI to attach large screens.
  * gitignore tag files
  * Fix URLs and copyright holder.
    We moved repos a while ago
  * rootston.ini: Scale rootston on DSI-1 output.
    The devkit's LCD panel is DSI-1 and we want scaled output there.
  * session: Remove incorrect error parameter in DBus call
  * run: Allow to skip gnome-session.
    It's not always needed and floods the CI logs
  * ci: Skip gnome-session for valgrind run.
    This makes the logs better readable and we don't need it there.
  * meson: Print phosh version as well
  * run: Use glib's valgrind suppressions as well
  * settings: Add separate meson file.
    It's better to track sources per directory.
  * Settings: Simplify rotate evaluation
  * Add gvc submodule.
    This submodule will be used for volume control. It's also used
    by gnome-shell and g-c-c.
  * Wire up output volume control.
    Based on gvc-channel-bar from gnome-control-center. We'll split this out
    of settings.c once we handle more volume controls.
  * ci: Drop valgrind run until we have more RAM.
    It seems the build node drops out atm
  * settings: Make settings use the full screen width.
    Wrap it in a HdyColumn for that to not look totally out of place
    on large screens.
  * Remove some unused components from the session.
    This brings down the number of X11 dependencies and drops things that
    crash frequently (although unused). We can add these back later once
    needed and when the necessary wayland protocols are in place.
  * Favorites: Use a GtkBox instead of a GtkFloxBox for running apps.
    This allows to scroll vertically
  * rootston.ini: Map seat to DSI-1 instead of HDMI.
    This makes rotation work and it's far more likely to be used on the LCD
    atm. This needs a proper fix in the compositor to be better at input
    mapping (https://source.puri.sm/Librem5/wlroots/issues/23).
  * gitlab-ci: Build debs too
  * shell: Prefer dark theme.
    See: https://source.puri.sm/Librem5/librem5-base/issues/6
  * PhoshWayland: Add and use phosh_wayland_roundtrip.
    Based on a patch by Simon Ser.
  * PhoshLockscreenManager: Add missing chain up in constructed()
  * PhoshLockscreenManager: Drop unused parent
  * PhoshWwanInfo: Fix callback signature.
    We don't use the other params but it's better to have this correct.
  * PhoshWwanInfo: Simplify signal handler disconnects
  * PhoshPanel: Fix element order.
    This makes glade happy so we get no diff when saving.
  * top-panel.ui: Fix indentation
  * PhoshShell: Delay gui setup.
    If we do it in an idle callback we're sure the shell object is already
    there so we have all the managers at our disposal to e.g. connect
    widgets to them.
  * PhoshShell: Make custom widget types known.
    This makes sure we can use them in UI files independent from any loading
    order.
  * Add PhoshWifiManager.
    This keeps track of the wifi devices by interfacing with NetworkManager
    and gets the current signal ruality. We delay it's creation until it's
    needed.
    We can later on add support for ad-hoc networks.
  * Add PhoshWifiInfo widget.
    This connects to the wifi manager to display the current wifi state.
    Using it in the panel is then just a matter of adding it to the ui file.
  * PhoshLockScreen: Display wifi status.
    Hook the wifi status into the lockscreen too
    Use the WifiInfo widget here too. (Closes: #10)
  * d/control: Build-dep on at-spi2-core.
    On the devkit we don't pull in recommends but GTK+ wants it to run the
    tests in a meaningful way.
  * Add HACKING to clarify coding style and other matters
  * README: Add pipeline status
  * README: Make sure build-deps are up to date.
    Use the tested list from d/control instead of hardcoding it.
  * PhoshMonitor: Emit signal when monitor is fully configured.
    Emit a signal when we received all of the configuration data from
    the compositor.
  * PhoshMonitor: Update comment
  * PhoshMonitorManager: Fix function declaration.
    Use a better variable name.
  * PhoshWayland: Maintain outputs in hash table.
    This duplicates the static wl_ouput GPtrArray which will be removed
    at the end of this series.
  * PhoshWayland: listen for outputs going away
  * PhoshWayland: Add functions to query outputs
  * PhoshMonitorManager: Pick up changed wl_outputs
    and signal when we added/removed a monitor. (Closes: #46)
  * Move initial handling from PhoshShell to PhoshMonitorManager.
    This move wl_output processing into the one place that has a way better
    idea what to do.
  * PhoshWayland: Kill the GPtrArray in favour of the GHashTable
  * LockScreenManager: Listen for monitor changes (Closes: #51)
  * PhoshLockscreenManager: simplify signal disconnects
  * Use #pragma in all headers
  * Add PhoshOskManager.
    Class to handle OSK interaction.
  * PhoshShell: Add PhoshOskManager
  * PhoshOskButton: Use PhoshOskManager.
    Don't duplicate code that is in PhoshOskManager and keep the DBus
    interaction in one place.
  * PhoshOskButton: Drop private data
  * PhoshShell: Add getter for lockscreen manager
  * PhoshOskManager: Hide keyboard on screen lock (Closes: #75)
  * PhoshShell: Close OSK when displaying favorites or settings (Closes: #81)
  * README: Prefer wlroot's X11 backend when nested.
    This one gets the window size right.
  * rooston.ini: Use the phone's resolution with the X11 backend
  * PhoshLockScreen: Only show clock on the lock screen.
    We don't want date or weekday there. (Closes: #85)
  * helpers: Make it simple to use glade with PhoshLayerShells.
    Temporarily replace the PhoshLayerShell by a GtkWindow known to glade.
    We could extend the glade-catalog but this way doesn't require any
    special setup.
  * rootston.ini: Don't scale X11 display.
    This helps people with screens that don't have 1440 vertical pixels.
  * phosh.in: Prefer phoc over rootston
  * PhoshLayerSurface: Don't use gtk_widget_show_all()
    gtk_widget_show ought to be enough. Widgets need to setup themselves
    properly.
  * Become a policy kit authentiation agent.
    Somewhat based on gnome-shell's implementation. (Closes: #22)
  * debian: Add dependency so we can be a polkit auth agent
  * pot: Update translatable strings
  * Update translations from zanata
  * rootston.ini: Fix horizontal resolution.
    We have 360 not only 320 pixels.
    Thanks to Zander Brown
  * Lockshield: Use black background too
  * Lockscreen: Make arrows a bit thinner
  * Home: Make center button expand again.
    This unbreaks clicking the home bar. Otherwise only the image
    itself would be sensitive.
  * css: Add unit to font size.
    Silences a gtk warning.
  * PhoshWWanInfo: Drop priv.
    We're not going to derive from it and this makes the code simpler.
  * PhoshWWanInfo: Allow to set icon size
  * rooston.ini: Set window size for wayland as well
  * README: Fix some wording
  * README: Don't special case running nested on x11
    wayland works too.

  [ Dorota Czaplejewicz ]
  * build: Use the right path to the source.
    Tests wouldn't build if the build directory was outside of the source
    tree.
  * build: Remove duplicated gio dependency

  [ emersion ]
  * Update the wlr-layer-shell-unstable-v1 protocol
  * PhoshWayland: Add wlr_output_manager v1 protocol.
    We don't make the lack of that protocol fatal atm since the rootston
    currently on the devkit doesn't have that code yet.

  [ Zander Brown ]
  * Make top and home-bar black.

  [ Tobias Bernard ]
  * Top panel: equal spacing on icons on left and right
  * Top panel: make time bold
  * Settings menu: Black background, simplified styling
  * Lock screen: black background, margin fixes, thinner clock font
  * Minor: Change "PIN" to "Passcode"
  * Home bar: use custom, wider swipe arrow icon
  * Home bar: move keyboard button to the right
  * Home bar: rounded, smaller OSK button
  * Lockscreen: replace HdyArrows with a an image + CSS animation
  * Settings menu: add button outlines, improve spacing
  * Minor: better top bar clock style class name
  * Top bar: make status icons 16px

 -- Guido Günther <agx@sigxcpu.org>  Wed, 19 Jun 2019 09:07:57 +0200

phosh (0.0.2) purple; urgency=medium

  [ Guido Günther ]
  * Update translations from zanata
  * home: Add keyboard button.
    Add a keyboard button to the home buttons bar. This will allow to unfold
    the OSK.
  * monitor-manager: Use output names.
    This allows us to give the monitors more meaningful names instead of
    made up numbers and to correctly identify built in displays.
  * shell: Move panels on primary monitor change.
    When a new primary monitor is set move the panels around.
    This also fixes the home panel not being disposed.
  * system-prompter: Pass on the wl_output and not the monitor to new
    prompters.  This makes sure they always end up on the primary monitor.
  * Add basic org.gnome.Mutter.Idle DBus protocol support.
    This allows e.g. g-s-d power to track our idle time for e.g. dimming the
    display.
  * LockscreenManager: Rely on gnome-session for idle detection.
    This makes us properly respect idle inhibitors e.g. when watching movies.
  * Favorites: Drop weston terminal.
    Don't hardcode weston terminal anymore since gnome-terminal now also on
    the dev boards.
  * Settings menu: Add shutdown button

  [ David Boddie ]
  * Updated Debian package dependencies and .ini file location.

 -- Guido Günther <agx@sigxcpu.org>  Sat, 01 Dec 2018 17:59:07 +0100

phosh (0.0.1) unstable; urgency=medium

  * Initial release

 -- Guido Günther <agx@sigxcpu.org>  Wed, 31 Jan 2018 15:02:24 +0100
