From 07adef8a5300cad24750dd31c21ed2e6fbd82f10 Mon Sep 17 00:00:00 2001 From: Omarchybot Date: Sun, 23 Aug 2026 22:12:07 +0200 Subject: [PATCH] Let a received Taildrop file wait to be answered (backport of #7953) Backport of the Taildrop toast fix (PR #7953, merged to quattro as 7e469f96) onto the v4-0-1 release branch. A delivery can land hours after it was sent, and the toast announcing it was expiring after five seconds -- so a file that arrived while nobody was at the machine was gone from the screen before anyone could click it open. Critical urgency is what the shell reads as a popup that lives until it is clicked or dismissed, the same thing omarchy-crash-watch uses to keep its click-to-diagnose toast around. The mechanism is already on this branch: omarchy-notification-send parses options that follow the two positionals, and NotificationLogic.js gives a critical popup duration 0, which never expires. One conflict, in test/shell.d/notification-send-test.sh. #7953 added coverage for the trailing-option path in the notify-send form it had then; #7926, which merged after it on quattro and is already backported here, rewrote that file for the Notify D-Bus form and carried the same coverage across. This branch therefore already asserts what #7953 added -- an urgency and a glyph after the description reach the call, and the urgency is set once -- so the branch's version stands and the resolved file is unchanged. Verified by mutation: with -u critical removed, test/shell.d/tailscale-receive- test.sh fails at once; restored, it passes, including the new assertion that every announcement waits to be answered. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_018DEMYa9UWtroz93DhMTtcV --- bin/omarchy-tailscale-receive | 2 +- manual/35-networking.md | 2 +- test/shell.d/tailscale-receive-test.sh | 7 ++++++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bin/omarchy-tailscale-receive b/bin/omarchy-tailscale-receive index 844b8f73..3f27641c 100755 --- a/bin/omarchy-tailscale-receive +++ b/bin/omarchy-tailscale-receive @@ -59,7 +59,7 @@ claim_path() { announce() { local path="$1" local name="${path##*/}" - local args=("Received $name" "Saved to ${dir/#$HOME/~}") + local args=("Received $name" "Saved to ${dir/#$HOME/~}" -u critical) case "${name,,}" in *.png | *.jpg | *.jpeg | *.gif | *.webp | *.avif | *.bmp | *.tif | *.tiff) diff --git a/manual/35-networking.md b/manual/35-networking.md index 1c4b063c..51437723 100644 --- a/manual/35-networking.md +++ b/manual/35-networking.md @@ -36,7 +36,7 @@ SSH is off until you turn it on with _Setup > Security > SSHD_, which starts the [Tailscale](https://tailscale.com/) is a mesh VPN that makes reaching all your computers and servers over the internet simple and secure. Install it with _Install > Service > Tailscale_. -That gives you a Tailscale panel in the bar, which connects and disconnects the tailnet, switches accounts, and picks an exit node — your own machines and Mullvad regions both show up in the list. It also browses your machines, and that's where Taildrop lives: select a machine and press `s` to send it files, or `c`, `n`, and `d` to copy its IP, name, or full DNS name. The terminal equivalent is `omarchy tailscale send [file...]`, and files sent to you land in `~/Downloads` automatically. +That gives you a Tailscale panel in the bar, which connects and disconnects the tailnet, switches accounts, and picks an exit node — your own machines and Mullvad regions both show up in the list. It also browses your machines, and that's where Taildrop lives: select a machine and press `s` to send it files, or `c`, `n`, and `d` to copy its IP, name, or full DNS name. The terminal equivalent is `omarchy tailscale send [file...]`, and files sent to you land in `~/Downloads` automatically. The notification announcing an arrival waits until you click it open or dismiss it, so a file that turns up while you're away from the machine is still there to answer when you get back. Installing it also adds a web app for the Tailscale admin console. diff --git a/test/shell.d/tailscale-receive-test.sh b/test/shell.d/tailscale-receive-test.sh index 75c12520..93ec4da3 100644 --- a/test/shell.d/tailscale-receive-test.sh +++ b/test/shell.d/tailscale-receive-test.sh @@ -52,10 +52,15 @@ notifications=$(<"$WORKDIR/notifications") fail "taildrop receive saves incoming files" "$(ls "$downloads")" pass "taildrop receive saves incoming files" -grep -qF -- "Received photo.png Saved to $downloads --image $downloads/photo.png" <<<"$notifications" || +grep -qF -- "Received photo.png Saved to $downloads -u critical --image $downloads/photo.png" <<<"$notifications" || fail "taildrop receive previews received images" "$notifications" pass "taildrop receive previews received images" +while IFS= read -r line; do + [[ $line == *"-u critical"* ]] || fail "taildrop receive announcements wait to be answered" "$line" +done <<<"$notifications" +pass "taildrop receive announcements wait to be answered" + grep -q "^Received notes with space.pdf .* -g " <<<"$notifications" || fail "taildrop receive announces other files with a glyph" "$notifications" pass "taildrop receive announces other files with a glyph"