Skip to content

osteele/weft-status

Repository files navigation

Weft Status

Weft Status is a macOS menu bar companion for Weft. It shows live Weft activity from the local daemon subscription API without reading Weft's SQLite database directly.

The app is a status surface, not a scheduler. Weft remains the source of truth.

Goals

  • Show current Weft state at a glance: running jobs, queued jobs, rental run rate, autopilot state, and unprocessed results.
  • Support project-scoped views for active research work.
  • Surface failure and attention states without requiring a terminal.
  • Keep Weft as the source of truth; this app is a display and notification layer, not a scheduler.

Architecture

Weft daemon subscription API
        |
macOS SwiftUI app

The app subscribes to Weft's daemon activity resource over ~/.cache/weft/daemon.sock, normalizes the daemon payload into the app-facing model in Shared/, and renders that model in the menu bar popover.

SQLite remains an internal Weft implementation detail. This app does not query ~/.config/weft/jobs.db.

Features

  • Menu bar popover with live status from the Weft daemon.
  • 2x2 summary dashboard for rental count, run rate, running jobs, and unprocessed completed jobs.
  • Running job rows with project badges; clicking a job copies its wj... ID.
  • Unprocessed completed/failed job details when exposed by the daemon payload.
  • Rental section for cloud/rental instances, with run rate, uptime, queue depth, and running-job count.
  • Settings window for menu bar identity, menu bar counts, run rate display, and notification-rule preferences.
  • About window with app metadata.

On-prem hosts can run jobs without appearing in the rental section. The rental section describes cloud/rental launch records only.

Repository Status

This repository contains a pure SwiftPM macOS app:

  • Shared/: the compact app-facing activity model, fixture data, freshness rules, project selection, and priority signal selection.
  • WeftStatusApp/: the SwiftUI menu bar app, daemon client, settings, about window, and rendering surfaces.
  • App/: macOS app bundle metadata and icon source.
  • Checks/: lightweight model checks runnable without XCTest.

Fixture data remains as a fallback when the daemon socket is unavailable or a payload cannot be decoded.

Development

Build the app:

swift build

Run the app:

swift run WeftStatus

This runs the SwiftPM executable directly. For normal menu bar use, prefer the installed app bundle.

Build a macOS app bundle:

just app

Install it into ~/Applications:

just install-user

Install and launch it:

just launch

just launch rebuilds, installs, stops any currently running Weft Status, and opens the fresh installed app.

Run model checks:

swift run WeftStatusSharedChecks

The same commands are available through just build, just run, and just check.

Settings

Settings open in a separate window from the menu bar popover. Current settings:

  • Menu bar identity: icon, name, or both.
  • Independent menu bar items for running jobs, queued jobs, unprocessed results, and run rate.
  • Notification-rule preferences for failures, completed jobs, autopilot paused/stale, budget pressure, and queue depth.

Notification delivery is not implemented yet; the settings establish the user preferences for that surface.

About

macOS menu bar companion for Weft status

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors