phosh-osk-stub (0.38.0) experimental; urgency=medium

  * osk-stub: Make protocol static.
    No need to have it visible in other compilation units
  * protocols: Add device-state.
    This will allow us to detect connected hw keyboards and disable the OSK.
  * README: Document new features
  * hw-tracker: Track connected keyboards and allow to prevent unfold.
    Usually when a hardware keyboard is attached one doesn't want to show
    the OSK as this takes up screen space.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/37
  * hw-tracker: Add setting to ignore hw-keyboards.
    This helps in situations where people want an OSK and a hardware
    keyboard.
  * osk-stub: Revalidate whether to show the OSK when attached hw changed.
    This allows to show/hide the OSK immediately on hw changes (and not
    delay that decision until the next activation).
  * pos-input-surface: Delay initial key submission.
    Wait until phosh is hopefully up.
    Improves 353e39a86 ("input-surface: Make sure we have an input serial")
  * input-surface: Set a style class.
    This allows us to style the area outside of the osk widget
  * osk-widget: Use a osk specific background color in all variants
    @pos_bg_color was already used for the completion bar but undefined.
    This fixes unreadable completion bar text in high contrast mode and
    also gives us an easy way to change the default background color
    for the osk-widget and input-surface.
  * style: Introduce our own fg color.
    We can use that wherever @theme_fg_color would be used. For all
    themes we currently handle there's no visible change.
  * input-surface: Use our theme bg color.
    So far the surface defaulted to whatever the theme used. This allows
    us to override it.
  * completion-bar: Avoid button background.
    We want it to be colored like the completion bar's background.

 -- Guido Günther <agx@sigxcpu.org>  Tue, 02 Apr 2024 13:29:34 +0200

phosh-osk-stub (0.37.0) experimental; urgency=medium

  [ Guido Günther ]
  * input-surface: Make sure we have an input serial.
    This works around the lack of input serials on touch only systems. See
    https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5628
  * emoji: Update emoji data to CLDR v43.
    This corresponds to GTK commit
      5a8a0814f7 ("emoji: Update data to CLDR v43")
    Based on emojibase v15.2.0
  * ci: Use plain trixie.
    The gi-docgen issue is long fixed

  [ Teemu Ikonen ]
  * build: Define POS_HAVE_PRESAGE2 if presage version 2 is found.
    Presage version 2 is maintained by the sailfish-keyboard project at
    https://github.com/sailfish-keyboard/presage
  * presage: Use the libmarisa trie predictor if POS_HAVE_PRESAGE2.
    Set the required predictors in presage config if they are missing from
    the user-supplied configuration.
    The trie databases for some languages can be found at
    https://github.com/sailfish-keyboard/presage-database
    See presage 2 README on how to create a database with your own corpus:
    https://github.com/sailfish-keyboard/presage/blob/master/README.md

 -- Guido Günther <agx@sigxcpu.org>  Mon, 04 Mar 2024 18:01:45 +0100

phosh-osk-stub (0.36.0) experimental; urgency=medium

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

  [ Teemu Ikonen ]
  * shortcutsbar: Add shorter labels for Page_Up and Page_Down.
    Rename we_know_better_than_gtk() to pos_accelerator_get_label() and
    refactor setting shortcut->name so that the name from there takes
    precedence.
  * presage: Capitalize completions accoording to preedit
  * presage: Add tests for capitalize_by_template()
  * completer: Don't assume the out value is inited to FALSE

  [ Guido Günther ]
  * hunspell: Fix indent.
    Fix some harmless indent glitches. No functional change.
    Gbp-dch: Ignore
  * debug-widget: Drop it.
    We've not used it since ages and overly long surrounding text can mess
    up the keyboard widgets.
  * completer: Special case Enter/Return.
    Return/Enter is special as we want it to submit the preedit but can't
    just append '\n' as lots of programs listen to the key event to toggle
    actions.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/27
  * completer: Add more characters to word separators
  * completer: Improve documentation of pos_completer_add_preedit
  * presage: Guard last word grabbing against preedit changes.
    We only want to grab the last word when preedit isn't beeing updated.
    Otherwise we might mix the preedit with the last word and Enter/Return
    being ignored.
  * input-surface: Don't crash on ibus layouts without a language.
    E.g. `typing-booster` only has ('ibus', 'typing-booster').
  * input-surface: Don't forget to cleanup vk-driver
  * vk-driver: Don't forget to free virtual keyboard
  * osk-widget: Don't forget to free symbols

 -- Guido Günther <agx@sigxcpu.org>  Fri, 02 Feb 2024 10:32:21 +0100

phosh-osk-stub (0.35.0) experimental; urgency=medium

  * varnam: Skip over identical words.
    Govarnam often gives us the same word multiple times in a row. Skip over
    these.

 -- Guido Günther <agx@sigxcpu.org>  Mon, 01 Jan 2024 15:18:58 +0100

phosh-osk-stub (0.34.0) experimental; urgency=medium

  * tests: Use memory gsettings backend.
    This avoids test failures when running in a restricted environment
  * ci: Switch to trixie
  * ci: Make it simple to rebuild the image
  * ci: Modernize by using meson where easily possible
  * ci: Switch to trixie
  * ci: Make sure docker image is current.
    We pull gir-docgen from sid to work around an RC bug
  * ci: Add uncrustify config and checker.
    Based on what we added to phoc recently. We copy it in here so users
    don't have to get any extra submodules or similar to run these locally.
  * ci: Run style checks on merge requests.
    We move ci-fairy to the new stage too as it checks commit message style.
  * doc: Be a bit more specific which entry to select
  * input-surface: Add callback to finish animation.
    When we blank and the screen lock kicks in the GTK's frame clock stops
    ticking. Finish the animation in that case.
    This will become superfluous when we switch to compositor driven
    animations via the draggable layer surface.
  * input-surface: Make it simple to check for language layouts.
    This makes it simple to distinguish "language" layouts from
    "special" layouts like emoji or terminal.
  * input-surface: Make it simple to check for terminal layouts.
    This makes it simple to distinguish the terminal layout from
    language or other layouts.
  * input-surface: Ignore "special" layouts when remembering last layout.
    This allows us to switch back to the last language layout. The only
    special layout is currently the terminal layout but there will be more
    like PIN.
    Helps: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/14
  * data: Add some terminal keyboard shortcuts.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/10
  * schema: Ignore OSK activation for gnome-calculator.

 -- Guido Günther <agx@sigxcpu.org>  Fri, 01 Dec 2023 12:41:00 +0100

phosh-osk-stub (0.33.0) experimental; urgency=medium

  * vk-driver: Make the two loops more alike.  No need to use different loop
    variables
  * vk-driver: Make pos_vk_driver_set_overlay_keymap match regular keymap code.
    Use the same pattern in the loop.
  * vk-driver: Don't leak layout-id
  * input-surface: Restore keymap with slight delay.
    When closing the popup apply a slight delay before restoring the keymap
    as otherwise the symbol sent to the popup might get applied to the new
    keymap set (rather than the one set for the popup).
    The virtual-keyboard requests are sent from pos in the right ordering
    and the compositor gets them correctly too so it fails within the X11
    bits.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/22
  * input-surface: Handle emojis when no input method is in use.
    As this doesn't happen often we just built a keymap for that one symbol.
    This works for e.g. chromium under XWayland but fails for e.g. chromium
    in Wayland mode as it cuts of the topmost byte.
  * input-surface: Handle tone modifiers and combining characters.
    This allows tone modifiers in the emoji popover to work. As with
    the previous commit this works in e.g. chromium's search bar when
    running using XWayland.
  * vk-driver: Don't crash when gdk keysm conversion fails
    gdk_wayland_keymap_get_entries_for_keyval is supposed to return FALSE
    when conversion fails but currently doesn't. See
      https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/6492
    so check n_keys as well.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/24
  * shortcuts-bar: Allow for more keys as shortcuts.
    GTK needs to be pretty strict regarding accelerators but we can allow
    for more keys like arrow keys.
  * input-surface: Indicate that we handle xkb layouts
  * completer-manager: Keep a hash table of inited completers.
    And allow to get them
  * completers/presage: Drop unused variable
  * completers/varnam: Use member variable
  * completers/varnam: Don't leak completions
  * input-surface: Move layout init to constructed.
    We'll init completers there soon and those aren't yet available
    in init().
  * completer: Allow empty region
  * completer: Allow to get a display name.
    The display name can be supplied by the completion engine
  * completion-manager: Add completer info.
    The completion info can be used by other parts of the stack to fetch a
    completer with a given configuration.
  * input-surface: Build layout name in one place.
    We allow to prepend the engine name which we'll need for completion
    engines. We also avoid guessing information from the name, use the
    primary values instead.
  * input-surface: Don't skip non xkb layouts.
    Instead use the information to init a completer that is attached to that
    layout.
  * completers/varnam: Allow to set language and get display name
  * language popover: Use display name in menu
  * input-surface: Check for errors loading the terminal layout
  * input-surface: Enable completion when the layout requires it.
    Layouts like the varnam driven Malayalam need a completion engine
    so we need to have it on when the widget is used.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/16
  * input-surface: Don't ignore errors when setting completion fallback
  * docs: Explain govarnam setting

 -- Guido Günther <agx@sigxcpu.org>  Wed, 25 Oct 2023 18:46:00 +0200

phosh-osk-stub (0.32.0) experimental; urgency=medium

  [ Guido Günther ]
  * build: Bump meson to 0.58.0.
    Avoids warning due to str.replace usage
  * build: Avoid get_pkgconfig_variable.
    Silences another meson warning
  * vk-driver: Add 'delete'
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/11
  * Add varnam based completer.
    The config is currently hardcoded and uses 'ml' as language.
  * input-surface: Fix comment.
    It was lacking the one most important word
  * virtual-keyboard: Push keymap selection upwards into the vk-driver.
    This allows us to sync it with the keycodes sent.
  * vk-driver: Only update keymap when it changed
  * osk-widget: Add xkb keymap layout-id.
    This allows us to keep keymaps in sync
  * input-surface: Switch keymap when switching layout.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/15
  * input-surface: Add doc string for keyboard-driver
  * vk-driver: Allow AltGr as modifier
  * vk-driver: Don't hardcode us keycodes.
    Set them based on the keymap.
  * vk-driver: Add German layout.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/12
  * input-surface: Scale up to 1024px.
    This makes for less empty space on wider displays
  * README: Mention varnam.
    We'll expand on that after switching to govarnam
    and landing more bits.
  * docs: Mention varnam based completer
  * key: Include enums.
    Helps clang
  * vk-driver: Allow to set an overlay keymap.
    This creates a temporary keymap with the provided symbols.
  * osk-widget: Emit signal when character popover is shown or hidden
  * input-surface: Proxy popover symbols to vk driver.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/18
  * vk-driver: Don't listen for input source changes.
    Continuing from f5bb966b4b6cd33ed7661198beca8ea80359e13b where we pushed
    listening to input-source changes from the virtual_keyboard to the
    vk_driver we can now remove it there too and just invoke
    pos_vk_driver_set_keymap().
    This avoids listening for the same setting in two places and will also
    allow us to pass more information from the osk in use.
  * osk-widget: Allow to get symbols of the current layout
  * vk-driver: Create keymaps on the fly.
    The keymap is built on the fly avoiding keys that chromium thinks it can
    interpret as evdev keycodes.
    This way we can get more layouts to work in virtual keyboard mode like
    Ukranian.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/19
  * vk-driver: Drop handcrafted de layout.
    We only keep the us layout for the moment as this is useful for the
    terminal layout.
  * input-surface: Use "terminal" as layout_id for the Termian layout.
    This is basically the only reason why we keep the built in keymap.
  * vk-driver: Use the built-in keymap for the terminal layout.
    Instead of hoping for the best when switching keymaps use the built-in
    keymap for the terminal layout. This decouple us completely from the
    system keymaps.
    We can look into generating this one as well at a later point.
  * vk-driver: Add last missing symbols
    ℅, ®, ©, ¢, €, ¥, and ™ are on the terminal layout but weren't in the keymap.
  * input-surface: Split keymap and completion language setting.
    This makes the code easier to follow and we also don't fail
    to set an initial keymap.
  * doc: Mention virtual keyboard mode.
    Mention the limitations and advantages of using it as input-method.
  * input-method: Free the full im state.
    Otherwise we leak the surrounding text
  * completers/hunspell: Don't leak completions
  * osk-key: Don't leak symbols
  * vk-driver: Try harder to get an event code.
    If it's not in the table use GDK's reverse mapping function.
    Closes: https://gitlab.gnome.org/guidog/phosh-osk-stub/-/issues/21
  * vk-driver: Minimize GDK mapping table.
    We keep the regular letters to not e.g. swap Z and Y when the German
    layout is active.

  [ Kai Lüke ]
  * layouts: Prefer capital eszett over double S as German capitalization.
    The ezsett character didn't have a capitalization in fonts for long
    time and thus double S was used instead. Since some years a proper
    unicode capitalization is available and can be used instead (see
    https://en.wikipedia.org/wiki/%C3%9F#Development_of_a_capital_form).
    Prefer the new capital eszett but still offer the double S as second
    alternative.

  [ Subin Siby ]
  * Use govarnam instead of deprecated libvarnam

 -- Guido Günther <agx@sigxcpu.org>  Wed, 27 Sep 2023 10:02:51 +0200

phosh-osk-stub (0.31.0) experimental; urgency=medium

  * vk-driver: Add menu key.
    This allows to add the menu key to the keyboard shortcuts

 -- Guido Günther <agx@sigxcpu.org>  Sun, 03 Sep 2023 10:49:22 +0200

phosh-osk-stub (0.30.0) experimental; urgency=medium

  * docs: Mention org.gnome.desktop.interface gtk-im-module
  * Allow to keep the OSK folded when some apps are active
  * doc: Document ignore-activation gsetting

 -- Guido Günther <agx@sigxcpu.org>  Tue, 01 Aug 2023 20:41:00 +0200

phosh-osk-stub (0.28.0) experimental; urgency=medium

  [ Undef ]
  * layouts/terminal: Add escape to capital layer.
    Not having this key means that every key in the middle row moves slightly
    right on pressing shift, leading to occasional typos on the terminal
    keyboard.

  [ Guido Günther ]
  * manpage: Minor consistency tweak
  * osk-stub: Document all debug flags
  * osk-stub: Remove unused variable
  * osk-widget: Move actual key actions into separate functions
  * osk-widget: Add 'delete' key use.
    Adding more use-types will allow us to do less string parsing in the
    future and to specify the key-use in the layouts already. This will also
    be useful for more complex layout switchings e.g. for uim.
  * osk-widget: Limit key repeat to delete.
    It doesn't work for keys with popovers anyway, it's not needed for space
    as we move the cursor with that so backspace (and maybe <return>) remain
    the only sensible users.
  * osk-widget: Allow to drag fingers between keys.
    The default is to cancel the keypress when the finger leaves the area of
    one key and enters the area of another. Add a new mode that marks the
    old key as released and the new key as pressed instead.
    For that introduce features flags.
  * input-surface: Add common features for all layouts.
    There's some features we want to configure for all layouts.
    Allow to set them via a property on the input-surface and
    bind it to a gsetting.
  * metainfo: Switch to inputmethod.
    It's not a desktop application but rather a wayland input method
    and virtual keyboard.

 -- Guido Günther <agx@sigxcpu.org>  Wed, 31 May 2023 17:50:40 +0200

phosh-osk-stub (0.27.0) experimental; urgency=medium

  * Update doap file.
    Fix some copy and paste errors when bringing that one in from
    phosh.
  * Add appstream metainfo
  * tools: Properly pick up default phoc.ini
  * tools: Use headless backend for screenshots.
    No need to bring up a window on the host and this way it's
    simpler in CI.
  * build: Detect available completers.
    The check for fzf is actually a runtime check but use it as this is
    solely for testing we assume built-time env == runtime env.
    We don't break any existing configurations since switching completers
    needed code changes anyway.
  * Add completer-manager.
    This class is responsible for mapping completion engines to keyboard
    layouts / locales.
    It keeps the input-surface clear from any knowledge about which
    completers are available.
    This introduces the minimal object which just returns the presage
    completer. The next commits will then add more completers.
  * input-surface: Hook up completer-manager.
    This already allows to switch the default completer via an environment
    variable.
  * completers/fzf: Drop commented out code
  * completers/fzf: Take an error location and use initable.
    This makes completers consistent. We use that as an opportunity to check
    if the word list is present.
  * completer-manager: Allow to select completer via POS_TEST_COMPLETER.
    This moves the default completer from compile time to program startup
    time.
  * Use a common dependency for all completers.
    This way we can keep the knowledge about available completers in
    completers/ (and PosCompleterManager).
  * shortcutsbar: Make css actually apply
  * css: Add section markers
  * doc: Fix POS_TEST_COMPLETER docs.
    The value descriptions ended up in the wrong place.
  * completers: Add unix pipe like completer.
    The completer gets the current preedit on stdin and can output a list of
    completions. We default to `cat` which just offers the current preedit
    as completion.
  * input-surface: Don't leak completions pos_completer_get_completions is
    "transfer: full"
  * completion-bar: Use a bold font for suggestions.  Makes them a bit more
    prominent
  * pipe: Only force kill command if still running
  * build: Move presage definitions to completers
  * completers: Make name a r/o property and set it
  * completer-manager: Allow to set default completer via GSetting.  Keep
    presage as the default.
  * osk-widget: Set language and region.  This corresponds the parts of a unix
    locale like <lang>_<region> although we use all lowercase.
  * completer: Split language and region.  This avoids leaking implementation
    details of the layouts into the completer.
  * input-surface: No need to switch language when switching to terminal
  * ci: Switch to image with libhunspell-dev
  * packaging: Enable hunspell completer.
    It's easier to set up than presage and pretty useful in en-us at least.
  * completers: Add simple hunspell completer.
  * Allow to use either hunspell or presage.
    We prefer hunspell atm. Later on we want presage and hunspell active
    at the same time.
  * doc: Update manpage.
    Document gsettings, mark completion in general as no longer
    experimental.

 -- Guido Günther <agx@sigxcpu.org>  Wed, 26 Apr 2023 11:34:01 +0200

phosh-osk-stub (0.25.0) experimental; urgency=medium

  * shortcuts-bar: Don't change background on hover
  * shortcuts-bar: Allow shortcuts to have different width.
    Ctrl+Shift+a takes considerably more space than e.g. Ctrl-a
    and as we want as many shortcuts in reach as possible allow
    for different sizes.
    Use slightly larger padding to make things not look too crammed.
  * shortcuts-bar: Make scrollbar consistent with emoji picker scrollbar
  * input-surface: Disable layout switching via swipe gesture by default.
    It's confusing to users and we have a popover now and copy/paste buttons
    can be added to the terminal shortcuts bar.
  * osk-stub: Allow to enable debug surface.
    We simply do this by allowing swipes.
  * doc: Link to GTK docs for valid accelerator values
  * news: Fix wording
  * input-surface: Set the terminal layout early.
    Just so we have layout setting closer together
  * input-surface: Mark Terminal display name as translatable
  * build: Drop config.h template.
    Extra effort to keep it in sync when adding
    new configuration data.
  * layouts/terminal: Make special shell characters easier to reach.
    The often needed ones should now be reachable via the first symbol level
    or a popover on the default level.
  * input-surface: Make sure we select the test layout.
    We want it visible right away.
  * Add helper to screenshot all language layouts.
    We screenshot at the 360x720, this can be changed by giving another
    phoc.ini
    Somewhat based on phosh's (long retired) smoketest:
  * packaging: Recommend fonts-noto-core.
    Otherwise we lack characters like the tab key
  * osk-key: Add expand property.
    This allows a key to take up extra horizontal space in a row.
  * osk-key: Allow to modify key width.
    So far it was construct-only but we want to fix it up later on.
  * osk-widget: Break overly long line
  * osk-widget: Allow space bar to take extra horizontal space.
    Instead of hardcoding a few values based on the number of keys rather
    expand to the maximum width.
    This avoids that the keys to switch layers jump around a lot based on
    the with of the space key. It's still not perfect in layouts that use
    11 keys in the `normal` layer but 10 keys in the `symbols` layer (e.g.
    Swedish).

 -- Guido Günther <agx@sigxcpu.org>  Mon, 27 Feb 2023 09:30:12 +0100

phosh-osk-stub (0.24.0) experimental; urgency=medium

  [ Guido Günther ]
  * build: Drop trailing character
  * packaging: Move desktop file to private dir.
    This avoids listing it twice e.g. in mobile-setting's feedback
    pane.
  * osk-widget: Use layer sensitive label on symbol-layer key.
    Use "123" when not on the symbols layer, otherwise "ABC". This
    will make it consistent to what we use in the emoji widget.
  * input-surface: Add helper to submit current preedit.
    This is needed in several places e.g. when switching modes.
  * Add emoji data.
    Taken from GTK as of commit
    1a4e368c7e5995b342db0be74f56c1eced74a0e6
  * Add emoji-picker.
    This is based on GTK's emoji picker. Besides
    smaller fixes and dropping unneeded bits:
    - switch to horizontal scrolling
    - wrap section in a scrolled window
    - add back and delete buttons
  * input-surface: Wire up emoji picker
  * input-surface: Submit preedit before inserting emoji.
    In completion mode we don't want to complete on emojies
    but rather submit the current text and append the emoji.
  * oskw-widget: Allow for empty rows.
    This avoids a crash in e.g. the arabic layout which lacks
  * osk-widget: Improve warning.
    Print out the "missing" layer name
  * Update Layer surface from phosh.
    This syncs up to
    811c55204d2be4f4714d66fe3863bdc8d7552bed
    to fix the potential problems like
    https://gitlab.gnome.org/World/Phosh/squeekboard/-/issues/285
  * osk-widget: Add a hint that there's a popover.
    We display the first symbol in a slightly dimed color.
  * vk-driver: Unreak <alt> in shortcuts in the terminal's shortcut bar
  * input-surface: Don't try to adjust completion without an input method
  * input-surface: Switch widget and layer according to input purpose.
  * input-surface: Make sure to update language after setting completer.
    Otherwise we might be completing for the wrong language
  * manpage: Mention phosh manpage
  * build: Use summary()
  * main: Use g_init_once()
  * input-surface: Initialize resources.  This avoids lots of scary warnings
    when building the documentation.
  * README: Update screenshots
  * ci: Run tests in xvfb. We test widgets now
  * build: Allow to disable building the tests
  * tests: Use environment() to set test enviroment.
    A bit easier to read as we have key / value pairs.
  * layouts: Add more layouts.
    Again taken from gnome-shell as of
    The keyboard layouts were taken from gnome-shell as of
    6a88c0f0be5aed836f33ed2989d33add58c01403
  * osk-widget: Don't hardcode max layers in several locations.
    Get the array size from the enum.
  * osk-widget: Take layer name into account when parsing layers
    ara and il have only three layers and we want to match to the correct
    ones as otherwise we'll have symbols on the caps layer.
  * input-layer: Don't assume we have all layers.
    Otherwise we can't switch to symbols2.
  * osk-widget: Allow for empty layers on cleanup
    g_ptr_array_free() doesn't handle NULL well so guard against that.
  * osk-widget: Don't add a shift key if there's no caps layer.
    This is true in e.g. arabic and hebrew layouts.
  * tests: Load all layout into an osk-widget.
    This makes sure all osk-widgets can be instantiated.

  [ Sam Hewitt ]
  * emoji-picker: Improve styling

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

phosh-osk-stub (0.23.0~rc2) experimental; urgency=medium

  * input-method: Use g_warning when we can't become the input method.
    This makes it easier to debug why the keyboard might not pop up.
  * d/control: Add breaks on older gtk3.
    We need a very recent version for completion to work due to Carlos fixes
    around 92813e52cde864139f3b740992e8c267a7a6bd1d.
  * input-surface: Adjust size based on size request.
    This makes us resize based on the presence of the completion bar
    and will later help resizing when we have fewer rows.
  * Add completer interface.
    Completers will implement this so we can have
    different completers.
  * Add completion bar widget.
    This holds the completions. We currently hardcode the minimal height.
  * input-surface: Allow to set completer.
    This allows to set a completer that gets fed via the input-method (when
    active). Possible completions are displayed above the osk widgets.
  * completers: Add presage based completer.
    It doesn't override the presage config atm so config e.g. language via
    ~/.presage/presage.xml
  * completers: Add a fzf based example completer.
    This completer uses `fzf` and the systems wordlist to complete the
    current preedit. The worldlist location is fixed. On Debian the default
    word list can be changed via
      select-default-wordlist
    The main purpose is to demo a simple completer.
  * osk-stub: Instantiate presage based completer
  * input-surface: Allow to turn completion on/off.
    We default to off and let the user turn it on when needed
    for the moment. This ensures we can easily recover in case
    of problems.
  * input-surface: Submit preedit on cursor moves.
    This allows e.g. for in word editing
  * completer: Add error quark.
    This allows to return more detailed errors.
  * completer-presage: Switch completion language.
    Switch language when OSK layout changes. We currently only use the
    "language" bits and don't use different corpi for e.g. de_DE, de_AT or
    de_CH. We'll change that once the first copi for situations like this
    show up.
  * osk-stub: Allow to force completion on.
    Helps for development
  * input-surface: Allow to toggle completion via menu.
    We do so by using a GPropertyAction that binds the `win.word-completion`
    action to the `completion-enabled` property.
    Since GPropertyAction holds a ref on the object (PosInputSurface) we
    need to connect to the `destroy` signal in order to break the reference
    cycle when calling `gtk_wiget_destroy` on PosInputSurface. Otherwise the
    input surface would never get disposed since the action_map holds a
    reference on the GPropertyAction which in turn holds a reference on the
    input surface.
    Since we don't want to have `destroy` and `dispose` we move the cleanup
    of the hash map there too.
    With GTK4 we can move to `gtk_widget_class_install_property_action` to
    get rid of this.
  * build: Use separate path for completion data.
    This will allow to share it more easily between OSKs
    without tripping up other completers.
  * d/control: Recommend phosh-osk-data-eu.
    Since we have the presage completer enabled (not the fzf one) recommend
    data usefull for that.
  * README: Document completion requirements
  * input-method: Reset hint on activate.
    Needs to happen according to protocol. This fixes the problem where
    opportunistic completion stays active when switching apps although.
  * build: Add run script.
    This keeps it simple to run phosh-osk-stub, even when the schema
    isn't installed.
  * Add enums and schema for completion mode
  * input-surface: Opportunistically enable compltion.
    When the input-method hints us to enable completion do so, otherwise
    turn it off but respect the users prefs.
  * debian: Install schema files
  * input-surface: Disable completion button when compltion mode is 'none'
  * README: Document gsetting and feature
  * README: Update how to start osk-stub.
    As we have custom schema now we wrap it in the run script as
    otherwise osk-stub won't start.
  * build: Use gnome.post_install()
    Makes it a bit nicer to install to /usr/share/local/
  * input-surface: Remove unused variable
  * input-surface: Move feedbackd notification to separate function
  * input-surface: Emit feedback on all gtk button presses.
    Otherwise we e.g. don't have feedback when selecting entries
    in the menu or when picking a word completion
  * build: Allow to avoid sm.puri.OSK0.desktop.
    For testing it's convenient to just use phosh's expected filename for
    the OSK. For distros it causes file conflicts
    so allow to use a osk-stub specific desktop filename.
  * input-surface: Don't allow to enable completeion without completer.
    Hide "Enable word completion" button if the completer failed to
    initialize (e.g. because there' no dictionary).
  * completion-bar: Highlight button on press
  * vk-driver: Fix doc string
  * osk-widget: Don't forget to untoggle space in cursor mode.
    When using long press on space to move the cursor make sure we
    reset space to normal state afterwards.
  * input-surface: Remove superfluous return
  * input-surface: Reindent.
    Now that most bits landed, reindent the ui file.
  * virtual-keyboard: Update modifier settings.
    Based on looking what wl_keyboard sends
  * vk-driver: Remove spurious empty line
  * Add a manpage.
    This allows us to have documentation on the system and keeps the
    README size under control
  * debian: Install manpage
  * vk-driver: Allow to submit button presses based on GDK keycodes.
    We can even drop the kernel input-code based bits based on that
    later on.
  * Add a shortcuts-bar widget.
    It reads the shortcuts from gsettings and emits signals when pressed.
    Using GTKs acclerators for that has the upside that we can also easily
    add widgets to configure shortcuts to a settings app.
  * input-surface: Wire up shortcuts bar
  * docs: Mention shortcuts configuration
  * README: Update meson invocation
    `meson setup` is preferred nowadays and while at that ignore the doc
    built to reduce required dependencies and speed up the build even more.
  * osk-widget: Fix typo
  * input-surface: Indentation fixes
  * data: Disable completion by default.
    Fixes: bb4703adc495fe6b82d605df40dd7adaf8ca590b
  * input-surface: Hide completion bar more aggressively.
    We only want it with "regular" language layouts
  * completion-bar: Use all horizontal space.
    This makes completion easier to hit and ensures unchanging
    suggestions stays in place.
  * input-surface: Hide separator when completion option is invisible.
    This avoids having the separator at the bottom of the popover when
    completion isn't enabled at all.

 -- Guido Günther <agx@sigxcpu.org>  Thu, 15 Dec 2022 15:59:21 +0100

phosh-osk-stub (0.23.0~rc1) experimental; urgency=medium

  * debian: Remove d/clean.  The files listed in there don't exist
  * build: Error out on missing function declarations
  * input-surface: Make pending labels match submitted ones
  * osk-stub: Make _proxy non-global
  * osk-stub: Avoid idle callback on quit.
    We already use g_unix_signal_add () so no need to schedule
    this even later.
  * osk-stub: Make loop non-global
  * osk-stub: Always use main loop.
    All invocations already have a running main loop so use that
    instead of exit (0).
  * osk-stub: Use automatic cleanup for GError.
    Rename to `err` to consistency with other error locations in this file
  * osk-stub: Use automatic cleanup for object_path
  * osk-stub: Use automatic cleanup for GVariant
  * osk-stub: Don't create osk_dbus multiple times.
    We don't want a new object when the surface gets recreated
  * osk-dbus: Fix indentation
  * osk-dbus: Log failure when we failt to acquire the well known name
  * osk-dbus: Allow to specify replacement policy.
    So far we always allowed replacement and replaced always, we might
    not always want to do this.
  * osk-dbus: Track whether we have the sm.puri.OSK0 dbus name.
    This allows other parts of the osk to react.
  * osk-stub: Only maintain input surface when we own the DBus name.
    This allows us to easily replace the running keyboard for development
    purposes and makes sure we get back a working one when the replacement
    goes away.
  * data: Allow replacement by default.
    This makes it simple to toy with other implementations without any other
    modificatins.
  * ci: Update build-deps.  This way we don't have to redo the image with
    every new build dependency.
  * ci: Drop Byzantium build.
    It's too cumpersome to keep it up to date, we do that downstream.
  * osk-widget: Parse style.
    This allows us to set style classes.
  * style: Add 'sys' key class.
    This is for non-character keys that are not toggles (e.g. esc, tab)
  * osk-widget: Make backspace 'sys' styled.
    Easier to spot this way.
  * terminal: Use sys class
  * osk-stub: Don't race with wayland registry on startup.
    If we acquire the DBus name before all wayland globals are registered
    we'd hit an assert. Avoid this by just not creating the surface on
    startup, it will happen once all wl globals are there.
  * dir-locals: Fix JS indentation.
    We indent with 2 spaces by default
  * input-methods: Fix doc strings
  * build: Only maintain glib version in a single place
  * layouts: Add more layouts.
    Again taken from gnome-shell as of
    The keyboard layouts were taken from gnome-shell as of
    6a88c0f0be5aed836f33ed2989d33add58c01403
  * input-surface: Move adding a layout to an extra function
  * input-surface: Honor POS_TEST_LAYOUT env var.
    This allows to quickly test a layout via
        POS_TEST_LAYOUT=nl POS_DEBUG=force-show _build/src/phosh-osk-stub --replace
    without having to change anything else.
  * input-surface: Emit a warning when we fail to lookup layout info
  * Use less generic name for `config.h`
  * char-popup: Use a grid.
    With lots of chars the single row is hard to use
  * char-popup: Use slightly larger font and more padding.
    This should make the buttons easier to hit.
  * build: Bump glib dependency to 2.66.
    Just to catch up a bit
  * input-surface: Move debug info to separate widget.
    Move the surface that keeps the debug information (which was
    phosh-osk-stub's initial purpose) into a separate widget. This makes
    pos-input-surface focus more in input and also allows us to add new
    things to the debug surface more easily without getting into conflict
    with e.g. the completion code.
    We keep the input-surface's callbacks needed for completion in place.
  * input-surface: Don't leak old_keys
    g_hash_table_get_keys_as_array is transfer: container
  * osk-widget: Handle height requests.
    This allows us to align properly within the input-surface as we're
    no longer dependent on the size of the debug output's box size
  * osk-widget: Make the current mode a property.
    So we can listen for changes
  * osk-widget: Parse locale from layout as well
  * osk-widget: Simplify adding common keys.
    Less code and will allow us to add multiple keys
  * osk-widget: Fix indentation
  * osk-widget: Clearly separate name and display name.
    The name is a unique identifier like `de` or `us` (corresponding to the
    basename of the layout file) while the display name is s.th. like
    `German` or `English (US)`.
  * osk-widget: Move get_popup_pos up
    and drop unused parameters
  * input-surface: Implement GActionMap and GActionGroup.
    This allows us to add actions from other places.
  * readme: Document --replace
  * readme: Use meson consistently.
    This makes it e.g. simpler to pick individual tests, etc.
  * osk-widget: Add key for popover menu
  * input-surface: Add popover menu.
    This allows to select the current layout
  * osk-widget: Center symbols.
    This helps when e.g. the text on the space bar breaks over two lines.
  * osk-widget: Drop '?" from symbol layer toggle.
    This makes it fit a bit better.
  * debug-widget: Use swapped-object-signal.
    This makes sure we disconnect from the input-method when
    when the input-surface goes away.
  * input-surface: Use swapped-object-signal.
    This makes sure we disconnect from the input-method when
    when the input-surface goes away.
  * input-method: Fix signal docs
  * input-surface: Make sure we have a valid input-method
  * debian: Use update-alternatives.
    This allows for easy selection between squeekboard and phosh-osk-stub
    while having both packages installed.
    Note that the user can still override the OSK completely via
    usr/share/applications/sm.puri.OSK0.desktop.
  * d/control: Update description a bit.
    We're not just a stub surface anymore
  * Update README

 -- Guido Günther <agx@sigxcpu.org>  Tue, 29 Nov 2022 14:13:16 +0100

phosh-osk-stub (0.22.0) experimental; urgency=medium

  * virtual-keyboard: Set default keymap if there are no layouts.
    When there are no layouts define set the default keymap. Failing to do
    so would make us abort with a protocol error as we'd send keys but never
    sent a keymap.
  * Clarify 'force-show' debug setting handling.
    Use it to override the GSetting rather than always showing the surface.
    The later was broken and is less useful as we usually want to hide
    the surface without text-input.
    The current interpretation of the option allows us to e.g. to run
    with GSETTINGS_BACKEND=memory easily.
  * data: Remove unused icons
  * build: Fix gettext package name
  * gitignore: Ignore doc package.
    Also drop nonexistent subprojects
  * input-surface: Construct parent object first
  * input-surface: Reduce row spacing on debug page.
    This allows us to fit more information
  * input-surface: Display surrounding text
  * pos-input-method: Fix return argument.
    Return NULL in case of API misuse
  * input-method: Allow to buffer client state.
    If we want to bother about preedit and surrounding-text we need to buffer
    client state and only apply on explicit commit. Add the necessary helpers
    to do that.
  * input-surface: Use actions instead of signals.  This will ease the move to
    a menu later on.

 -- Guido Günther <agx@sigxcpu.org>  Wed, 02 Nov 2022 18:37:44 +0100

phosh-osk-stub (0.21.0) experimental; urgency=medium

  * vk-driver: Handle CTRL modifier
  * vk-driver: Handle KEY_{COPY,PASTE} as copy/paste keys
  * input-surface: Add copy/paste buttons.
    Let's see how this works out. E.g. it won't work in terminals.
  * ci: Update Debian image
  * osk-widget: Unblur icons.
    I've had these in screenshots and that doesn't look nice.

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

phosh-osk-stub (0.20.0) experimental; urgency=medium

  * Release 0.20.0. No changes over 0.20.0~beta1.

 -- Guido Günther <agx@sigxcpu.org>  Mon, 08 Aug 2022 11:30:17 +0200

phosh-osk-stub (0.20.0~beta1) experimental; urgency=medium

  [ Guido Günther ]
  * Sync version number with phosh. This makes sure older phosh-osk-stub
    in the archive doesn't replace us.
  * osk-stub: Use g_autoptr for GError
  * Add input-method.
    Move the wayland bits into a separate object
  * Use input-method instead of open coding
  * Move input-surface to lib.
    This allows us to include it in the documentation and separates
    things more from the binary
  * osk-widget: Add key repeat
  * gitlab-ci: Skip doc build when using PKG_ONLY
  * osk-widget: Cancel current symbol in cursor mode.
    Otherwise we emit a space character when space is released after cursor mode
  * osk-widget: Ignore double click.
  * build: Add generated sources to library dependency.
    Otherwise generated files like the DBus headers might not be around
    when compiling pos-osk-stub.c.
  * pos-input-method: Fix typo
  * pos-input-surface: Notify about screen-keyboard-enabled prop changes.
    The property is G_PARAM_EXPLICIT_NOTIFY.
  * pos-osk-widget: Fix doc string
  * pos-input-surface: Drop (for now) unused prototype
  * pos-input-surface: Add getter for 'surface-visible'
  * pos-input-surface: Add getter for 'screen-keyboard-visible' property
  * pos-input-surface: Handle screen-keyboard-enabled gsetting.
    So far we only adjusted the debug surface string.
  * pos-osk-widget: Split setting of layer to separate function.
    This will allow to trigger it from other parts of the code
  * pos-osk-widget: Rename get_layer to get_keyboard_layer.
    This avoids confusion between the Layer enum and the KeyboardLayer
    struct.
  * pos-osk-widget: Rename get_level to get_layer.
    This makes it match the property and the setter.
  * pos-input-surface: Reset keyboard layer when current osk changes
  * pos-input-surface: Reset keyboard layer to normal on fold.
    This makes sure the user dosn't see "random" levels when e.g. switching
    between apps.
  * data: Indicate that we're using feedbackd.
    This will allow configuration tools to pick up that intent.
  * Recreate input surface when it goes away.
    This can happen when e.g. the output with it is unplugged.
  * osk-widget: Allow to parse PosOskKey.
    Allow to parse the key object rather than just plain strings as we
    do in the current layouts. This allows us to wire up tab, etc in
    layouts.
  * vk-driver: Add function keys
  * Add initial terminal layout.
    This lacks menu key, pos1/end, pg-up/pg-down, esc and control
  * data: Add icon to desktop file

  [ InsanePrawn ]
  * vk-driver: Add keycode for ESC
  * terminal: Add ~, TAB and ESC

 -- Guido Günther <agx@sigxcpu.org>  Tue, 26 Jul 2022 11:59:46 +0200

phosh-osk-stub (0.0.1) experimental; urgency=medium

  * Initial release

 -- Guido Günther <agx@sigxcpu.org>  Mon, 07 Feb 2022 10:09:57 +0100
