* feat(ui): add floating glowing dictation overlay Show a bottom-center non-focus overlay while recognition is LISTENING or PROCESSING so users get a clear visual cue beyond the tray icon. Optional GtkLayerShell on Wayland; plain always-on-top GTK fallback elsewhere. Configurable via ui.show_overlay (default on) and Settings. * fix(test): isolate dictation overlay tests from GTK pollution Overlay unit tests no longer construct real GTK windows or import tray_indicator, which was loading gi.repository early and breaking later tests that mock GI (single-instance and suspend GLib checks). * docs: add dictation overlay screenshots Capture the floating glowing orb in listening (green) and processing (amber) states for the PR and README screenshots section. * test(ui): raise dictation overlay coverage for Codecov patch gate Exercise GTK init, draw/animation, positioning, layer-shell fallbacks, tray overlay wiring, settings toggle, and config edge cases so patch coverage on the floating overlay clears the 80% Codecov target. * test(tray): call overlay helpers via unbound methods Avoid instance-level MagicMock shadowing of set_overlay_enabled under some import/mock orderings (seen on CI Python 3.10). * test(tray): inject explicit config mock for overlay helpers Assign a MagicMock config_manager on the instance so assertions do not depend on the constructor patch (which can leave a real ConfigManager under some Python versions / import orders). * refactor(ui): ponytail pass on dictation overlay Drop the hand-drawn mic glyph, simplify the Cairo clear/pulse path, reuse ConfigManager get_bool/set, tighten tray overlay helpers, and delete string-grep structural tests that proved nothing. * fix(ui): pin overlay to bottom strip and stop stealing focus Use a full-width bottom strip (layer-shell left/right/bottom anchors, or resize+move fallback) so the orb is bottom-center on Wayland. Map the window once and toggle opacity instead of hide/show so compositors do not re-activate it and yank focus out of the editor (which broke IBus inject). * fix(appimage): seed GtkLayerShell typelib for dictation overlay * fix(ui): address greptile findings on dictation overlay * fix(appimage): keep layer-shell typelib optional for direct builds
39 lines
1.7 KiB
Bash
Executable File
39 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Install what build.sh needs on a bare base image, then run it.
|
|
#
|
|
# The AppImage inherits the glibc and the GTK stack of whatever host builds it,
|
|
# so the host is a pinned input like any other: `base-image` in
|
|
# tool_checksums.txt. This script is the part that runs inside that image; the
|
|
# way in is docker-build.sh, which both CI and `just appimage` call:
|
|
#
|
|
# bash packaging/appimage/docker-build.sh dist/vocalinux-0.16.0-py3-none-any.whl 0.16.0 dist
|
|
#
|
|
# Only the interpreter and the Python packages are pinned by digest; these apt
|
|
# packages are whatever the pinned image resolves to. That is the trade the base
|
|
# image makes: its archive is frozen enough for this to be stable, and pinning
|
|
# every .deb would cost more than it protects.
|
|
set -euo pipefail
|
|
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update -qq
|
|
apt-get install -y -qq --no-install-recommends \
|
|
ca-certificates curl git xz-utils file squashfs-tools desktop-file-utils \
|
|
build-essential pkg-config python3 \
|
|
libcairo2-dev libgirepository1.0-dev portaudio19-dev \
|
|
libgtk-3-0 gir1.2-gtk-3.0 \
|
|
gir1.2-ayatanaappindicator3-0.1 libayatana-appindicator3-1 \
|
|
gir1.2-notify-0.7 libnotify4 \
|
|
gir1.2-dbusmenu-glib-0.4 libdbusmenu-gtk3-4 \
|
|
gir1.2-ibus-1.0 gir1.2-rsvg-2.0 librsvg2-common \
|
|
gir1.2-gtklayershell-0.1 libgtk-layer-shell0 \
|
|
libvulkan-dev
|
|
|
|
bash "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/build.sh" "$@"
|
|
|
|
# A container builds as root, so everything it wrote is root-owned. Hand the
|
|
# results back to whoever started it (docker-build.sh passes its own ids).
|
|
if [ -n "${HOST_UID:-}" ]; then
|
|
chown -R "${HOST_UID}:${HOST_GID:-$HOST_UID}" "${3:-dist}" \
|
|
"${VOCALINUX_APPIMAGE_CACHE:-/cache}" 2>/dev/null || true
|
|
fi
|