Skip to content

Releases: eddieyzhan/Splitrail-Desktop-GUI

v1.3.1 — Auto-recover policy preview (live recovery unavailable)

Choose a tag to compare

@eddieyzhan eddieyzhan released this 23 Oct 10:53

This Mac development preview adds the Auto-recover policy and Limits → Test logic. Live Auto-recover is not implemented or enabled. The switch is explicitly unavailable. The computer-use tool rejected inspection of Codex for safety reasons, so its live Retry, Fast, Stop, error and approval controls could not be verified.

The synthetic policy covers capacity-only recovery, progressive waits and Retry-After, Normal-first retry, temporary Fast with a 120-second deadline, verified Stop/Normal/Continue sequencing, four attempts at most, one Continue, burst limits, and manual Stop/cutoff/draft/approval overrides. Unconfirmed actions never repeat automatically.

The app adds no recovery polling, observers, resident worker, permissions or persisted enabled setting. Existing usage and private sync remain available. No global Codex configuration is changed. The policy is scoped to an explicitly armed episode; a supported live adapter, event scheduler and crash-restoration handling still need implementation and end-to-end testing. See AUTO_RECOVERY.md.

Validation: 78 synthetic recovery tests, 35 existing mock Stop tests, native model tests, 352 Python tests (3 skipped), package self-checks and synthetic external-collector checks passed. The installed native UI ran all 12 in-app simulations successfully and displayed real usage. None of these tests validates live Codex recovery.

Built locally on Apple silicon; no GitHub Actions or Codemagic minutes used. Mac app is ad-hoc signed, not notarized. The Python download retains the Qt interface and does not include this native Mac preview. This prerelease does not replace the stable 1.3.0 Mac download or the cross-platform latest release.

1.3.0 — Native Mac app

Choose a tag to compare

@eddieyzhan eddieyzhan released this 23 Oct 10:25

Splitrail 1.3.0 replaces the resident Python/Qt Mac app with native Swift/AppKit. It lives in the menu bar with no Dock icon and keeps accounting and private GitHub sync in disposable workers.

  • Compact 450 × 370 dashboard: regular text, one timestamp, shortened model names, centered date selection, no graph or redundant labels/arrows/reset count. Dashboard, Limits and Settings remain.
  • Incremental log parsing, batched file notifications, no hidden unarmed quota polling, and no UI countdown loop. Settings preserve pricing, themes, import/export and private sync preferences.
  • Routine quota reads avoid launching Codex. Initial/hourly reset-date checks and fallback still use a read-only helper.
  • The Mac cutoff requests generation Stop instead of terminating an engine. It requires Accessibility and a compatible exposed Stop control. It is one-shot and does not protect hidden/background/CLI turns. Live interruption remains unverified; 35 mock-only adapter tests pass. See the included TURN_INTERRUPTION.md.

On the same Apple silicon Mac, physical footprint measured 28.2 MiB for the native idle dashboard versus 105.0 MiB for 1.2.6. After opening Settings, the app used 37.3 MiB and retained 35.3 MiB hidden. Process-tree peaks were 47.5 MiB for routine refresh, 67.4 MiB for private sync, and 159.9 MiB for the initial reset-date query. These are sampled observations, not memory guarantees or battery-life estimates. Full methods and scheduling are in MACOS.md.

Validation: 352 Python tests completed (3 skipped), native model tests, 35 mock Stop tests, bundle and external-collector checks. The installed app displayed real usage/quota and synced three devices. Built and tested locally; no GitHub Actions or Codemagic run was started.

Download the arm64 ZIP for Apple silicon Macs on macOS 14+. The app has a local ad-hoc signature and is not notarized. It does not install Xcode or Command Line Tools. The Python .pyz retains the Qt interface for other supported platforms. Windows/Linux binaries remain in their earlier releases.

Verify downloads with SHA256SUMS.txt. Existing local data and private repository settings are retained.

Splitrail 1.2.6 — compact UI and lower Mac memory use

Choose a tag to compare

@eddieyzhan eddieyzhan released this 23 Oct 08:24

The Mac dashboard now uses less memory and fits into a 720 × 440 window. Navigation is icon-only; redundant headings and metric labels are removed without replacing them with decorative icons. Values retain accessible descriptions and hover details. The calendar button is centered, and settings, tables, and dialogs fit smaller windows.

macOS now defaults to Qt's software 2D renderer to avoid unnecessary Metal allocations. Inactive pages and popup contents are created only when opened. The app uses the Mac system font directly and avoids loading test-only modules in normal use. Dashboard age labels update every 15 seconds; the Quota page and an armed cutoff keep their one-second updates. Private sync, menu-bar mode, quota polling, and cutoff protection remain available.

Local synthetic profiling at the old and new default window sizes measured 212 MiB before and 81–87 MiB after, with 70–71 MiB while hidden. Four close/reopen cycles stabilized at 87 MiB visible and 71 MiB hidden. These are macOS physical-footprint measurements, not virtual memory or RSS; results vary with data, display scale, window size, and opened pages. The reproducible script is scripts/profile_macos.py. Set QT_QUICK_BACKEND=rhi to explicitly choose hardware rendering.

Validation: 267 tests completed successfully with 3 platform skips, source/native self-checks, four native UI smoke checks, collector/helper/All tools payload checks, synthetic visual checks at multiple sizes and both themes, and a live Mac installation with usage, quota, banked resets, and private GitHub sync verified. Built locally; no GitHub Actions or Codemagic runs.

Downloads: Apple-silicon Mac app (macOS 14+) and Python zipapp. Windows/Linux native downloads remain in v1.2.3. This Mac/source release is not marked as the latest cross-platform binary release. The Mac app is ad-hoc signed, not notarized. SHA256SUMS.txt verifies both downloads.

Existing settings and history are preserved. Optional external tools remain separate: quota-axi for weekly quota, Codex CLI for banked resets, and signed-in GitHub CLI for private sync.

Splitrail Desktop 1.2.5 — macOS menu bar and quieter background use

Choose a tag to compare

@eddieyzhan eddieyzhan released this 23 Oct 06:37

Splitrail now runs in the macOS menu bar without a Dock icon. Close the dashboard to keep private GitHub sync and any armed cutoff running; use the menu-bar icon to reopen it, refresh usage, sync, or quit.

Hidden windows release the QML dashboard, stop countdown updates and activity scans, and pause automatic dashboard collection. Quota checks back off to five minutes while hidden and unarmed. An armed cutoff retains its one-minute quota checks, one-second stale-data watchdog, and ten-second process scan. Helper processes now block while waiting instead of polling twenty times a second. Long-interval timers can coalesce wakeups.

Includes all 1.2.4 changes: compact layouts, disposable collectors, on-demand hourly detail, and preserved history. Existing private sync settings and data remain compatible.

Validation: 259 tests ran successfully (3 platform-specific skips), source and native self-checks, four native UI smoke tests, external collector/helper/All tools sync checks, and a live Apple-silicon install with usage, quota, banked resets, and private sync verified. Built locally with no GitHub Actions or Codemagic runs.

Downloads: native Apple-silicon Mac app (macOS 14+) and Python zipapp. Windows/Linux native downloads remain in the 1.2.3 release; this Mac/source release is not marked as the latest cross-platform binary release. Mac bundle is ad-hoc signed and not notarized. Verify downloads with SHA256SUMS.txt.

Weekly quota needs the separate quota-axi tool, banked resets need Codex CLI, and GitHub sync needs a signed-in GitHub CLI. Native Python/Qt runtimes are bundled; Xcode and developer tools are not required to run the app.

1.2.4 — macOS and source

Choose a tag to compare

@eddieyzhan eddieyzhan released this 23 Oct 06:08

macOS Apple silicon build and Python source download from commit e587e9b.

Changes since 1.2.3:

  • Gradual compact layouts for smaller windows, down to the compact weekly quota view.
  • Disposable collection helpers release working memory after refreshes.
  • Hourly chart details load on demand; saved usage history is preserved.
  • Usage totals refresh every five minutes during activity and hourly while idle. Quota refreshes every minute; automatic sync uses one hour, backing off to three hours when unchanged.

Validation: 255 synthetic tests passed (3 platform-specific skips), source self-check, native self-check, four native screen smoke checks, and native collector/background-worker/sync-payload checks. Built and tested locally on Apple silicon; no GitHub Actions run was used.

The macOS ZIP includes Python and Qt. GitHub device sync requires GitHub CLI (gh) signed into your private usage repository. Weekly quota display requires quota-axi on PATH; banked reset details additionally use Codex CLI. These external tools are not bundled. The app is ad-hoc signed, not Developer ID signed or notarized.

This release contains macOS and source downloads. Windows and Linux native downloads remain available in v1.2.3.

Splitrail Desktop GUI 1.2.3 - Reliable collector sync and automatic pricing

Choose a tag to compare

@eddieyzhan eddieyzhan released this 30 Sep 05:14

Splitrail Desktop GUI 1.2.3 fixes All tools sync asking for a newer collector even when Splitrail is installed, and adds automatic model-price updates.

  • Windows collector discovery searches PATH explicitly and skips the GUI's own Splitrail.exe. Version banners on stderr or with colour formatting are supported.
  • GPT-6.1 Sol uses the published standard rates: $2 input, $0.10 cache reads, $2.50 cache writes and $10 output per million tokens, with long-context rates when request-level data is available.
  • Automatic pricing checks the shared public catalogue daily, validates downloads and caches them for offline use. Future model rates can be added there without another app release. Custom prices keep priority. Disable the checks under Settings → Model pricing if preferred. Price requests contain no usage or account credentials.
  • Native Linux apps restore the system library environment when launching external usage, quota and GitHub tools, while retaining discovery of common per-user installation locations.
  • Includes the dedicated Limits page, local Codex process monitoring, weekly usage cutoffs and reset protection added since 1.1.4. Cutoffs start off on each launch.

Downloads: native Windows x86_64, Linux x86_64 and macOS ARM64 apps, the cross-platform Python .pyz and SHA256SUMS.txt. Extract complete native bundles. See the install guide.

Validation: 208 synthetic tests on Windows, Linux and macOS, source archive self-check/UI checks, and native dashboard, onboarding, quota, Limits and external collector/All tools payload checks. Windows and Linux were built locally; only macOS used the targeted GitHub workflow.

Splitrail Desktop GUI 1.1.4 - Reliable device sync

Choose a tag to compare

@eddieyzhan eddieyzhan released this 26 Sep 06:26

Splitrail Desktop GUI 1.1.4 fixes a local usage-validation bug that could stop the entire device sync with “Unable to sync. Check your connection and local usage tools.”

  • Inconsistent optional hourly reasoning counts no longer block sync. Daily and model totals are preserved; the invalid hourly detail is omitted and the chart explains any coverage gap.
  • Other local validation failures now show a specific error instead of suggesting a connection problem.
  • Linux desktop launches discover usage tools installed in common per-user locations.
  • Settings shows version 1.1.4.

Downloads include native Windows x86_64, macOS ARM64 and Linux x86_64 apps, the cross-platform Python .pyz, and SHA256SUMS.txt. Keep each extracted native bundle together. The native builds are unsigned; the Mac app is not notarized. See the install guide.

Validation: the 167-test suite, source archive self-check and dashboard/onboarding smoke checks, and native build and smoke checks on Windows, macOS and Linux. The repaired application also completed a live private-repository sync reporting “Up to date” across two devices. Release builds run manually; pushing code does not start builds automatically.

Splitrail Desktop GUI 1.1.3 - Windows sync fixes

Choose a tag to compare

@eddieyzhan eddieyzhan released this 25 Sep 03:01

Splitrail Desktop GUI 1.1.3 fixes the generic "Unable to sync" error when All tools is selected and the separate Splitrail collector is missing. The app now explains how to install the collector or select Codex-only sync. Collector failures are also handled during automatic sync without discarding saved device totals.

  • Windows desktop launches discover tools installed in the user's .local\bin, .cargo\bin and AppData\Roaming\npm directories.
  • Settings shows the full application version and explains each sync source's requirements.
  • Includes the latest quota dashboard: weekly usage pace, refresh age, banked reset expiries and one-minute quota refresh.

Downloads: native Windows x86_64 ZIP, source-only Python .pyz, and SHA256SUMS.txt. Extract the entire Windows ZIP and open Splitrail\Splitrail.exe. Codex tracking works without the separate collector; All tools tracking and sync require Splitrail 3.9.1 or newer.

Validation: 160 local tests, source archive self-check and dashboard/onboarding smoke checks, and native Windows build checks. No GitHub Actions or Codemagic builds were used. This release's native build is Windows only; macOS/Linux users can use the Python download, or the native bundles from v1.1.2.

The installed Windows executable also passed a live upload/download sync against an existing private repository; the live dashboard and quota refresh passed with the normal application event loop.

Splitrail Desktop GUI 1.1.2 — Windows, macOS and Linux

Choose a tag to compare

@eddieyzhan eddieyzhan released this 22 Sep 00:21

Splitrail Desktop GUI 1.1.2

Native downloads for Windows, Linux and Apple silicon Macs. Python and the UI dependencies are included in these archives.

Download and install

Your computer Download Install / launch
Windows 10/11, Intel/AMD 64-bit Windows ZIP Right-click → Extract All, open Splitrail, then double-click Splitrail.exe. Keep the whole folder together.
Apple silicon Mac (M1 or newer), macOS 14+ Mac ZIP Unzip and drag Splitrail.app to Applications.
Linux, Intel/AMD 64-bit, Ubuntu 22.04+ or compatible Linux archive Extract, then run ./Splitrail/Splitrail. Keep the whole folder together.
Python installation / Intel Mac Source-only zipapp Follow the platform-specific Python commands in the install guide.

See the full install guide for checksums, Linux libraries, updates and removal. These community builds are unsigned; the Mac app has a local ad-hoc signature but is not notarized. The guide explains the first-open security prompts. Intel macOS and Windows ARM were not native-tested.

On first launch, choose Use on this device for local Codex tracking. GitHub is optional. Other AI tools need the separate Splitrail collector.

Fixes

  • Fix Windows startup when Qt Quick cannot find its controls plugin dependencies.
  • Keep Windows refresh commands from flashing console windows.
  • Find Homebrew and common user-installed tools when opening the Mac app from Finder.
  • Exercise hourly usage and timezone fixtures on Windows instead of skipping them.
  • Include native runtimes, license notices and SHA-256 checksums. Exclude unused Qt add-ons and development tools from downloads.

Validation and privacy

  • Windows 11 x64: 148 tests, source archive self-check, native dashboard/onboarding launch checks and a visual check with synthetic data.
  • Ubuntu 22.04 under WSLg: 148 tests and packaged launch checks.
  • Apple silicon macOS: 148 tests, zipapp self-check and both native app launch checks in one Codemagic run (1 minute 7 seconds). Tested application/build commit: 5e0f6f6; the subsequent change only sanitizes Linux archive ownership metadata.
  • No GitHub Actions runs. Codemagic is manual-only with no publishing credentials or automatic triggers.
  • Release files were checked for personal paths/account details. Linux archive owner metadata is stripped. Only application code, dependencies, license notices and synthetic sample data are shipped; no credentials, usage logs or local settings are included.

The .pyz requires Python 3.11+ plus PySide6 and ijson installed separately. Native archives require no Python setup.

Splitrail Desktop 1.1.1 — Hourly activity

Choose a tag to compare

@eddieyzhan eddieyzhan released this 21 Sep 23:44

Choose Today, Week, Month, Year or All time directly from the dashboard. The arrows and Alt+Left/Right cycle through the presets.

  • Today and custom single-day ranges show 24 hourly token and cost bars.
  • Hourly totals are supported for the built-in Codex reader, the Splitrail collector and private device sync. Older daily-only snapshots remain in totals; a small notification explains missing hourly detail.
  • The collector streams normalized statistics locally and discards request identifiers, titles and other metadata. Only numeric daily/hourly totals and approved identifiers can enter sync snapshots.

Dependency update: install the streaming dependency in the same environment as the app:

python -m pip install "PySide6>=6.8,<7" "ijson>=3.4,<4"

Python 3.11+ is required. The zipapp contains application code and QML resources; dependencies are installed separately. See the README for first-time setup.

Validation: 146 automated tests, packaged dashboard/onboarding smoke checks, both themes at normal and compact window sizes, a wheel build, and a local collector check confirming hourly and daily token totals reconcile. Linux tested; Windows and macOS remain unverified.