Skip to main content

Overview

The r2Vault menu bar widget provides quick access to uploads without opening the main window:
  • Drop zone for instant file uploads
  • Live progress for active uploads
  • Recent uploads list with quick actions
  • Bucket switcher and settings
The menu bar widget is always accessible, even when the main window is closed.
Source: MenuBarView.swift (source: Fiaxe/Views/MenuBarView.swift:5-533)

Drop Files to Upload Instantly

The drop zone at the top of the menu bar widget accepts files from Finder:
1

Click the menu bar icon

Opens the widget popover
2

Drag files to the drop zone

The zone highlights blue when a file is hovering:
┌───────────────────────┐
│   ↓ Release to Upload │
└───────────────────────┘
3

Drop to upload

Files are queued immediately and upload begins
Alternatively, click the drop zone to open the system file picker. Implementation: MenuBarView.swift:134-184 (source: Fiaxe/Views/MenuBarView.swift:134-184)

Upload Behavior

  • Files upload to the root bucket by default
  • If you’ve navigated to a folder in the main window, files upload to that folder instead
  • Folder uploads preserve directory structure (same as main window)
The menu bar upload uses the same service as the main window, so progress syncs across both views.

Live Progress Tracking

While uploads are active, the widget displays a dedicated progress section:
┌─────────────────────────────┐
│ ⟳ Uploading 2 of 5…         │
│                  [Cancel All]│
├─────────────────────────────┤
│ ↑ photo.jpg           45%   │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━  │
│                              │
│ ⏱ video.mp4         Waiting │
│ ━━━━━━━━━━━━━━━━━━━━━━━━━  │
└─────────────────────────────┘

Progress Elements

Status icon
icon
  • (Uploading) — Blue accent color
  • (Pending) — Gray secondary color
File name
string
Truncates with middle ellipsis if too long: very-long-file-n…ame.jpg
Progress percentage
number
Shows 0% to 100% with monospaced digits
Progress bar
visual
Linear progress bar (blue for uploading, gray for pending)
Source: MenuBarView.swift:484-532 (source: Fiaxe/Views/MenuBarView.swift:484-532)

Cancel Uploads

Cancel individual

Click the × button next to any file

Cancel all

Click Cancel All in the progress header
Cancelled uploads are removed from the queue immediately.

Recent Uploads List

The bottom section displays up to 25 recent uploads with quick actions:
RECENT UPLOADS                  [↗]
┌─────────────────────────────┐
│ 📷 beach.jpg        2.4 MB   │  [🔗] [↓] [🗑]
│ 📄 report.pdf       856 KB   │
│ 🎬 demo.mp4         12.1 MB  │
└─────────────────────────────┘

File Icons

Each file type has a color-coded icon badge:
TypeIconColor
Images (JPG, PNG, GIF, etc.)📷 photo.fillPurple
Videos (MP4, MOV, etc.)🎬 film.fillPink
Audio (MP3, WAV, etc.)🎵 music.noteOrange
PDFs📄 doc.richtext.fillRed
Archives (ZIP, TAR, etc.)📦 archivebox.fillBrown
Code (Swift, JS, etc.)</>Blue
Other📄 doc.fillBlue
Implementation: MenuBarView.swift:456-479 (source: Fiaxe/Views/MenuBarView.swift:456-479)

Quick Actions

Hover over any recent upload to reveal action buttons:
Copies the public URL to clipboard. Shows a green checkmark (✓) on success.
Downloads the file to your Downloads folder using a presigned URL.
Permanently removes the file from R2. Shows a confirmation dialog:
Delete "photo.jpg"?

This will permanently remove the file from R2
and cannot be undone.

[Delete]  [Cancel]
Source: MenuBarView.swift:353-454 (source: Fiaxe/Views/MenuBarView.swift:353-454)

Gear Menu Options

Click the ⚙️ gear icon in the top-right to access:

Switch Bucket

If you have multiple buckets configured:
SWITCH BUCKET
  cdn-assets        ✓
  backups
  user-uploads
Click a bucket name to switch. The current bucket has a checkmark (✓).
Switching buckets refreshes the main window browser to show the new bucket’s contents.

Other Menu Items

  • Quit r2 Vault — Closes the app entirely (⚠️ destructive action, shown in red)
Implementation: MenuBarView.swift:84-118 (source: Fiaxe/Views/MenuBarView.swift:84-118) When an upload completes, a green toast notification appears at the bottom:
┌─────────────────────────┐
│ ✓ Link copied!          │
│   photo.jpg             │
└─────────────────────────┘
The toast:
  • Auto-dismisses after 2.5 seconds
  • Truncates long filenames with middle ellipsis
  • Uses a glass effect background (macOS 26+) or green tint (older versions)
Source: MenuBarView.swift:42-65 (source: Fiaxe/Views/MenuBarView.swift:42-65)

Glass Effects (macOS 26+)

On macOS 26 and later, the menu bar widget uses Apple’s new Glass API:
  • Drop zone: .glassEffect(.regular) with accent color tint when targeted
  • Gear button: .glassEffect(.regular.interactive()) for hover states
  • Toast: .glassEffect(.regular.tint(.green)) for success feedback
  • Action buttons: .glass button style
On older macOS versions, the widget gracefully falls back to standard fills and borders. Implementation: MenuBarView.swift:299-349 (source: Fiaxe/Views/MenuBarView.swift:299-349)

Opening the Main Window

Click the arrow button next to “Recent Uploads” to open the main browser window. If the window was previously closed, r2Vault creates a new one automatically. Source: MenuBarView.swift:276-291 (source: Fiaxe/Views/MenuBarView.swift:276-291)

Next Steps