Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
5310a6a
Clipboard history on real GNOME, versions, and brew (#237 #238 #239)
hanthor Sep 26, 2026
a1bab69
chore: bump to v0.28.2
hanthor Sep 26, 2026
902d29e
homebrew: fill v0.28.2 tarball sha256
hanthor Sep 26, 2026
6d93179
homebrew: satisfy audit (depends order, cargo install)
hanthor Sep 26, 2026
1b396b9
homebrew: :linux sorts between build and normal deps
hanthor Sep 26, 2026
ae88353
homebrew: :linux sorts alphabetically among normal deps
hanthor Sep 26, 2026
28931d3
homebrew: per-crate cargo installs (-p rejected with --path)
hanthor Sep 26, 2026
53fb094
homebrew: drop duplicate --locked (std_cargo_args has it)
hanthor Sep 26, 2026
df199de
vm-tier: build images with chroot isolation (#240)
hanthor Sep 27, 2026
28a5ef0
bump_version: manifest as source of truth, online lock refresh, formu…
hanthor Sep 27, 2026
56c1fa5
vmtest: build SetClipboard args with new_tuple (format parser rejects…
hanthor Sep 27, 2026
90a21b9
vmtest: enable extension and wait for Clipboard object in check
hanthor Sep 27, 2026
6869ade
vmtest: unlock a login keyring before the clipboard check
hanthor Sep 27, 2026
88294b1
vmtest: assert recording from engine log, not unified query
hanthor Sep 27, 2026
dc06673
vmtest: flatpak --env before the app id, not after
hanthor Sep 27, 2026
da17ce2
vmtest: keyring roundtrip probe plus CLI-native verbosity
hanthor Sep 27, 2026
4b672cf
vmtest: narrate every step and bound the unbounded calls
hanthor Sep 27, 2026
b1eca14
vmtest: export as_user so timeout can exec it via bash
hanthor Sep 27, 2026
3eb63ad
vmtest: show keyring state and secret-tool errors
hanthor Sep 27, 2026
a7a63a8
vmtest: fix clipboard-history keyring unlock and bound every wait
hanthor Sep 27, 2026
08c1fd0
vmtest: export engine after its definition
hanthor Sep 27, 2026
16a2cfa
vmtest: settle and re-unlock after keyring --replace
hanthor Sep 27, 2026
88de29e
vmtest: sidecar keyring collection instead of daemon --replace
hanthor Sep 27, 2026
33c3fbf
vmtest: feed sidecar python via python3 -, not /dev/stdin
hanthor Sep 27, 2026
21700fc
vmtest: create sidecar collection under the default alias
hanthor Sep 27, 2026
a6650a5
vmtest: reset the login keyring instead of a sidecar collection
hanthor Sep 27, 2026
b68bbd6
vmtest: kill the session keyring daemon instead of replacing it
hanthor Sep 27, 2026
ce3807d
vmtest: match keyring daemons with pkill/pgrep -f
hanthor Sep 27, 2026
81e0707
vmtest: export uid for timeout-wrapped engine calls
hanthor Sep 27, 2026
02ff164
vmtest guard: stand ping in for forwarded subcommands
hanthor Sep 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions .github/workflows/vm-tier.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,15 @@ jobs:
# And the GNOME Shell extension, for the same reason: the image
# installs the in-tree copy, the one the contract test checks.
cp -r extensions/gnome-shell/compass@tunaos.org packaging/vmtest/
sudo podman build \
# --isolation chroot (#240): the image's RUN steps run
# `flatpak install`, and flatpak sandboxes the deploy with bwrap.
# Under buildah's default oci isolation that bwrap nests inside the
# build container's own user namespace, which current runners deny
# ("Creating new namespace failed"). Chroot isolation runs RUN steps
# without an outer namespace, so flatpak's bwrap nests zero deep —
# the same shape flatpak-builder already builds with. Rootful-only,
# and this command is already sudo.
sudo podman build --isolation chroot \
-t localhost/bluefin-compass:ci \
-f packaging/vmtest/Containerfile.compass \
packaging/vmtest
Expand Down Expand Up @@ -329,7 +337,7 @@ jobs:

- name: Build the test image
run: |
sudo podman build \
sudo podman build --isolation chroot \
-t localhost/bluefin-compass:ci \
-f packaging/vmtest/Containerfile.compass \
packaging/vmtest
Expand Down Expand Up @@ -470,7 +478,7 @@ jobs:

- name: Build the test image
run: |
sudo podman build \
sudo podman build --isolation chroot \
-t localhost/bluefin-compass:ci \
-f packaging/vmtest/Containerfile.compass \
packaging/vmtest
Expand Down
56 changes: 28 additions & 28 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ resolver = "3"
members = ["crates/*"]

[workspace.package]
version = "0.1.0"
# The release line: scripts/bump_version.sh moves this with the manifest.yaml
# tag, and crates/compass/tests/version_sync.rs fails while they disagree, so
# `compass --version` (clap's `version`, i.e. CARGO_PKG_VERSION) always names
# the release the binary came from.
version = "0.28.2"
edition = "2024"
# The minimum we support, not the version we develop on -- rust-toolchain.toml pins
# that, and the two are deliberately different. This one is set by what the Flatpak
Expand Down
10 changes: 8 additions & 2 deletions crates/compass-ui/src/app/clipboard.rs
Original file line number Diff line number Diff line change
Expand Up @@ -402,8 +402,11 @@ impl LauncherApp {
Some(focus_search())
}

/// The kind filter, right-aligned above the list.
/// The kind filter, right-aligned above the list: the card's own dropdown
/// look (#239), in the launcher's font, rather than Iced's default
/// pick-list chrome.
pub(super) fn clipboard_filter<'a>(&self, page: &ClipboardPage) -> Element<'a, Message> {
let palette = self.palette();
container(
iced::widget::pick_list(
clipboard_page::KIND_FILTERS
Expand All @@ -413,7 +416,10 @@ impl LauncherApp {
Some(clipboard_page::filter_for_kind(page.kind).0.to_owned()),
Message::ClipboardKindChanged,
)
.text_size(12),
.text_size(12)
.font(self.font())
.style(move |_, status| crate::design::dropdown(palette, status))
.menu_style(move |_| crate::design::dropdown_menu(palette)),
)
.width(Length::Fill)
.align_x(Alignment::End)
Expand Down
52 changes: 52 additions & 0 deletions crates/compass-ui/src/design.rs
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,58 @@ pub fn theme(appearance: Appearance) -> iced::Theme {
)
}

/// A dropdown that reads as part of the card (#239).
///
/// Iced's default pick-list chrome — near-square corners, a full-contrast
/// border, and colors off the generic ramp — sits visibly apart from the
/// launcher's rows. A filter instead takes the search field's fill and the
/// rows' corner radius, with no border, in every status: the launcher's rows
/// do not glow on hover either. The font is set at the call site, because a
/// pick list carries its own.
#[must_use]
pub fn dropdown(
palette: Palette,
_status: iced::widget::pick_list::Status,
) -> iced::widget::pick_list::Style {
iced::widget::pick_list::Style {
text_color: palette.text.to_iced(),
placeholder_color: palette.muted.to_iced(),
handle_color: palette.muted.to_iced(),
background: iced::Background::Color(palette.field.to_iced()),
border: iced::Border {
radius: f32::from(GEOMETRY.row_radius).into(),
..iced::Border::default()
},
}
}

/// An open dropdown's menu: the card's fill, row-radius corners, and the
/// selection colors the results list uses, so an open filter looks like the
/// list it filters. The hairline and soft shadow are the popover's own, the
/// way GNOME draws one over a window.
#[must_use]
pub fn dropdown_menu(palette: Palette) -> iced::widget::overlay::menu::Style {
iced::widget::overlay::menu::Style {
background: iced::Background::Color(palette.surface.to_iced()),
border: iced::Border {
color: palette.border.to_iced(),
width: 1.0,
radius: f32::from(GEOMETRY.row_radius).into(),
},
text_color: palette.text.to_iced(),
selected_text_color: palette.selection_text.to_iced(),
selected_background: iced::Background::Color(palette.selection.to_iced()),
shadow: iced::Shadow {
color: iced::Color {
a: 0.25,
..iced::Color::BLACK
},
offset: iced::Vector::new(0.0, 4.0),
blur_radius: 16.0,
},
}
}

/// The shadow around the card, in logical pixels.
///
/// Enough to lift the card off the wallpaper without dominating the palette.
Expand Down
Loading
Loading