From 5efd34e89115c3480c383a2e95cfc4e67e490331 Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:18:44 -0700 Subject: [PATCH 01/12] Redesign README with visual polish and brand colors Incorporate the Graftery icon SVG, use teal/coral color scheme from the icon throughout via shields.io badges, add collapsible sections for troubleshooting and CLI flags, improve scannability with tables and visual hierarchy. Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 411 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 225 insertions(+), 186 deletions(-) diff --git a/README.md b/README.md index 761ee85..9bcf501 100644 --- a/README.md +++ b/README.md @@ -1,81 +1,113 @@ -# Graftery +

+ Graftery +

-A lightweight macOS app and CLI that connects GitHub Actions to ephemeral [Tart](https://tart.run) macOS VMs using the [actions/scaleset](https://github.com/actions/scaleset) protocol. +

Graftery

-## What It Does +

+ Ephemeral macOS VMs for GitHub Actions — powered by Tart +

-Graftery bridges GitHub Actions with ephemeral macOS virtual machines running on Apple hardware. It uses the same scale-set protocol that [Actions Runner Controller (ARC)](https://github.com/actions/actions-runner-controller) uses inside Kubernetes, but runs directly on a Mac host. +

+ Platform + Protocol + Virtualization + License +

-The app sits in your menu bar and: +--- -- Long-polls GitHub for pending workflow jobs -- Clones a Tart base VM image for each job -- Injects JIT runner configuration into the VM via a shared directory -- Cleans up the VM automatically after the job completes -- Recovers from crashes by detecting and removing orphaned VMs on startup +
- +It ships as both a **menu bar app** and a **standalone CLI**. + +
+ + + + + + +
+ +### + + + +> **How it works** — Graftery long-polls GitHub for pending jobs, clones a Tart base VM for each one, injects JIT runner config, and tears the VM down when the job finishes. On startup it detects and removes any orphaned VMs left behind by crashes. + +
+ +
## Requirements -- **macOS 14 (Sonoma)** or later -- **[Tart](https://tart.run)** installed and available in PATH (`brew install cirruslabs/cli/tart`) -- **GitHub App** credentials (Client ID, Installation ID, private key PEM) **or** a Personal Access Token with appropriate scopes -- A **Tart base VM image** with the GitHub Actions runner binary and a startup script (see [Base VM Image Requirements](#base-vm-image-requirements)) +| Requirement | Details | +|:---|:---| +| ![macOS](https://img.shields.io/badge/-macOS_14+-0e6878?style=flat-square&logo=apple&logoColor=white) | Sonoma or later | +| ![Tart](https://img.shields.io/badge/-Tart-094858?style=flat-square&logoColor=white) | `brew install cirruslabs/cli/tart` | +| ![Auth](https://img.shields.io/badge/-GitHub_Auth-c94a30?style=flat-square&logo=github&logoColor=white) | GitHub App credentials **or** a Personal Access Token | +| ![VM](https://img.shields.io/badge/-Base_VM-1a8090?style=flat-square&logoColor=white) | Tart image with the Actions runner binary & startup script ([details](#base-vm-image-requirements)) | + +
## Installation -### From DMG (recommended) +### From DMG recommended -Download the latest DMG from the releases page, open it, and drag **Graftery** to your Applications folder. +Download the latest DMG from the [Releases](https://github.com/diranged/graftery/releases) page, open it, and drag **Graftery** to your Applications folder. -### From source +### From Source ```bash git clone https://github.com/diranged/graftery.git cd graftery -make install +make install # builds .app bundle → /Applications/Graftery.app ``` -This builds the full `.app` bundle (requires Xcode command-line tools and Swift) and copies it to `/Applications/Graftery.app`. +> Requires Xcode command-line tools and Swift. + +
## Quick Start -1. **Launch Graftery** from your Applications folder (or Spotlight). -2. On first launch, the **configuration wizard** guides you through entering your GitHub credentials, selecting a base VM image, and setting runner limits. -3. The configuration is saved to `~/Library/Application Support/graftery/config.yaml`. -4. The runner connects to GitHub and begins listening for jobs automatically. -5. The menu bar icon shows the current runner status (e.g., `ARC: 1/2` for 1 busy out of 2 total runners). +``` +1. Launch Graftery from Applications (or Spotlight) +2. Walk through the configuration wizard → credentials, base VM, runner limits +3. Config is saved to ~/Library/Application Support/graftery/config.yaml +4. The runner connects to GitHub and begins listening for jobs +5. Menu bar shows live status (e.g. ARC: 1/2 → 1 busy / 2 total) +``` + +
## Configuration -### Config file location - -``` -~/Library/Application Support/graftery/config.yaml -``` +
+   ~/Library/Application Support/graftery/config.yaml -A default config file is created on first launch. You can edit it through the app (menu bar -> Open Config File) or with any text editor. +A default config is created on first launch. Open it from the menu bar (**Open Config File**) or with any text editor. -### Config fields +
-```yaml -# GitHub org or repo URL for scale set registration -url: https://github.com/your-org +
-# Scale set name (also the runs-on: label in workflows) -name: macos-runner +### Full config reference -# --- Authentication (choose one) --- +```yaml +# ── GitHub target ──────────────────────────────────────── +url: https://github.com/your-org # org or repo URL +name: macos-runner # scale set name (= runs-on: label) +# ── Authentication (choose one) ───────────────────────── # Option A: GitHub App -app_client_id: "Iv1.abc123" -app_installation_id: 12345678 -app_private_key_path: /path/to/private-key.pem +app_client_id: "Iv1.abc123" +app_installation_id: 12345678 +app_private_key_path: /path/to/private-key.pem # Or inline: # app_private_key: | # -----BEGIN RSA PRIVATE KEY----- @@ -84,60 +116,41 @@ app_private_key_path: /path/to/private-key.pem # Option B: Personal Access Token # token: ghp_xxxxxxxxxxxx -# --- Runner settings --- - -# Tart VM image to clone for each runner -base_image: ghcr.io/cirruslabs/macos-runner:sonoma - -# Maximum concurrent VMs (Apple allows max 2 macOS VMs per host) -max_runners: 2 - -# Warm pool size (VMs kept ready before jobs arrive) -min_runners: 0 - -# Additional labels for workflow targeting (defaults to the scale set name) -# labels: +# ── Runner settings ────────────────────────────────────── +base_image: ghcr.io/cirruslabs/macos-runner:sonoma +max_runners: 2 # Apple allows max 2 macOS VMs per host +min_runners: 0 # warm-pool size +runner_group: default +runner_prefix: runner # used for orphan detection on startup +# labels: # defaults to scale set name # - macos # - sonoma -# GitHub runner group name -runner_group: default - -# VM name prefix (used for orphan detection on startup) -runner_prefix: runner - -# --- Provisioning --- - -# Path to tart binary (default: look up in PATH) +# ── Provisioning ───────────────────────────────────────── # tart_path: /opt/homebrew/bin/tart - -# Custom scripts directory for image baking and hooks # provisioning: # scripts_dir: /path/to/custom/scripts # skip_builtin_scripts: false -# prepared_image_name: "" # auto-generated from base_image - -# --- Logging --- +# prepared_image_name: "" -# Log level: debug, info, warn, error -log_level: info - -# Log format: text or json -log_format: text +# ── Logging ────────────────────────────────────────────── +log_level: info # debug | info | warn | error +log_format: text # text | json ``` -### Editing via the UI - -From the menu bar dropdown: +### Editing via the menu bar -- **Open Config File** -- opens the YAML file in your default editor -- **Reload Config** -- re-reads the config file and applies changes +| Action | What it does | +|:---|:---| +| **Open Config File** | Opens the YAML in your default editor | +| **Reload Config** | Re-reads and applies changes live | +| **Open Logs** | Opens `~/Library/Logs/graftery/graftery.log` | -Logs are written to `~/Library/Logs/graftery/graftery.log` and can be opened from the menu bar via **Open Logs**. +
## CLI Usage -The Go binary can also be used as a standalone CLI without the macOS app wrapper: +The Go binary works as a standalone CLI — no macOS app wrapper required. ```bash # Using a config file @@ -147,13 +160,11 @@ graftery --config /path/to/config.yaml graftery \ --url https://github.com/your-org \ --name macos-runner \ - --app-client-id Iv1.abc123 \ + --app-client-id Iv1.abc123 \ --app-installation-id 12345678 \ --app-private-key-path /path/to/private-key.pem \ --base-image ghcr.io/cirruslabs/macos-runner:sonoma \ - --max-runners 2 \ - --min-runners 0 \ - --log-level info + --max-runners 2 # Using a PAT instead of a GitHub App graftery \ @@ -163,70 +174,76 @@ graftery \ --base-image ghcr.io/cirruslabs/macos-runner:sonoma ``` -When `--config` is provided, the file is loaded first and any additional flags override the file values. - -### All flags - -| Flag | Required | Default | Description | -|---|---|---|---| -| `--config` | no | | Path to YAML config file | -| `--url` | yes | | GitHub org or repo URL for scale set registration | -| `--name` | yes | | Scale set name (also the `runs-on:` label) | -| `--app-client-id` | * | | GitHub App Client ID | -| `--app-installation-id` | * | | GitHub App Installation ID | -| `--app-private-key-path` | * | | Path to PEM file | -| `--app-private-key` | * | | PEM contents inline (alternative to path) | -| `--token` | * | | Personal access token (alternative to GitHub App) | -| `--base-image` | no | `ghcr.io/cirruslabs/macos-runner:sonoma` | Tart VM image to clone for each runner | -| `--max-runners` | no | `2` | Maximum concurrent VMs | -| `--min-runners` | no | `0` | Warm pool size | -| `--labels` | no | (same as `--name`) | Additional labels for workflow targeting | -| `--runner-group` | no | `default` | GitHub runner group name | -| `--runner-prefix` | no | `runner` | VM name prefix (used for orphan detection) | -| `--log-level` | no | `info` | `debug`, `info`, `warn`, `error` | -| `--log-format` | no | `text` | `text` or `json` | - -\* Either GitHub App credentials (`--app-client-id`, `--app-installation-id`, and `--app-private-key-path` or `--app-private-key`) **or** `--token` is required. +> When `--config` is provided, the file is loaded first and any additional flags override its values. + +
+   expand for full table + +
+ +| Flag | Req | Default | Description | +|:---|:---:|:---|:---| +| `--config` | | | Path to YAML config file | +| `--url` | **yes** | | GitHub org or repo URL | +| `--name` | **yes** | | Scale set name (`runs-on:` label) | +| `--app-client-id` | \* | | GitHub App Client ID | +| `--app-installation-id` | \* | | GitHub App Installation ID | +| `--app-private-key-path` | \* | | Path to PEM file | +| `--app-private-key` | \* | | PEM contents inline | +| `--token` | \* | | Personal access token | +| `--base-image` | | `ghcr.io/cirruslabs/macos-runner:sonoma` | Tart VM image | +| `--max-runners` | | `2` | Max concurrent VMs | +| `--min-runners` | | `0` | Warm pool size | +| `--labels` | | _(same as `--name`)_ | Additional labels | +| `--runner-group` | | `default` | Runner group name | +| `--runner-prefix` | | `runner` | VM name prefix | +| `--log-level` | | `info` | `debug` / `info` / `warn` / `error` | +| `--log-format` | | `text` | `text` / `json` | + +\* Provide **either** GitHub App credentials **or** `--token`. + +
+ +
## Image Provisioning -Graftery automatically prepares ("bakes") VM images from a base Tart image. On first run (or when scripts change), it: +Graftery automatically **bakes** a prepared VM image from your base Tart image. The first run (or whenever scripts change) triggers provisioning: + +``` + Base image ──▶ Clone ──▶ Boot ──▶ Run bake.d/* scripts ──▶ Save prepared image + (lexicographic order) +``` -1. Clones the base image (e.g., `ghcr.io/cirruslabs/macos-runner:sonoma`) -2. Boots the clone and waits for the guest agent -3. Runs provisioning scripts from `bake.d/` in lexicographic order via `tart exec` -4. Shuts down the VM and saves it as a local "prepared" image -5. Caches a hash of all script contents — subsequent runs skip provisioning if nothing changed +A content hash of all scripts is cached — subsequent runs skip provisioning if nothing changed. ### Built-in scripts -The following scripts are embedded in the binary and run by default: - | Script | Purpose | -|--------|---------| -| `01-startup-script.sh` | Installs `/usr/local/bin/arc-runner-startup.sh` — reads JIT config from shared mount, starts the runner, shuts down when done | -| `02-setup-info.py` | Generates `~/actions-runner/.setup_info` — shows VM info (OS, Xcode, Node, etc.) in the GitHub Actions "Set up job" step | -| `03-runner-hooks.sh` | Installs pre/post job hooks using GitHub Actions' native `ACTIONS_RUNNER_HOOK_JOB_STARTED` / `ACTIONS_RUNNER_HOOK_JOB_COMPLETED` | +|:---|:---| +| ![01](https://img.shields.io/badge/01-startup--script.sh-094858?style=flat-square) | Installs `arc-runner-startup.sh` — reads JIT config, starts runner, shuts down when done | +| ![02](https://img.shields.io/badge/02-setup--info.py-094858?style=flat-square) | Generates `.setup_info` — VM info shown in GitHub Actions "Set up job" step | +| ![03](https://img.shields.io/badge/03-runner--hooks.sh-094858?style=flat-square) | Installs pre/post job hooks via `ACTIONS_RUNNER_HOOK_JOB_STARTED` / `COMPLETED` | ### Custom provisioning scripts -Add your own scripts to the user scripts directory: +Drop your own scripts into the user scripts directory: ``` ~/Library/Application Support/graftery/scripts/ bake.d/ - 50-install-tools.sh # brew install jq terraform - 60-setup-xcode.sh # sudo xcode-select -s /Applications/Xcode_16.1.app + 50-install-tools.sh # brew install jq terraform + 60-setup-xcode.sh # sudo xcode-select -s ... hooks/ pre.d/ - 50-start-metrics.sh # custom pre-job hook + 50-start-metrics.sh # custom pre-job hook post.d/ - 50-emit-metrics.sh # custom post-job hook + 50-emit-metrics.sh # custom post-job hook ``` -**Merge behavior:** User scripts are merged with built-in scripts. Scripts with the same filename override the built-in version. Scripts are executed in lexicographic order, so `50-*` runs after `01-*`, `02-*`, `03-*`. +> **Merge behavior:** User scripts merge with built-ins. Same-name files override. Execution is lexicographic (`50-*` runs after `01-*` through `03-*`). -Override the scripts directory with `--scripts-dir /path/to/scripts` or in config: +Override the directory: ```yaml provisioning: @@ -236,35 +253,36 @@ provisioning: ### Forcing reprovisioning ```bash -# Force a fresh bake (e.g., after updating scripts) -graftery --reprovision --config config.yaml - -# Skip all built-in scripts (only run user scripts) -graftery --skip-builtin-scripts --config config.yaml +graftery --reprovision --config config.yaml # force a fresh bake +graftery --skip-builtin-scripts --config config.yaml # only run user scripts ``` ### Pre/post job hooks -Hooks use GitHub Actions' native runner hook mechanism. They show up in the job UI as collapsible sections: +Hooks use GitHub Actions' native runner hook mechanism and appear in the job UI as collapsible sections: -- **Pre-job hooks** (`hooks/pre.d/*.sh`) — run before each job starts, visible in "Set up runner" -- **Post-job hooks** (`hooks/post.d/*.sh`) — run after each job completes, visible in "Complete runner" +| Hook type | Location | Visible in | +|:---|:---|:---| +| **Pre-job** | `hooks/pre.d/*.sh` | "Set up runner" | +| **Post-job** | `hooks/post.d/*.sh` | "Complete runner" | -Hooks receive standard GitHub Actions environment variables (`GITHUB_REPOSITORY`, `GITHUB_RUN_ID`, etc.). +Hooks receive standard Actions environment variables (`GITHUB_REPOSITORY`, `GITHUB_RUN_ID`, etc.). ### Base VM image requirements The base Tart image must include: -1. **GitHub Actions runner binary** at `~/actions-runner/` (all `cirruslabs/macos-runner` images include this) -2. **Tart guest agent** (all non-vanilla Cirrus Labs images include this) -3. **python3** (required by the setup-info script) +| Component | Note | +|:---|:---| +| **GitHub Actions runner** | At `~/actions-runner/` — all `cirruslabs/macos-runner` images include this | +| **Tart guest agent** | All non-vanilla Cirrus Labs images include this | +| **python3** | Required by the setup-info script | -The default `ghcr.io/cirruslabs/macos-runner:sonoma` image satisfies all requirements. +> The default `ghcr.io/cirruslabs/macos-runner:sonoma` satisfies all requirements. -### Quick example: adding a tool to the image +### Example: adding a tool to the baked image -Need `pod` (CocoaPods) available for your builds? Create a bake script: +Need CocoaPods for your builds? Create a bake script: ```bash # ~/Library/Application Support/graftery/scripts/bake.d/50-install-cocoapods.sh @@ -276,92 +294,113 @@ gem install cocoapods sudo ln -sf "$(rbenv which pod)" /usr/local/bin/pod ``` -Restart the runner — it detects the new script, reprovisions the image, and every future VM has `pod` available. +Restart the runner — it detects the new script, reprovisions, and every future VM ships with `pod`. ### More examples -See the [`examples/`](examples/) directory for complete setups: +See the [`examples/`](examples/) directory: | Example | Description | -|---------|-------------| +|:---|:---| | [iOS / React Native](examples/ios-react-native/) | CocoaPods, ccache, Expo prebuild, workflow caching for Pods and DerivedData | -Each example includes bake scripts to copy into your scripts directory and a recommended workflow configuration. +
## Troubleshooting -### `tart` not found +
+ -The `tart` binary must be in your PATH, or specify its location explicitly: +The `tart` binary must be in your PATH: ```bash brew install cirruslabs/cli/tart -# Or specify the path directly: +# Or specify explicitly: graftery --tart-path /opt/homebrew/bin/tart --config config.yaml ``` -In the config file: ```yaml tart_path: /opt/homebrew/bin/tart ``` -### Authentication errors +
-- **"either GitHub App credentials or --token is required"** -- You must provide either a GitHub App configuration (client ID, installation ID, and private key) or a personal access token. You cannot omit both. -- **"specify either GitHub App credentials or --token, not both"** -- Use one authentication method, not both simultaneously. -- **Private key errors** -- Ensure the PEM file path is correct and readable. If using `app_private_key` inline in YAML, use a literal block scalar (`|`) to preserve newlines. +
+ -### VM cleanup / orphaned VMs +| Error | Fix | +|:---|:---| +| _"either GitHub App credentials or --token is required"_ | Provide one auth method | +| _"specify either GitHub App credentials or --token, not both"_ | Use only one method | +| Private key errors | Check PEM path is correct and readable. For inline YAML, use `\|` block scalar | -On startup, the app automatically detects and removes any VMs whose names start with the configured runner prefix (default: `runner-`). If you need to manually clean up: +
-```bash -# List all Tart VMs -tart list +
+ + +On startup, Graftery auto-removes VMs matching the runner prefix. To clean up manually: -# Stop and delete a specific runner VM -tart stop runner-abc12345 -tart delete runner-abc12345 +```bash +tart list # list all VMs +tart stop runner-abc12345 # stop +tart delete runner-abc12345 # delete ``` -### Scale set registration fails +
-- Verify the `--url` points to a valid GitHub organization or repository. -- Ensure your GitHub App is installed on the target org/repo with the required permissions, or that your PAT has the `admin:org` scope (for org-level runners) or `repo` scope (for repo-level runners). +
+ -### Max runners limit +- Verify `--url` points to a valid GitHub org or repo +- Ensure your GitHub App has the required permissions, or your PAT has `admin:org` (org-level) / `repo` (repo-level) scope -Apple's macOS virtualization framework allows a maximum of 2 concurrent macOS VMs per host. The default `max_runners: 2` reflects this limit. Setting it higher may cause VM creation failures. +
-### Logs +
+ -- **GUI app**: `~/Library/Logs/graftery/graftery.log` (also accessible via menu bar -> Open Logs) -- **CLI**: Logs are written to stderr by default. Use `--log-level debug` for verbose output. +Apple's virtualization framework allows **max 2 concurrent macOS VMs per host**. The default `max_runners: 2` reflects this. Setting it higher may cause VM creation failures. -## Building from Source +
-Requires Go 1.26+ and Xcode command-line tools (for the Swift UI and code signing). +
+ -```bash -# Build just the CLI binary (no CGO, no Swift) -make build-cli +| Mode | Location | +|:---|:---| +| **GUI** | `~/Library/Logs/graftery/graftery.log` (menu bar → Open Logs) | +| **CLI** | stderr — use `--log-level debug` for verbose output | + +
-# Build the full macOS .app bundle (CLI + Swift UI) -make build-app +
-# Create a drag-and-drop DMG installer -make build-dmg +## Building from Source -# Install to /Applications -make install +Requires **Go 1.26+** and **Xcode command-line tools** (for Swift UI and code signing). -# Clean build artifacts -make clean +```bash +make build-cli # CLI binary only (no CGO, no Swift) +make build-app # full macOS .app bundle +make build-dmg # drag-and-drop DMG installer +make install # → /Applications/Graftery.app +make clean # remove build artifacts ``` -The built artifacts are placed in the `build/` directory. +All artifacts are placed in the `build/` directory. + +
## License TBD + +
+ +--- + +

+ Built for Apple silicon  ·  Powered by Tart  ·  Speaks actions/scaleset +

From dfd85b0eb313a19e50bd81709cbf00484ff841d6 Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:21:35 -0700 Subject: [PATCH 02/12] Fix README icon: use PNG instead of SVG for GitHub rendering GitHub's markdown sanitizer doesn't reliably render SVGs in tags. Convert icon.svg to a PNG for the header image. Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 2 +- docs/icon.png | Bin 0 -> 17617 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/icon.png diff --git a/README.md b/README.md index 9bcf501..0498987 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- Graftery + Graftery

Graftery

diff --git a/docs/icon.png b/docs/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c4633854ba8e8b6bfdd10e67ec7870769a796c GIT binary patch literal 17617 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 literal 0 HcmV?d00001 From ecf4ef84d9f5bea9fbb8d9b2a2b7b9d3f2cf8bcf Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:27:46 -0700 Subject: [PATCH 03/12] Fix "How it works" callout: use GitHub note admonition instead of table The table-with-empty-column approach rendered with awkward indentation. Replace with GitHub's native [!NOTE] blockquote syntax. Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 0498987..972f066 100644 --- a/README.md +++ b/README.md @@ -27,20 +27,8 @@ It ships as both a **menu bar app** and a **standalone CLI**.
- - - - - -
- -### - - - -> **How it works** — Graftery long-polls GitHub for pending jobs, clones a Tart base VM for each one, injects JIT runner config, and tears the VM down when the job finishes. On startup it detects and removes any orphaned VMs left behind by crashes. - -
+> [!NOTE] +> **How it works** — Graftery long-polls GitHub for pending jobs, clones a Tart base VM for each one, injects JIT runner config, and tears the VM down when the job finishes. On startup it detects and removes any orphaned VMs left behind by crashes.
From 7cf75d3fa4b095a3b7c23858189fa8c6a190ea12 Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:31:32 -0700 Subject: [PATCH 04/12] Restructure README into separate macOS App and CLI paths - Split into distinct sections: macOS App (DMG install, wizard, menu bar) and CLI (binary download, flags, config file) - Make DMG the primary install path with prominent placement - Remove unnecessary collapsible wrapper around config file location - Add comparison table in overview so users pick their path immediately - Image provisioning and troubleshooting remain shared sections - Use colored for-the-badge headers to visually separate major sections Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 156 +++++++++++++++++++++++++++--------------------------- 1 file changed, 79 insertions(+), 77 deletions(-) diff --git a/README.md b/README.md index 972f066..3eb338e 100644 --- a/README.md +++ b/README.md @@ -17,20 +17,23 @@ --- -
- ## Overview Graftery bridges **GitHub Actions** with **ephemeral macOS virtual machines** running on Apple hardware. It speaks the same [scale-set protocol](https://github.com/actions/scaleset) used by [Actions Runner Controller (ARC)](https://github.com/actions/actions-runner-controller) inside Kubernetes — but runs directly on a Mac host. -It ships as both a **menu bar app** and a **standalone CLI**. - -
- > [!NOTE] > **How it works** — Graftery long-polls GitHub for pending jobs, clones a Tart base VM for each one, injects JIT runner config, and tears the VM down when the job finishes. On startup it detects and removes any orphaned VMs left behind by crashes. -
+Graftery ships in two forms — choose the one that fits your setup: + +| | macOS App | CLI | +|:---|:---|:---| +| **Best for** | Single Mac with a menu bar | Headless servers, automation, CI-of-CI | +| **Install** | [Download DMG](#-macos-app) | [Download binary](#-cli) | +| **Config** | Setup wizard + menu bar controls | Config file + flags | +| **Runs as** | Menu bar app (launchd-friendly) | Foreground process | + +--- ## Requirements @@ -39,52 +42,44 @@ It ships as both a **menu bar app** and a **standalone CLI**. | ![macOS](https://img.shields.io/badge/-macOS_14+-0e6878?style=flat-square&logo=apple&logoColor=white) | Sonoma or later | | ![Tart](https://img.shields.io/badge/-Tart-094858?style=flat-square&logoColor=white) | `brew install cirruslabs/cli/tart` | | ![Auth](https://img.shields.io/badge/-GitHub_Auth-c94a30?style=flat-square&logo=github&logoColor=white) | GitHub App credentials **or** a Personal Access Token | -| ![VM](https://img.shields.io/badge/-Base_VM-1a8090?style=flat-square&logoColor=white) | Tart image with the Actions runner binary & startup script ([details](#base-vm-image-requirements)) | +| ![VM](https://img.shields.io/badge/-Base_VM-1a8090?style=flat-square&logoColor=white) | Tart image with the Actions runner binary & startup script ([details](#base-vm-image-requirements)) | -
- -## Installation +--- -### From DMG recommended +# macOS App -Download the latest DMG from the [Releases](https://github.com/diranged/graftery/releases) page, open it, and drag **Graftery** to your Applications folder. +## Installation -### From Source +Download the latest **DMG** from the [Releases](https://github.com/diranged/graftery/releases) page, open it, and drag **Graftery** into your Applications folder. -```bash -git clone https://github.com/diranged/graftery.git -cd graftery -make install # builds .app bundle → /Applications/Graftery.app -``` +That's it — no dependencies beyond [Tart](#requirements). -> Requires Xcode command-line tools and Swift. - -
+> [!TIP] +> Building from source? See [Building from Source](#building-from-source) at the bottom of this page. ## Quick Start -``` -1. Launch Graftery from Applications (or Spotlight) -2. Walk through the configuration wizard → credentials, base VM, runner limits -3. Config is saved to ~/Library/Application Support/graftery/config.yaml -4. The runner connects to GitHub and begins listening for jobs -5. Menu bar shows live status (e.g. ARC: 1/2 → 1 busy / 2 total) -``` - -
+1. **Launch Graftery** from Applications (or Spotlight). +2. The **configuration wizard** walks you through entering your GitHub credentials, selecting a base VM image, and setting runner limits. +3. Your config is saved to `~/Library/Application Support/graftery/config.yaml`. +4. The runner connects to GitHub and begins listening for jobs automatically. +5. The menu bar icon shows live status — e.g. **ARC: 1/2** means 1 busy out of 2 total runners. ## Configuration -
-   ~/Library/Application Support/graftery/config.yaml +Config file location: `~/Library/Application Support/graftery/config.yaml` -A default config is created on first launch. Open it from the menu bar (**Open Config File**) or with any text editor. +A default config is created on first launch. You can edit it through the menu bar or with any text editor. -
+### Menu bar controls -
+| Action | What it does | +|:---|:---| +| **Open Config File** | Opens the YAML in your default editor | +| **Reload Config** | Re-reads and applies changes live | +| **Open Logs** | Opens `~/Library/Logs/graftery/graftery.log` | -### Full config reference +### Config file reference ```yaml # ── GitHub target ──────────────────────────────────────── @@ -126,19 +121,25 @@ log_level: info # debug | info | warn | error log_format: text # text | json ``` -### Editing via the menu bar +--- -| Action | What it does | -|:---|:---| -| **Open Config File** | Opens the YAML in your default editor | -| **Reload Config** | Re-reads and applies changes live | -| **Open Logs** | Opens `~/Library/Logs/graftery/graftery.log` | +# CLI + +## Installation + +Download the latest **`graftery` binary** from the [Releases](https://github.com/diranged/graftery/releases) page and place it somewhere in your `PATH`. -
+```bash +# Example: install to /usr/local/bin +curl -fSL https://github.com/diranged/graftery/releases/latest/download/graftery-darwin-arm64 \ + -o /usr/local/bin/graftery +chmod +x /usr/local/bin/graftery +``` -## CLI Usage +> [!TIP] +> Building from source? See [Building from Source](#building-from-source) at the bottom of this page. -The Go binary works as a standalone CLI — no macOS app wrapper required. +## Usage ```bash # Using a config file @@ -162,12 +163,9 @@ graftery \ --base-image ghcr.io/cirruslabs/macos-runner:sonoma ``` -> When `--config` is provided, the file is loaded first and any additional flags override its values. - -
-   expand for full table +When `--config` is provided, the file is loaded first and any additional flags override its values. -
+## CLI Flags | Flag | Req | Default | Description | |:---|:---:|:---|:---| @@ -190,11 +188,15 @@ graftery \ \* Provide **either** GitHub App credentials **or** `--token`. -
+## Logging + +Logs go to stderr by default. Use `--log-level debug` for verbose output, or `--log-format json` for structured logs. + +--- -
+# Image Provisioning -## Image Provisioning +_Applies to both the macOS app and CLI._ Graftery automatically **bakes** a prepared VM image from your base Tart image. The first run (or whenever scripts change) triggers provisioning: @@ -205,7 +207,7 @@ Graftery automatically **bakes** a prepared VM image from your base Tart image. A content hash of all scripts is cached — subsequent runs skip provisioning if nothing changed. -### Built-in scripts +## Built-in scripts | Script | Purpose | |:---|:---| @@ -213,7 +215,7 @@ A content hash of all scripts is cached — subsequent runs skip provisioning if | ![02](https://img.shields.io/badge/02-setup--info.py-094858?style=flat-square) | Generates `.setup_info` — VM info shown in GitHub Actions "Set up job" step | | ![03](https://img.shields.io/badge/03-runner--hooks.sh-094858?style=flat-square) | Installs pre/post job hooks via `ACTIONS_RUNNER_HOOK_JOB_STARTED` / `COMPLETED` | -### Custom provisioning scripts +## Custom provisioning scripts Drop your own scripts into the user scripts directory: @@ -229,6 +231,7 @@ Drop your own scripts into the user scripts directory: 50-emit-metrics.sh # custom post-job hook ``` +> [!NOTE] > **Merge behavior:** User scripts merge with built-ins. Same-name files override. Execution is lexicographic (`50-*` runs after `01-*` through `03-*`). Override the directory: @@ -238,14 +241,14 @@ provisioning: scripts_dir: /path/to/custom/scripts ``` -### Forcing reprovisioning +## Forcing reprovisioning ```bash -graftery --reprovision --config config.yaml # force a fresh bake +graftery --reprovision --config config.yaml # force a fresh bake graftery --skip-builtin-scripts --config config.yaml # only run user scripts ``` -### Pre/post job hooks +## Pre/post job hooks Hooks use GitHub Actions' native runner hook mechanism and appear in the job UI as collapsible sections: @@ -256,7 +259,7 @@ Hooks use GitHub Actions' native runner hook mechanism and appear in the job UI Hooks receive standard Actions environment variables (`GITHUB_REPOSITORY`, `GITHUB_RUN_ID`, etc.). -### Base VM image requirements +## Base VM image requirements The base Tart image must include: @@ -268,7 +271,7 @@ The base Tart image must include: > The default `ghcr.io/cirruslabs/macos-runner:sonoma` satisfies all requirements. -### Example: adding a tool to the baked image +## Example: adding a tool to the baked image Need CocoaPods for your builds? Create a bake script: @@ -284,7 +287,7 @@ sudo ln -sf "$(rbenv which pod)" /usr/local/bin/pod Restart the runner — it detects the new script, reprovisions, and every future VM ships with `pod`. -### More examples +## More examples See the [`examples/`](examples/) directory: @@ -292,19 +295,22 @@ See the [`examples/`](examples/) directory: |:---|:---| | [iOS / React Native](examples/ios-react-native/) | CocoaPods, ccache, Expo prebuild, workflow caching for Pods and DerivedData | -
+--- -## Troubleshooting +# Troubleshooting
- +tart not found The `tart` binary must be in your PATH: ```bash brew install cirruslabs/cli/tart +``` + +Or specify the path explicitly via CLI flag or config: -# Or specify explicitly: +```bash graftery --tart-path /opt/homebrew/bin/tart --config config.yaml ``` @@ -315,7 +321,7 @@ tart_path: /opt/homebrew/bin/tart
- +Authentication errors | Error | Fix | |:---|:---| @@ -326,7 +332,7 @@ tart_path: /opt/homebrew/bin/tart
- +Orphaned VMs On startup, Graftery auto-removes VMs matching the runner prefix. To clean up manually: @@ -339,7 +345,7 @@ tart delete runner-abc12345 # delete
- +Scale set registration fails - Verify `--url` points to a valid GitHub org or repo - Ensure your GitHub App has the required permissions, or your PAT has `admin:org` (org-level) / `repo` (repo-level) scope @@ -347,23 +353,23 @@ tart delete runner-abc12345 # delete
- +Max runners limit Apple's virtualization framework allows **max 2 concurrent macOS VMs per host**. The default `max_runners: 2` reflects this. Setting it higher may cause VM creation failures.
- +Logs | Mode | Location | |:---|:---| -| **GUI** | `~/Library/Logs/graftery/graftery.log` (menu bar → Open Logs) | +| **macOS App** | `~/Library/Logs/graftery/graftery.log` (menu bar -> Open Logs) | | **CLI** | stderr — use `--log-level debug` for verbose output |
-
+--- ## Building from Source @@ -379,14 +385,10 @@ make clean # remove build artifacts All artifacts are placed in the `build/` directory. -
- ## License TBD -
- ---

From 003308893e8cf7bbee1d69cc08d56cf4c7fcd152 Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:32:16 -0700 Subject: [PATCH 05/12] Switch README icon to V2 from icons/ directory Use the new asymmetric graft icon (icons/icon.svg) rendered as PNG for GitHub compatibility. Removes reference to old docs/icon.png. Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 2 +- icons/icon.png | Bin 0 -> 15054 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 icons/icon.png diff --git a/README.md b/README.md index 3eb338e..5e89f0e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- Graftery + Graftery

Graftery

diff --git a/icons/icon.png b/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bb75e5c07626fe0a167ea4acd0a7400c931c5ce5 GIT binary patch literal 15054 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 literal 0 HcmV?d00001 From 58e0b6a30f010db2994ef635b5fde155551d6db7 Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:41:55 -0700 Subject: [PATCH 06/12] Add Apache 2.0 license and headers to all source files - Add LICENSE file (Apache License 2.0) - Add copyright headers to all 54 source files (.go, .swift, .sh, .py) - Update README badge and license section from TBD to Apache 2.0 Co-Authored-By: Claude Opus 4.6 (1M context) --- ConfigUI/Package.swift | 14 ++ ConfigUI/Sources/AboutView.swift | 14 ++ ConfigUI/Sources/Config.swift | 14 ++ ConfigUI/Sources/ConfigEditorView.swift | 14 ++ ConfigUI/Sources/ConfigUIApp.swift | 14 ++ ConfigUI/Sources/ConfigurationsView.swift | 14 ++ ConfigUI/Sources/Constants.swift | 14 ++ ConfigUI/Sources/ControlSocketClient.swift | 14 ++ ConfigUI/Sources/LaunchBanner.swift | 14 ++ ConfigUI/Sources/LogStore.swift | 14 ++ ConfigUI/Sources/LogViewerView.swift | 14 ++ ConfigUI/Sources/MetricsTimeSeriesView.swift | 14 ++ ConfigUI/Sources/MiniBarGaugeView.swift | 14 ++ ConfigUI/Sources/RunnerManager.swift | 14 ++ ConfigUI/Sources/RunnerStore.swift | 14 ++ ConfigUI/Sources/StatusBarController.swift | 14 ++ ConfigUI/Sources/WizardView.swift | 14 ++ ConfigUI/UITests/MenuBarTests.swift | 14 ++ LICENSE | 202 ++++++++++++++++++ README.md | 4 +- config.go | 14 ++ configfile.go | 14 ++ constants.go | 14 ++ control.go | 14 ++ docs/icon.png | Bin 17617 -> 19784 bytes dryrun.go | 14 ++ .../bake.d/50-install-cocoapods.sh | 15 ++ .../bake.d/51-install-ccache.sh | 15 ++ graftery-icons-v2.zip | Bin 0 -> 6084 bytes icons/README.md | 32 +++ icons/icon-128.svg | 23 ++ icons/icon-512.svg | 28 +++ icons/icon.svg | 46 ++++ integration_test.go | 14 ++ main.go | 14 ++ metrics.go | 14 ++ metrics_test.go | 14 ++ packaging/build-dmg.sh | 15 ++ packaging/dmg-background.png | Bin 3465 -> 27966 bytes packaging/generate-dmg-background.py | 196 +++++++++++++++++ packaging/generate-icons.sh | 15 ++ provisioner/bake.go | 14 ++ provisioner/constants.go | 14 ++ provisioner/embed.go | 14 ++ provisioner/hash.go | 14 ++ provisioner/hash_test.go | 14 ++ provisioner/hooks.go | 14 ++ provisioner/provisioner.go | 14 ++ provisioner/provisioner_test.go | 14 ++ provisioner/scripts.go | 14 ++ .../scripts/bake.d/01-startup-script.sh | 15 ++ provisioner/scripts/bake.d/02-setup-info.py | 15 ++ .../scripts/bake.d/03-install-hooks.sh | 15 ++ .../scripts/hooks/post.d/01-job-summary.sh | 15 ++ .../scripts/hooks/pre.d/01-system-info.sh | 15 ++ provisioner/scripts_test.go | 14 ++ provisioner/tart.go | 14 ++ run.go | 14 ++ scaler.go | 14 ++ status.go | 14 ++ tart.go | 14 ++ tart_adapter.go | 14 ++ tart_test.go | 14 ++ 63 files changed, 1280 insertions(+), 2 deletions(-) create mode 100644 LICENSE mode change 100755 => 100644 examples/ios-react-native/bake.d/50-install-cocoapods.sh mode change 100755 => 100644 examples/ios-react-native/bake.d/51-install-ccache.sh create mode 100644 graftery-icons-v2.zip create mode 100644 icons/README.md create mode 100644 icons/icon-128.svg create mode 100644 icons/icon-512.svg create mode 100644 icons/icon.svg mode change 100755 => 100644 packaging/build-dmg.sh create mode 100644 packaging/generate-dmg-background.py mode change 100755 => 100644 packaging/generate-icons.sh diff --git a/ConfigUI/Package.swift b/ConfigUI/Package.swift index 0ba5678..91f73e6 100644 --- a/ConfigUI/Package.swift +++ b/ConfigUI/Package.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // swift-tools-version: 5.9 import PackageDescription diff --git a/ConfigUI/Sources/AboutView.swift b/ConfigUI/Sources/AboutView.swift index b5ba965..b4bc7e3 100644 --- a/ConfigUI/Sources/AboutView.swift +++ b/ConfigUI/Sources/AboutView.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import SwiftUI /// App-level About window showing version, description, and project links. diff --git a/ConfigUI/Sources/Config.swift b/ConfigUI/Sources/Config.swift index aecaf89..8b9a0bd 100644 --- a/ConfigUI/Sources/Config.swift +++ b/ConfigUI/Sources/Config.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import Foundation import Yams diff --git a/ConfigUI/Sources/ConfigEditorView.swift b/ConfigUI/Sources/ConfigEditorView.swift index dc9d41a..9b42b8d 100644 --- a/ConfigUI/Sources/ConfigEditorView.swift +++ b/ConfigUI/Sources/ConfigEditorView.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import SwiftUI import UniformTypeIdentifiers diff --git a/ConfigUI/Sources/ConfigUIApp.swift b/ConfigUI/Sources/ConfigUIApp.swift index a56ad41..47095b1 100644 --- a/ConfigUI/Sources/ConfigUIApp.swift +++ b/ConfigUI/Sources/ConfigUIApp.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import SwiftUI /// App delegate that owns the RunnerStore and StatusBarController. diff --git a/ConfigUI/Sources/ConfigurationsView.swift b/ConfigUI/Sources/ConfigurationsView.swift index 967293d..cbd0323 100644 --- a/ConfigUI/Sources/ConfigurationsView.swift +++ b/ConfigUI/Sources/ConfigurationsView.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import SwiftUI /// The main management window: a `NavigationSplitView` with a sidebar listing diff --git a/ConfigUI/Sources/Constants.swift b/ConfigUI/Sources/Constants.swift index 6f2974b..50fb678 100644 --- a/ConfigUI/Sources/Constants.swift +++ b/ConfigUI/Sources/Constants.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import Foundation // MARK: - Application Identity diff --git a/ConfigUI/Sources/ControlSocketClient.swift b/ConfigUI/Sources/ControlSocketClient.swift index 80b6ded..3743f6b 100644 --- a/ConfigUI/Sources/ControlSocketClient.swift +++ b/ConfigUI/Sources/ControlSocketClient.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import Foundation import Network diff --git a/ConfigUI/Sources/LaunchBanner.swift b/ConfigUI/Sources/LaunchBanner.swift index 49d99ab..a67ee57 100644 --- a/ConfigUI/Sources/LaunchBanner.swift +++ b/ConfigUI/Sources/LaunchBanner.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import AppKit import SwiftUI diff --git a/ConfigUI/Sources/LogStore.swift b/ConfigUI/Sources/LogStore.swift index 653b411..fe8357e 100644 --- a/ConfigUI/Sources/LogStore.swift +++ b/ConfigUI/Sources/LogStore.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import Foundation import os diff --git a/ConfigUI/Sources/LogViewerView.swift b/ConfigUI/Sources/LogViewerView.swift index 72fd2c6..89ee465 100644 --- a/ConfigUI/Sources/LogViewerView.swift +++ b/ConfigUI/Sources/LogViewerView.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import SwiftUI import AppKit diff --git a/ConfigUI/Sources/MetricsTimeSeriesView.swift b/ConfigUI/Sources/MetricsTimeSeriesView.swift index 39ad7bf..d5a9657 100644 --- a/ConfigUI/Sources/MetricsTimeSeriesView.swift +++ b/ConfigUI/Sources/MetricsTimeSeriesView.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import SwiftUI import Charts diff --git a/ConfigUI/Sources/MiniBarGaugeView.swift b/ConfigUI/Sources/MiniBarGaugeView.swift index 56d1525..3cee8ac 100644 --- a/ConfigUI/Sources/MiniBarGaugeView.swift +++ b/ConfigUI/Sources/MiniBarGaugeView.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import AppKit /// Pure AppKit view that draws two tiny vertical bar gauges side by side, diff --git a/ConfigUI/Sources/RunnerManager.swift b/ConfigUI/Sources/RunnerManager.swift index d2ca5e0..24198c3 100644 --- a/ConfigUI/Sources/RunnerManager.swift +++ b/ConfigUI/Sources/RunnerManager.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import Foundation /// Manages a single Go CLI binary (`graftery-cli`) subprocess for one diff --git a/ConfigUI/Sources/RunnerStore.swift b/ConfigUI/Sources/RunnerStore.swift index 8819acb..64f50dc 100644 --- a/ConfigUI/Sources/RunnerStore.swift +++ b/ConfigUI/Sources/RunnerStore.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import Foundation /// Persistent state for runner configurations. Tracks which configs exist diff --git a/ConfigUI/Sources/StatusBarController.swift b/ConfigUI/Sources/StatusBarController.swift index 54dac53..1852bc1 100644 --- a/ConfigUI/Sources/StatusBarController.swift +++ b/ConfigUI/Sources/StatusBarController.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import AppKit import SwiftUI diff --git a/ConfigUI/Sources/WizardView.swift b/ConfigUI/Sources/WizardView.swift index 3d25669..41aee1e 100644 --- a/ConfigUI/Sources/WizardView.swift +++ b/ConfigUI/Sources/WizardView.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import SwiftUI import UniformTypeIdentifiers diff --git a/ConfigUI/UITests/MenuBarTests.swift b/ConfigUI/UITests/MenuBarTests.swift index 5486e42..78c46d2 100644 --- a/ConfigUI/UITests/MenuBarTests.swift +++ b/ConfigUI/UITests/MenuBarTests.swift @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + import XCTest /// UI tests for the Graftery menu bar app. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 5e89f0e..47faafb 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Platform Protocol Virtualization - License + License

--- @@ -387,7 +387,7 @@ All artifacts are placed in the `build/` directory. ## License -TBD +[Apache License 2.0](LICENSE) --- diff --git a/config.go b/config.go index f62c2ba..c224119 100644 --- a/config.go +++ b/config.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Package main implements graftery, a GitHub Actions runner scale set // controller that provisions ephemeral Tart macOS VMs for each job. package main diff --git a/configfile.go b/configfile.go index 5a5bf59..826f726 100644 --- a/configfile.go +++ b/configfile.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/constants.go b/constants.go index 4770b99..7288e6a 100644 --- a/constants.go +++ b/constants.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import "time" diff --git a/control.go b/control.go index e6681fc..82145a7 100644 --- a/control.go +++ b/control.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/docs/icon.png b/docs/icon.png index c1c4633854ba8e8b6bfdd10e67ec7870769a796c..ea5d7ebff1832d9be2367fbd916687200bbc6f34 100644 GIT binary patch literal 19784 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

og~+i?+{wNn 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 DBuVmg literal 17617 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 diff --git a/dryrun.go b/dryrun.go index a4eaf7e..ad4e3f7 100644 --- a/dryrun.go +++ b/dryrun.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/examples/ios-react-native/bake.d/50-install-cocoapods.sh b/examples/ios-react-native/bake.d/50-install-cocoapods.sh old mode 100755 new mode 100644 index bd40310..92cbef0 --- a/examples/ios-react-native/bake.d/50-install-cocoapods.sh +++ b/examples/ios-react-native/bake.d/50-install-cocoapods.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Installs CocoaPods into the VM image. # # The Cirrus base image ships with system Ruby 2.6 which is too old for diff --git a/examples/ios-react-native/bake.d/51-install-ccache.sh b/examples/ios-react-native/bake.d/51-install-ccache.sh old mode 100755 new mode 100644 index e8ae08a..8e31f73 --- a/examples/ios-react-native/bake.d/51-install-ccache.sh +++ b/examples/ios-react-native/bake.d/51-install-ccache.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Installs ccache for faster C/C++ compilation of React Native native modules. # # ccache caches compiled object files. When the same source file is compiled diff --git a/graftery-icons-v2.zip b/graftery-icons-v2.zip new file mode 100644 index 0000000000000000000000000000000000000000..025e6078ba5dfa3c0556113cbcadc79de8121af7 GIT binary patch literal 6084 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 literal 0 HcmV?d00001 diff --git a/icons/README.md b/icons/README.md new file mode 100644 index 0000000..fda31b6 --- /dev/null +++ b/icons/README.md @@ -0,0 +1,32 @@ +# Graftery Icon Set + +## Concept + +Asymmetric graft metaphor: a thick rootstock (left) and thin wiggly scion +(upper-right) converge at a coral union band, generating ephemeral macOS VMs +below. + +### VM lifecycle (top to bottom) + +- **Ghost dashed box** -- destroyed / not-yet-started VM +- **Solid coral band** -- running VM (graft union point) +- **Open-bottom box** -- VM being assembled + +## Color palette + +| Role | Hex | +|------------|-----------| +| Background | `#0a1a20` | +| Rootstock | `#0e6878` | +| Scion | `#1aabb8` | +| Union band | `#c94a30` | + +## Files + +| File | Size | Purpose | +|------------------|--------|------------------------------------------| +| `icon.svg` | 1024px | Master icon (full detail, all VM states) | +| `icon-512.svg` | 512px | App icon with full detail | +| `icon-128.svg` | 128px | Dock/Finder (simplified, no ghost box) | + +`docs/icon.png` is generated from `icon.svg` for use in the project README. diff --git a/icons/icon-128.svg b/icons/icon-128.svg new file mode 100644 index 0000000..815113f --- /dev/null +++ b/icons/icon-128.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + diff --git a/icons/icon-512.svg b/icons/icon-512.svg new file mode 100644 index 0000000..0858167 --- /dev/null +++ b/icons/icon-512.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/icons/icon.svg b/icons/icon.svg new file mode 100644 index 0000000..1b870b9 --- /dev/null +++ b/icons/icon.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integration_test.go b/integration_test.go index 1f8940f..14e31f2 100644 --- a/integration_test.go +++ b/integration_test.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/main.go b/main.go index e800284..50bc8c8 100644 --- a/main.go +++ b/main.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/metrics.go b/metrics.go index 4fd5167..26e3faf 100644 --- a/metrics.go +++ b/metrics.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/metrics_test.go b/metrics_test.go index c07250d..63affe1 100644 --- a/metrics_test.go +++ b/metrics_test.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/packaging/build-dmg.sh b/packaging/build-dmg.sh old mode 100755 new mode 100644 index d121f97..a75d50f --- a/packaging/build-dmg.sh +++ b/packaging/build-dmg.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Creates a drag-and-drop DMG installer for Graftery. # # Downloads create-dmg (pinned to a specific SHA) into a local bin directory diff --git a/packaging/dmg-background.png b/packaging/dmg-background.png index 8cf1fc496139830f04224af7a8aa809dce9e5a0b..f006ddc5d65ffaee195321c38bf4ade178208702 100644 GIT binary patch literal 27966 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

wyuS1^f|2M|8BndzX|ps08hBo^=INJded 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

B1rdUNkl;n z@WSIF65-ILlFjel1*Hxca?Ol(_py`#0m^nj}N7MDB70V^3UIZKXCI|Q= z0cGJHQF}`;OV#ivvh_cu1?EZkde zUZ~T)!-i5>R)BPA6u=Rg78(`iy`TS)dP}>iZ59;NVo(qm)=GkcGLU6>unvaMScx1g zgq&hbBF%(_eyym14Gb0%J_#&qv;YuM60DRVo~C2UI3-!GsPiWa3c?2k3qe8c(YrYr z)DI8Z!rd~&PZO-?)Pp6~@b&4kdWNUq>*_hnObH9U?|{>8{BRB-HROUrU++AFqF4M) z#FunRy<#5%0Lu+Cbe&?V2PHi)2DdW~wu z8J7a@Vx%;=Gn-TrWcrLJ{lZehTG6l3QV?9xs!%hp+PQ!F?W^T=CHLB)>=FqQWNwh? z_kOLyDpEoq)DOA@@^}=~Fi$Kh(9{{psQ@lm5Ba^&H55F=}`xXx{W+OFWC0r0!l;p~3ZuH2>83oM;;yNg;<54hnzC_4Co52fPiGJ2- z9J{2Wv~DbP$c%-)!hpkwPS8-0qW4U+;}IAfWT$gRdz*OnA=S+ty^;u;JEI^S3IZf{ zkc%@Y+Ddo#36cP5-kF6?iJDxPC`Q`8A>bHkg_&iD3X^)yISYa-derK)yBrPP6WAn6 zqa^S*3QBUoIPszi)?bK5B5+O`LgM|dM?DJyb zwtobH1Q-kZJ_8i{pc;2B1srBT#I4o-PmF1Cd@-Lx^wUPIzi@Rk5kW8tdLb}73hE#f zL`D;11ao(42BwJxc83upD~Ggct{7>8R8p8?Yty+d8SD&sT4_&N#!cc&36F~LlXYo5 z+-3PPhf!6!MJzvDm5vDo@jjE%LBHL@@i8OJ7a;Z78`Wm!g}?%+#8<{tQh1mY!d!9Z z(y_yA1koto_n6#6ndsXQmZcJ`zi@S-dQkB|S_ouD!73>VYUsCurbj`)wO$EGXw)4b zMMg_Q1`9J`Av|EnhK0;w(uy%sYK6l|B4V+)RSN!vv}FJaq9Cw96x5PXP&=JLKT$Rm z1nIG_HHr&Vj!Ol+7>*|H6vBl>f)#n4@qVa6-b2vEu!Tt-PocZBz}#GOW~ru+!ext^ z9ft$}gOo2!UW?V8(0r{|BLt@|E+DY^neN002ovPDHLk FV1gHBeG~uy literal 3465 zcmeH~{Xf%tAIHBoB-2$+j}~%K6m^=L4jm+)p=p|o8&#wBaHOK!)iBgfrw(A>%M2*T>bA5MdO~?7gyETQD_uO&q!Mb zvg^ENW+q1W>N9uK2KSo%BWA@f>a$*0f2yqFvefM;R~xJ?$8z?Bcomra^f_d@bIUn(=~t{X7vEjsSXED6f+@!)=se0e?eftUN4jyaBnLDNVEPX`nCoC=cnMu z19ChNB5GhOTCkHHd0TFFNLkXums4@Wck;HJK)qC7WJ31{j8l_X+4==m^k+4*zwAl1 zr9KMTc)w^k^z`CkG&Q<*}cemo7V!|DmI!6Bp}+#oSv=Q6xO++v=ae#BW89J^ObZ z2ICjxP5k)Ju@1R0TOxL`zB6CW2pAt58~fo&<#26lLrgmxuqJ}?xussKvOx6tYsrg6 zrhP8T>ymURiI^;zkjO0CBBj|IUcEgw4q+#Hizj5$ z%+I5ZRpZgUrP8e3$dPNgBEDpCsYE(lmhL_qc5^@XSZxOIu_Vjl{)EZB^PxsP#FV5Jf5Au$zwy@TnQ(` zlUOtx%4mPvc^_6)hs62tDo?|zQn)h0L4D_%A2)9&P|uZJvrm5CJ>XYh?sL;2ab@HQ zr|fwwc62FP!joo)wztKLKUwL;3Wjnz#}KJQdT^+R%RbH z<0fj2nSWcyG2oO*NEo?dK=_$>C5xW0JU4t@{HDZa-unvWTFNSsmLh6m7$?nSx`=So z_X)WxYinHRt~08}sl&Z|uROo$cxjT__w`*yLTFBaa@zLmlHg__F>}jLC}( z+^b*3TuSIg6HM1H8O|e(^IbvxwE>G0-A5@sr8OSL@-B}&7sY#ph#zlgY-nij$B2Cu z&axYfSKC{U!s{Cv9`}QX5sD8oUbM;ANEQa1+c4~_K^lAu8UnRrbZ94KhU}+Bpg47$DX;{oG%SDWn ziOT7IWN(bcZbhx~hX#Z#V>XwBv=_`m^*kZ42L~4l|42X&P1As66l%)L!^2}?=|iwh zPtgpY&*waZ?)+8t!Y^Mwz*LSxw@2QI1Mi}2i*yZZO*gm~0s=#2KR^`QtHYUk-vwG9 z(L$shF{4#Tw<6M__R=a^RWzYhB&fKbR^gzc$`0x@RdyBkfp!%^or8*|w2BRN_zCED zfxZ|Btim-DQEi#7(a&^)`xh`F;kQg+Pd!j-{%PI#2;Bf+7wCQrl;3}VsMbu^@I7Jz zGeCM`vC7d!BlWL=3TUY97Y0tgot>n^+--AL!}t72LjwX6Qf-~Dk#iP|L+r-0OzVN~ z-v%MVkAwL-|K4S51_nAmqisOwwFUfdz!L86yzJ`)Mo7;*Tn$F(ulReHKbR@}1Smg;QnS^I(%_oc0|pOT@N;`Xg6?zs zK&F8-sRvjkAi+vl`5^a$%mjG=WI9N2;9?bn1pQgRwcs59f#CoLcieO>e0DE4g{{Wg&QuRjU%aV-u?J1TO>4`DQcUo7D4X>T{mNfiD+ik$(A diff --git a/packaging/generate-dmg-background.py b/packaging/generate-dmg-background.py new file mode 100644 index 0000000..2055a58 --- /dev/null +++ b/packaging/generate-dmg-background.py @@ -0,0 +1,196 @@ +#!/usr/bin/env python3 + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Generates the DMG installer background image for Graftery. + +Color palette is drawn from docs/icon.svg: + - Dark teal background: #0a1a20 + - Teal strand: #0e6878 + - Darker teal strand: #094858 + - Light teal accent: #1a8090 + - Coral accent: #c94a30 / #e86040 / #f07050 + +DMG window is 600x400. Icon centres: + - Graftery.app at (175, 190) + - Applications at (425, 190) +The arrow sits in the gap between them. +""" + +from PIL import Image, ImageDraw, ImageFilter, ImageFont +import math, os + +WIDTH, HEIGHT = 600, 400 + +# --- palette (from icon.svg) --- +BG_DARK = (10, 26, 32) # #0a1a20 +BG_MID = (14, 50, 62) # #0e323e (interpolated) +TEAL = (14, 104, 120) # #0e6878 +TEAL_DK = (9, 72, 88) # #094858 +TEAL_LT = (26, 128, 144) # #1a8090 +CORAL = (201, 74, 48) # #c94a30 +CORAL_LT = (240, 112, 80) # #f07050 +CORAL_BRT = (232, 96, 64) # #e86040 + + +def lerp_color(c1, c2, t): + return tuple(int(a + (b - a) * t) for a, b in zip(c1, c2)) + + +def draw_gradient_bg(img): + """Radial gradient: slightly lighter in centre, dark at edges.""" + draw = ImageDraw.Draw(img) + cx, cy = WIDTH // 2, HEIGHT // 2 + max_dist = math.hypot(cx, cy) + for y in range(HEIGHT): + for x in range(WIDTH): + d = math.hypot(x - cx, y - cy) / max_dist + t = d * d # ease-out for subtlety + color = lerp_color(BG_MID, BG_DARK, t) + draw.point((x, y), fill=(*color, 255)) + + +def draw_subtle_helix(img): + """Draw faint helix curves echoing the icon DNA motif.""" + for strand_offset, color, alpha in [(0, TEAL, 30), (math.pi, TEAL_DK, 24)]: + overlay = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) + od = ImageDraw.Draw(overlay) + amplitude = 70 + freq = 2.5 * math.pi / WIDTH + cy = HEIGHT // 2 + prev = None + for x in range(WIDTH): + y = int(cy + amplitude * math.sin(freq * x + strand_offset)) + if prev is not None: + od.line([prev, (x, y)], fill=(*color, alpha), width=4) + prev = (x, y) + img.paste(Image.alpha_composite( + Image.new("RGBA", img.size, (0, 0, 0, 0)), overlay), mask=overlay) + + # Faint crossbars at helix crossing points + overlay = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) + od = ImageDraw.Draw(overlay) + freq = 2.5 * math.pi / WIDTH + cy = HEIGHT // 2 + for x in range(0, WIDTH, 8): + y1 = int(cy + 70 * math.sin(freq * x)) + y2 = int(cy + 70 * math.sin(freq * x + math.pi)) + # Only draw crossbars near where strands are close + if abs(y1 - y2) < 50: + od.line([(x, y1), (x, y2)], fill=(*TEAL_LT, 12), width=1) + img.paste(Image.alpha_composite( + Image.new("RGBA", img.size, (0, 0, 0, 0)), overlay), mask=overlay) + + +def draw_arrow(img): + """Draw a coral arrow with glow from app icon area to Applications area.""" + y = 190 + x_start = 238 + x_end = 362 + head_size = 20 + + # --- Glow layer (blurred coral on transparent) --- + glow = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) + gd = ImageDraw.Draw(glow) + # Thick soft shaft + gd.line([(x_start - 4, y), (x_end - head_size + 4, y)], + fill=(*CORAL, 80), width=14) + # Soft arrowhead + head_pts = [ + (x_end + 4, y), + (x_end - head_size - 4, y - head_size // 2 - 6), + (x_end - head_size - 4, y + head_size // 2 + 6), + ] + gd.polygon(head_pts, fill=(*CORAL, 80)) + glow = glow.filter(ImageFilter.GaussianBlur(radius=10)) + img.paste(Image.alpha_composite( + Image.new("RGBA", img.size, (0, 0, 0, 0)), glow), mask=glow) + + # --- Crisp arrow on top --- + overlay = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) + od = ImageDraw.Draw(overlay) + + # Shaft with rounded ends + od.line([(x_start, y), (x_end - head_size, y)], + fill=(*CORAL_BRT, 230), width=4) + # Round caps + od.ellipse([(x_start - 2, y - 2), (x_start + 2, y + 2)], + fill=(*CORAL_BRT, 230)) + + # Arrowhead + head_pts = [ + (x_end, y), + (x_end - head_size, y - head_size // 2 - 2), + (x_end - head_size, y + head_size // 2 + 2), + ] + od.polygon(head_pts, fill=(*CORAL_LT, 240)) + od.polygon(head_pts, outline=(*CORAL, 200)) + + img.paste(Image.alpha_composite( + Image.new("RGBA", img.size, (0, 0, 0, 0)), overlay), mask=overlay) + + +def draw_labels(img): + """Draw centred labels below icon positions.""" + overlay = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) + od = ImageDraw.Draw(overlay) + + try: + font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", 13) + except (OSError, IOError): + try: + font = ImageFont.truetype("/System/Library/Fonts/SFNSText.ttf", 13) + except (OSError, IOError): + font = ImageFont.load_default() + + for text, cx in [("Graftery", 175), ("Applications", 425)]: + bbox = od.textbbox((0, 0), text, font=font) + tw = bbox[2] - bbox[0] + od.text((cx - tw // 2, 258), text, fill=(*TEAL_LT, 200), font=font) + + img.paste(Image.alpha_composite( + Image.new("RGBA", img.size, (0, 0, 0, 0)), overlay), mask=overlay) + + +def draw_top_accent(img): + """Thin teal accent line at the very top.""" + overlay = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) + od = ImageDraw.Draw(overlay) + for y in range(3): + alpha = int(40 * (1.0 - y / 3.0)) + od.line([(0, y), (WIDTH, y)], fill=(*TEAL_DK, alpha)) + img.paste(Image.alpha_composite( + Image.new("RGBA", img.size, (0, 0, 0, 0)), overlay), mask=overlay) + + +def main(): + img = Image.new("RGBA", (WIDTH, HEIGHT), (*BG_DARK, 255)) + + draw_gradient_bg(img) + draw_subtle_helix(img) + draw_top_accent(img) + draw_arrow(img) + draw_labels(img) + + # Final output as RGB PNG (DMG backgrounds don't need alpha) + out = os.path.join(os.path.dirname(os.path.abspath(__file__)), + "dmg-background.png") + img.convert("RGB").save(out, "PNG") + print(f"Created {out} ({WIDTH}x{HEIGHT})") + + +if __name__ == "__main__": + main() diff --git a/packaging/generate-icons.sh b/packaging/generate-icons.sh old mode 100755 new mode 100644 index 0d5653e..121508b --- a/packaging/generate-icons.sh +++ b/packaging/generate-icons.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Generates AppIcon.icns from a source PNG. # Usage: ./generate-icons.sh [source.png] # diff --git a/provisioner/bake.go b/provisioner/bake.go index ae8bdb0..5ce6faf 100644 --- a/provisioner/bake.go +++ b/provisioner/bake.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner import ( diff --git a/provisioner/constants.go b/provisioner/constants.go index e2d0d95..69a1845 100644 --- a/provisioner/constants.go +++ b/provisioner/constants.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner // --------------------------------------------------------------------------- diff --git a/provisioner/embed.go b/provisioner/embed.go index f1e3b04..a1bd9ba 100644 --- a/provisioner/embed.go +++ b/provisioner/embed.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner import "embed" diff --git a/provisioner/hash.go b/provisioner/hash.go index 8cca0ce..07f8268 100644 --- a/provisioner/hash.go +++ b/provisioner/hash.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner import ( diff --git a/provisioner/hash_test.go b/provisioner/hash_test.go index 119ed23..95fe200 100644 --- a/provisioner/hash_test.go +++ b/provisioner/hash_test.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner import "testing" diff --git a/provisioner/hooks.go b/provisioner/hooks.go index f8c171a..2d72408 100644 --- a/provisioner/hooks.go +++ b/provisioner/hooks.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner // Hook scripts are now handled entirely via the shared directory mount: diff --git a/provisioner/provisioner.go b/provisioner/provisioner.go index 485226d..afcb497 100644 --- a/provisioner/provisioner.go +++ b/provisioner/provisioner.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + // Package provisioner implements the "bake and cache" strategy for preparing // macOS VM images. It takes a base tart VM image, clones it, boots the clone, // runs provisioning scripts inside the guest via a shared directory mount, diff --git a/provisioner/provisioner_test.go b/provisioner/provisioner_test.go index 77a7058..ee681cb 100644 --- a/provisioner/provisioner_test.go +++ b/provisioner/provisioner_test.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner import "testing" diff --git a/provisioner/scripts.go b/provisioner/scripts.go index 551688e..9c44ad4 100644 --- a/provisioner/scripts.go +++ b/provisioner/scripts.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner import ( diff --git a/provisioner/scripts/bake.d/01-startup-script.sh b/provisioner/scripts/bake.d/01-startup-script.sh index f5e3492..57ca8ed 100644 --- a/provisioner/scripts/bake.d/01-startup-script.sh +++ b/provisioner/scripts/bake.d/01-startup-script.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Installs the arc-runner startup script into the VM. # This script is invoked by the host via `tart exec` after the VM boots, # and handles reading the JIT config from the shared mount, starting diff --git a/provisioner/scripts/bake.d/02-setup-info.py b/provisioner/scripts/bake.d/02-setup-info.py index 984e03e..263d738 100644 --- a/provisioner/scripts/bake.d/02-setup-info.py +++ b/provisioner/scripts/bake.d/02-setup-info.py @@ -1,4 +1,19 @@ #!/usr/bin/env python3 + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + """Generates ~/actions-runner/.setup_info for the GitHub Actions UI. The .setup_info file is read by the runner agent and displayed in the diff --git a/provisioner/scripts/bake.d/03-install-hooks.sh b/provisioner/scripts/bake.d/03-install-hooks.sh index 7f3b576..20920b7 100644 --- a/provisioner/scripts/bake.d/03-install-hooks.sh +++ b/provisioner/scripts/bake.d/03-install-hooks.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Installs pre/post job hooks from the shared mount into the VM. # # During provisioning, the host mounts a directory containing all resolved diff --git a/provisioner/scripts/hooks/post.d/01-job-summary.sh b/provisioner/scripts/hooks/post.d/01-job-summary.sh index 0c0964b..7c99b2e 100644 --- a/provisioner/scripts/hooks/post.d/01-job-summary.sh +++ b/provisioner/scripts/hooks/post.d/01-job-summary.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Post-job hook: logs job summary after the job completes. # Output uses ::group:: workflow commands for collapsible sections in the UI. echo "::group::Graftery Post-Job" diff --git a/provisioner/scripts/hooks/pre.d/01-system-info.sh b/provisioner/scripts/hooks/pre.d/01-system-info.sh index a0f7574..57f8a18 100644 --- a/provisioner/scripts/hooks/pre.d/01-system-info.sh +++ b/provisioner/scripts/hooks/pre.d/01-system-info.sh @@ -1,4 +1,19 @@ #!/bin/bash + +# Copyright 2026 Matt Wise +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Pre-job hook: logs system information before the job starts. # Output uses ::group:: workflow commands for collapsible sections in the UI. echo "::group::Graftery Pre-Job" diff --git a/provisioner/scripts_test.go b/provisioner/scripts_test.go index f250bc1..5331241 100644 --- a/provisioner/scripts_test.go +++ b/provisioner/scripts_test.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner import ( diff --git a/provisioner/tart.go b/provisioner/tart.go index 5d80a2c..ee89094 100644 --- a/provisioner/tart.go +++ b/provisioner/tart.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package provisioner import ( diff --git a/run.go b/run.go index f9c8eed..d10be64 100644 --- a/run.go +++ b/run.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/scaler.go b/scaler.go index 0bbb7be..f3ccd48 100644 --- a/scaler.go +++ b/scaler.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/status.go b/status.go index 1d5c5a2..4e6dee2 100644 --- a/status.go +++ b/status.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/tart.go b/tart.go index f489177..c6eb6b3 100644 --- a/tart.go +++ b/tart.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/tart_adapter.go b/tart_adapter.go index afc8e84..ff1d4f5 100644 --- a/tart_adapter.go +++ b/tart_adapter.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( diff --git a/tart_test.go b/tart_test.go index df08f39..15455fe 100644 --- a/tart_test.go +++ b/tart_test.go @@ -1,3 +1,17 @@ +// Copyright 2026 Matt Wise +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package main import ( From 8d5d1b40420cca354ae9f7a86b3e844d34dd309d Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:53:31 -0700 Subject: [PATCH 07/12] Add comprehensive features/capabilities section to README Replace minimal overview with a full selling section that explains: - Why Graftery exists (the problem it solves) - How it works (ASCII flow diagram) - Core capabilities table (ephemeral VMs, auto-scaling, image baking, hooks, crash recovery, Prometheus metrics, dry-run mode) - Detailed comparison of macOS App vs CLI (multi-config, metrics visualization, log viewer, setup wizard vs single-process simplicity) Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 54 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 47faafb..a637e58 100644 --- a/README.md +++ b/README.md @@ -17,21 +17,57 @@ --- -## Overview +## Why Graftery? -Graftery bridges **GitHub Actions** with **ephemeral macOS virtual machines** running on Apple hardware. It speaks the same [scale-set protocol](https://github.com/actions/scaleset) used by [Actions Runner Controller (ARC)](https://github.com/actions/actions-runner-controller) inside Kubernetes — but runs directly on a Mac host. +If you run iOS, macOS, or Apple-platform CI on GitHub Actions, you need macOS runners. GitHub's hosted runners work, but they're expensive and you can't customize the image. Self-hosted runners on bare metal are fast and cheap — but managing them is painful: stale state bleeds between jobs, runner registration is manual, and there's no easy way to scale. -> [!NOTE] -> **How it works** — Graftery long-polls GitHub for pending jobs, clones a Tart base VM for each one, injects JIT runner config, and tears the VM down when the job finishes. On startup it detects and removes any orphaned VMs left behind by crashes. +**Graftery fixes this.** It brings the same ephemeral, scale-to-zero model that [Actions Runner Controller (ARC)](https://github.com/actions/actions-runner-controller) provides on Kubernetes — but runs directly on a Mac. Every job gets a **fresh VM clone**. When the job finishes, the VM is destroyed. No state leaks, no drift, no cleanup scripts. + +### How it works + +``` +GitHub Actions Your Mac +───────────── ──────── + Job queued ──── scaleset poll ────▶ Graftery sees demand + │ + ├─ Clones base VM image + ├─ Injects JIT runner config + ├─ Boots ephemeral Tart VM + ├─ Runner picks up the job + └─ VM destroyed on completion +``` + +Graftery speaks the [actions/scaleset](https://github.com/actions/scaleset) protocol natively — the same wire protocol ARC uses. No custom API, no webhook glue. -Graftery ships in two forms — choose the one that fits your setup: +### Core capabilities -| | macOS App | CLI | +| | Feature | Details | |:---|:---|:---| -| **Best for** | Single Mac with a menu bar | Headless servers, automation, CI-of-CI | +| ![](https://img.shields.io/badge/-Ephemeral_VMs-0e6878?style=flat-square) | **Clean room every job** | Each job runs in a fresh VM clone. No state leaks between jobs, ever. | +| ![](https://img.shields.io/badge/-Auto_Scaling-0e6878?style=flat-square) | **Scale to zero** | No jobs? No VMs. Runners spin up on demand and tear down when done. Configure a warm pool (`min_runners`) for faster pickup. | +| ![](https://img.shields.io/badge/-Image_Baking-094858?style=flat-square) | **Custom VM images** | Drop shell scripts into `bake.d/` and Graftery bakes them into a prepared image. Install Xcode, CocoaPods, Homebrew packages — whatever your builds need. Content-hashed so reprovisioning only happens when scripts change. | +| ![](https://img.shields.io/badge/-Job_Hooks-094858?style=flat-square) | **Pre/post job hooks** | Native GitHub Actions runner hooks (`ACTIONS_RUNNER_HOOK_JOB_STARTED` / `COMPLETED`). They show up as collapsible sections in the Actions UI. | +| ![](https://img.shields.io/badge/-Crash_Recovery-1a8090?style=flat-square) | **Orphan cleanup** | On startup, Graftery finds and removes VMs left behind by crashes. Session conflicts with GitHub are retried automatically with exponential backoff. | +| ![](https://img.shields.io/badge/-Observability-1a8090?style=flat-square) | **Prometheus metrics** | Host CPU/memory/disk, per-VM CPU/memory/uptime, job counters — all exposed via a `/metrics` endpoint. Includes Apple hypervisor (XPC) process tracking for accurate VM resource attribution. | +| ![](https://img.shields.io/badge/-Dry_Run-1a8090?style=flat-square) | **Dry-run mode** | Test your setup without GitHub or Tart. Simulates the full lifecycle with fake jobs so you can validate config, control socket, and UI integration end-to-end. | + +### Two ways to run it + +Graftery ships as both a **macOS menu bar app** and a **standalone CLI**. They share the same Go backend — the app wraps the CLI in a native Swift UI. + +| | | | +|:---|:---|:---| +| **Best for** | Interactive use on a Mac with a display | Headless servers, automation, launchd/systemd | | **Install** | [Download DMG](#-macos-app) | [Download binary](#-cli) | -| **Config** | Setup wizard + menu bar controls | Config file + flags | -| **Runs as** | Menu bar app (launchd-friendly) | Foreground process | +| **Runner sets** | **Multiple** — manage unlimited independent configs | **One** per process | +| **Config** | 6-step setup wizard + tabbed editor with auto-save | YAML file + CLI flags | +| **Metrics** | Live time-series charts (CPU & memory), menu bar gauges | Prometheus `/metrics` endpoint | +| **Logs** | Built-in log viewer with search, level filtering, color | Structured logs to stderr | +| **Controls** | Menu bar start/stop per runner, enable/disable auto-start | SIGINT/SIGTERM | +| **Runs as** | Menu bar app | Foreground process | + +> [!TIP] +> **Already using ARC on Kubernetes?** Graftery uses the same protocol and the same `runs-on:` label convention. Your workflows don't need to change — just point a scale set name at your Mac and go. --- From de049734e504a91fd492b27d68a6e7edfad388a5 Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:55:17 -0700 Subject: [PATCH 08/12] cleanup --- docs/icon.png | Bin 19784 -> 0 bytes graftery-icons-v2.zip | Bin 6084 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/icon.png delete mode 100644 graftery-icons-v2.zip diff --git a/docs/icon.png b/docs/icon.png deleted file mode 100644 index ea5d7ebff1832d9be2367fbd916687200bbc6f34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19784 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

og~+i?+{wNn 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 DBuVmg diff --git a/graftery-icons-v2.zip b/graftery-icons-v2.zip deleted file mode 100644 index 025e6078ba5dfa3c0556113cbcadc79de8121af7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6084 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 From 3c8a1b2659513fa91a138b9b46d22cc9b21e3e72 Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 17:58:22 -0700 Subject: [PATCH 09/12] Replace unreadable badge icons in capabilities list with bold text The tiny shields.io badges in the table's first column were too small to read. Switch to a simple bold-text list which is cleaner and more scannable. Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index a637e58..0ad0f8d 100644 --- a/README.md +++ b/README.md @@ -41,15 +41,19 @@ Graftery speaks the [actions/scaleset](https://github.com/actions/scaleset) prot ### Core capabilities -| | Feature | Details | -|:---|:---|:---| -| ![](https://img.shields.io/badge/-Ephemeral_VMs-0e6878?style=flat-square) | **Clean room every job** | Each job runs in a fresh VM clone. No state leaks between jobs, ever. | -| ![](https://img.shields.io/badge/-Auto_Scaling-0e6878?style=flat-square) | **Scale to zero** | No jobs? No VMs. Runners spin up on demand and tear down when done. Configure a warm pool (`min_runners`) for faster pickup. | -| ![](https://img.shields.io/badge/-Image_Baking-094858?style=flat-square) | **Custom VM images** | Drop shell scripts into `bake.d/` and Graftery bakes them into a prepared image. Install Xcode, CocoaPods, Homebrew packages — whatever your builds need. Content-hashed so reprovisioning only happens when scripts change. | -| ![](https://img.shields.io/badge/-Job_Hooks-094858?style=flat-square) | **Pre/post job hooks** | Native GitHub Actions runner hooks (`ACTIONS_RUNNER_HOOK_JOB_STARTED` / `COMPLETED`). They show up as collapsible sections in the Actions UI. | -| ![](https://img.shields.io/badge/-Crash_Recovery-1a8090?style=flat-square) | **Orphan cleanup** | On startup, Graftery finds and removes VMs left behind by crashes. Session conflicts with GitHub are retried automatically with exponential backoff. | -| ![](https://img.shields.io/badge/-Observability-1a8090?style=flat-square) | **Prometheus metrics** | Host CPU/memory/disk, per-VM CPU/memory/uptime, job counters — all exposed via a `/metrics` endpoint. Includes Apple hypervisor (XPC) process tracking for accurate VM resource attribution. | -| ![](https://img.shields.io/badge/-Dry_Run-1a8090?style=flat-square) | **Dry-run mode** | Test your setup without GitHub or Tart. Simulates the full lifecycle with fake jobs so you can validate config, control socket, and UI integration end-to-end. | +**Clean room every job** — Each job runs in a fresh VM clone. No state leaks between jobs, ever. + +**Scale to zero** — No jobs? No VMs. Runners spin up on demand and tear down when done. Configure a warm pool (`min_runners`) for faster pickup. + +**Custom VM images** — Drop shell scripts into `bake.d/` and Graftery bakes them into a prepared image. Install Xcode, CocoaPods, Homebrew packages — whatever your builds need. Content-hashed so reprovisioning only happens when scripts change. + +**Pre/post job hooks** — Native GitHub Actions runner hooks (`ACTIONS_RUNNER_HOOK_JOB_STARTED` / `COMPLETED`). They show up as collapsible sections in the Actions UI. + +**Orphan cleanup** — On startup, Graftery finds and removes VMs left behind by crashes. Session conflicts with GitHub are retried automatically with exponential backoff. + +**Prometheus metrics** — Host CPU/memory/disk, per-VM CPU/memory/uptime, job counters — all exposed via a `/metrics` endpoint. Includes Apple hypervisor (XPC) process tracking for accurate VM resource attribution. + +**Dry-run mode** — Test your setup without GitHub or Tart. Simulates the full lifecycle with fake jobs so you can validate config, control socket, and UI integration end-to-end. ### Two ways to run it From 40f91174fcf301613281086ebbdddd837ac841e8 Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 18:16:24 -0700 Subject: [PATCH 10/12] Add screenshots to macOS App quick start section Include wizard (name + auth steps), menu bar dropdown, and config editor screenshots. Redact org/personal names from config editor. Rewrite Quick Start to be UI-focused with inline images instead of referencing config file paths. Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 34 ++++++++++++++++++----------- docs/screenshots/config-editor.png | Bin 0 -> 109694 bytes docs/screenshots/menu-bar.png | Bin 0 -> 44711 bytes docs/screenshots/wizard-auth.png | Bin 0 -> 81191 bytes docs/screenshots/wizard-name.png | Bin 0 -> 67273 bytes 5 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 docs/screenshots/config-editor.png create mode 100644 docs/screenshots/menu-bar.png create mode 100644 docs/screenshots/wizard-auth.png create mode 100644 docs/screenshots/wizard-name.png diff --git a/README.md b/README.md index 0ad0f8d..9da0bd3 100644 --- a/README.md +++ b/README.md @@ -100,24 +100,32 @@ That's it — no dependencies beyond [Tart](#requirements). ## Quick Start 1. **Launch Graftery** from Applications (or Spotlight). -2. The **configuration wizard** walks you through entering your GitHub credentials, selecting a base VM image, and setting runner limits. -3. Your config is saved to `~/Library/Application Support/graftery/config.yaml`. -4. The runner connects to GitHub and begins listening for jobs automatically. -5. The menu bar icon shows live status — e.g. **ARC: 1/2** means 1 busy out of 2 total runners. +2. The **setup wizard** walks you through creating your first runner configuration — name it, enter your GitHub credentials, choose a base VM image, and set runner limits. -## Configuration +

+ Setup wizard — name your configuration +    + Setup wizard — authentication +

-Config file location: `~/Library/Application Support/graftery/config.yaml` +3. The runner connects to GitHub and begins listening for jobs automatically. +4. The **menu bar icon** shows live status. Click it to start/stop runners, add new configurations, or open the management window. -A default config is created on first launch. You can edit it through the menu bar or with any text editor. +

+ Menu bar dropdown +

-### Menu bar controls +5. Open **Manage Configurations** for the full editor — tabbed settings, live CPU & memory charts, and a built-in log viewer. -| Action | What it does | -|:---|:---| -| **Open Config File** | Opens the YAML in your default editor | -| **Reload Config** | Re-reads and applies changes live | -| **Open Logs** | Opens `~/Library/Logs/graftery/graftery.log` | +

+ Configuration editor with metrics +

+ +## Configuration + +Each runner configuration is stored as a YAML file in `~/Library/Application Support/graftery/configs/`. You can manage everything through the UI — the setup wizard for new configs, and the tabbed editor for changes (auto-saved on every edit). + +You can also edit the YAML files directly with any text editor if you prefer. ### Config file reference diff --git a/docs/screenshots/config-editor.png b/docs/screenshots/config-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..cac51c85d4d6c5186138c7eba5187554c4d3449a GIT binary patch literal 109694 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

- Setup wizard — name your configuration -    - Setup wizard — authentication -

+ + + + + + + + + +
Setup wizard — name your configurationSetup wizard — authentication
Step 1 — Name your configurationStep 3 — Authentication
3. The runner connects to GitHub and begins listening for jobs automatically. 4. The **menu bar icon** shows live status. Click it to start/stop runners, add new configurations, or open the management window. From 0e44771252090620df9231b485c2f3def9276a5b Mon Sep 17 00:00:00 2001 From: Matt Wise Date: Mon, 6 Apr 2026 18:32:10 -0700 Subject: [PATCH 12/12] Polish DMG installer: light teal background, coral arrow, V2 icon - Regenerate DMG background with light-teal gradient and subtle helix motif so Finder's black icon labels are readable - Add coral drag-arrow between app and Applications positions - Stamp V2 app icon onto the .dmg file via DeRez/Rez - Add --volicon for mounted volume icon - Fix Package.swift: swift-tools-version must be on line 1 Co-Authored-By: Claude Opus 4.6 (1M context) --- ConfigUI/Package.swift | 3 +- packaging/build-dmg.sh | 26 ++++++++++ packaging/dmg-background.png | Bin 27966 -> 30386 bytes packaging/generate-dmg-background.py | 74 ++++++++++----------------- packaging/generate-icons.sh | 0 5 files changed, 56 insertions(+), 47 deletions(-) mode change 100644 => 100755 packaging/build-dmg.sh mode change 100644 => 100755 packaging/generate-icons.sh diff --git a/ConfigUI/Package.swift b/ConfigUI/Package.swift index 91f73e6..2ed5f60 100644 --- a/ConfigUI/Package.swift +++ b/ConfigUI/Package.swift @@ -1,3 +1,5 @@ +// swift-tools-version: 5.9 + // Copyright 2026 Matt Wise // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -12,7 +14,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -// swift-tools-version: 5.9 import PackageDescription let package = Package( diff --git a/packaging/build-dmg.sh b/packaging/build-dmg.sh old mode 100644 new mode 100755 index a75d50f..dc6194d --- a/packaging/build-dmg.sh +++ b/packaging/build-dmg.sh @@ -64,6 +64,7 @@ cp -R "$APP_PATH" "$STAGING_DIR/" echo "Building DMG..." "$CREATE_DMG" \ --volname "Graftery" \ + --volicon "$SCRIPT_DIR/AppIcon.icns" \ --background "$SCRIPT_DIR/dmg-background.png" \ --window-pos 200 120 \ --window-size 600 400 \ @@ -78,6 +79,31 @@ echo "Building DMG..." rm -rf "$STAGING_DIR" +# Stamp the Graftery icon onto the .dmg file itself so Finder shows it in +# Downloads / Desktop instead of the generic white-page icon. +# 1. sips -i embeds the icon into the .icns resource fork +# 2. DeRez extracts that resource as Rez source +# 3. Rez appends the resource to the DMG +# 4. SetFile -a C sets the kHasCustomIcon Finder flag +# Requires Xcode command-line tools (ships with macOS developer tools). +ICON_ICNS="$SCRIPT_DIR/AppIcon.icns" +if [ -f "$ICON_ICNS" ]; then + echo "Setting custom icon on DMG file..." + ICON_TMP="$(mktemp -d)/icon_tmp" + cp "$ICON_ICNS" "$ICON_TMP.icns" + sips -i "$ICON_TMP.icns" >/dev/null 2>&1 || true + DeRez -only icns "$ICON_TMP.icns" > "$ICON_TMP.rsrc" 2>/dev/null || true + if [ -s "$ICON_TMP.rsrc" ]; then + Rez -append "$ICON_TMP.rsrc" -o "$DMG_PATH" + SetFile -a C "$DMG_PATH" + echo "Custom icon set on DMG." + else + echo "Warning: could not extract icon resource; DMG will use default icon." + fi + rm -f "$ICON_TMP.icns" "$ICON_TMP.rsrc" + rmdir "$(dirname "$ICON_TMP")" 2>/dev/null || true +fi + echo "" echo "Created $DMG_PATH" ls -lh "$DMG_PATH" diff --git a/packaging/dmg-background.png b/packaging/dmg-background.png index f006ddc5d65ffaee195321c38bf4ade178208702..2f7ec7c6b0fea5fcbc79ef77ab633d207ba55f61 100644 GIT binary patch literal 30386 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
?BS#rvGd}w_ZW!Ml)>A1K2yOEk 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

wyuS1^f|2M|8BndzX|ps08hBo^=INJded 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

B1rdUNkl;n z@WSIF65-ILlFjel1*Hxca?Ol(_py`#0m^nj}N7MDB70V^3UIZKXCI|Q= z0cGJHQF}`;OV#ivvh_cu1?EZkde zUZ~T)!-i5>R)BPA6u=Rg78(`iy`TS)dP}>iZ59;NVo(qm)=GkcGLU6>unvaMScx1g zgq&hbBF%(_eyym14Gb0%J_#&qv;YuM60DRVo~C2UI3-!GsPiWa3c?2k3qe8c(YrYr z)DI8Z!rd~&PZO-?)Pp6~@b&4kdWNUq>*_hnObH9U?|{>8{BRB-HROUrU++AFqF4M) z#FunRy<#5%0Lu+Cbe&?V2PHi)2DdW~wu z8J7a@Vx%;=Gn-TrWcrLJ{lZehTG6l3QV?9xs!%hp+PQ!F?W^T=CHLB)>=FqQWNwh? z_kOLyDpEoq)DOA@@^}=~Fi$Kh(9{{psQ@lm5Ba^&H55F=}`xXx{W+OFWC0r0!l;p~3ZuH2>83oM;;yNg;<54hnzC_4Co52fPiGJ2- z9J{2Wv~DbP$c%-)!hpkwPS8-0qW4U+;}IAfWT$gRdz*OnA=S+ty^;u;JEI^S3IZf{ zkc%@Y+Ddo#36cP5-kF6?iJDxPC`Q`8A>bHkg_&iD3X^)yISYa-derK)yBrPP6WAn6 zqa^S*3QBUoIPszi)?bK5B5+O`LgM|dM?DJyb zwtobH1Q-kZJ_8i{pc;2B1srBT#I4o-PmF1Cd@-Lx^wUPIzi@Rk5kW8tdLb}73hE#f zL`D;11ao(42BwJxc83upD~Ggct{7>8R8p8?Yty+d8SD&sT4_&N#!cc&36F~LlXYo5 z+-3PPhf!6!MJzvDm5vDo@jjE%LBHL@@i8OJ7a;Z78`Wm!g}?%+#8<{tQh1mY!d!9Z z(y_yA1koto_n6#6ndsXQmZcJ`zi@S-dQkB|S_ouD!73>VYUsCurbj`)wO$EGXw)4b zMMg_Q1`9J`Av|EnhK0;w(uy%sYK6l|B4V+)RSN!vv}FJaq9Cw96x5PXP&=JLKT$Rm z1nIG_HHr&Vj!Ol+7>*|H6vBl>f)#n4@qVa6-b2vEu!Tt-PocZBz}#GOW~ru+!ext^ z9ft$}gOo2!UW?V8(0r{|BLt@|E+DY^neN002ovPDHLk FV1gHBeG~uy diff --git a/packaging/generate-dmg-background.py b/packaging/generate-dmg-background.py index 2055a58..05303b4 100644 --- a/packaging/generate-dmg-background.py +++ b/packaging/generate-dmg-background.py @@ -17,33 +17,38 @@ """ Generates the DMG installer background image for Graftery. -Color palette is drawn from docs/icon.svg: - - Dark teal background: #0a1a20 - - Teal strand: #0e6878 - - Darker teal strand: #094858 - - Light teal accent: #1a8090 - - Coral accent: #c94a30 / #e86040 / #f07050 - -DMG window is 600x400. Icon centres: - - Graftery.app at (175, 190) - - Applications at (425, 190) -The arrow sits in the gap between them. +The background uses a light-teal radial gradient with a faint helix motif +and a coral drag-arrow between the two icon positions. Finder draws its own +icon labels, so we deliberately omit text from the image. + +Color palette derived from icons/icon.svg: + - Teal strand: #0e6878 + - Darker teal: #094858 + - Light teal accent: #1a8090 + - Coral accent: #c94a30 / #e86040 / #f07050 + +DMG window geometry (must match build-dmg.sh --window-size / --icon positions): + - Window: 600 x 400 + - Graftery.app centred at (175, 190) + - Applications centred at (425, 190) """ -from PIL import Image, ImageDraw, ImageFilter, ImageFont +from PIL import Image, ImageDraw, ImageFilter import math, os WIDTH, HEIGHT = 600, 400 -# --- palette (from icon.svg) --- -BG_DARK = (10, 26, 32) # #0a1a20 -BG_MID = (14, 50, 62) # #0e323e (interpolated) -TEAL = (14, 104, 120) # #0e6878 -TEAL_DK = (9, 72, 88) # #094858 -TEAL_LT = (26, 128, 144) # #1a8090 -CORAL = (201, 74, 48) # #c94a30 -CORAL_LT = (240, 112, 80) # #f07050 -CORAL_BRT = (232, 96, 64) # #e86040 +# --- palette --- +# Background kept light so Finder's black icon labels remain readable. +BG_DARK = (180, 215, 220) # light teal (edge of radial gradient) +BG_MID = (210, 235, 238) # very light teal (centre of radial gradient) +# Helix / accent colours taken directly from icons/icon.svg. +TEAL = (14, 104, 120) # #0e6878 rootstock strand +TEAL_DK = (9, 72, 88) # #094858 scion continuation +TEAL_LT = (26, 128, 144) # #1a8090 helix crossbar tint +CORAL = (201, 74, 48) # #c94a30 union band / arrow base +CORAL_LT = (240, 112, 80) # #f07050 arrowhead fill +CORAL_BRT = (232, 96, 64) # #e86040 arrow shaft def lerp_color(c1, c2, t): @@ -65,7 +70,7 @@ def draw_gradient_bg(img): def draw_subtle_helix(img): """Draw faint helix curves echoing the icon DNA motif.""" - for strand_offset, color, alpha in [(0, TEAL, 30), (math.pi, TEAL_DK, 24)]: + for strand_offset, color, alpha in [(0, TEAL, 45), (math.pi, TEAL_DK, 35)]: overlay = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) od = ImageDraw.Draw(overlay) amplitude = 70 @@ -90,7 +95,7 @@ def draw_subtle_helix(img): y2 = int(cy + 70 * math.sin(freq * x + math.pi)) # Only draw crossbars near where strands are close if abs(y1 - y2) < 50: - od.line([(x, y1), (x, y2)], fill=(*TEAL_LT, 12), width=1) + od.line([(x, y1), (x, y2)], fill=(*TEAL_LT, 20), width=1) img.paste(Image.alpha_composite( Image.new("RGBA", img.size, (0, 0, 0, 0)), overlay), mask=overlay) @@ -143,28 +148,6 @@ def draw_arrow(img): Image.new("RGBA", img.size, (0, 0, 0, 0)), overlay), mask=overlay) -def draw_labels(img): - """Draw centred labels below icon positions.""" - overlay = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) - od = ImageDraw.Draw(overlay) - - try: - font = ImageFont.truetype("/System/Library/Fonts/Helvetica.ttc", 13) - except (OSError, IOError): - try: - font = ImageFont.truetype("/System/Library/Fonts/SFNSText.ttf", 13) - except (OSError, IOError): - font = ImageFont.load_default() - - for text, cx in [("Graftery", 175), ("Applications", 425)]: - bbox = od.textbbox((0, 0), text, font=font) - tw = bbox[2] - bbox[0] - od.text((cx - tw // 2, 258), text, fill=(*TEAL_LT, 200), font=font) - - img.paste(Image.alpha_composite( - Image.new("RGBA", img.size, (0, 0, 0, 0)), overlay), mask=overlay) - - def draw_top_accent(img): """Thin teal accent line at the very top.""" overlay = Image.new("RGBA", (WIDTH, HEIGHT), (0, 0, 0, 0)) @@ -183,7 +166,6 @@ def main(): draw_subtle_helix(img) draw_top_accent(img) draw_arrow(img) - draw_labels(img) # Final output as RGB PNG (DMG backgrounds don't need alpha) out = os.path.join(os.path.dirname(os.path.abspath(__file__)), diff --git a/packaging/generate-icons.sh b/packaging/generate-icons.sh old mode 100644 new mode 100755

D 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 literal 0 HcmV?d00001 diff --git a/docs/screenshots/menu-bar.png b/docs/screenshots/menu-bar.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed205a858f577c9f987f0ea16ebee460f781e2b GIT binary patch literal 44711 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 z%0AruLb_u_gHt1a0*QO?lh|Kzubz0BPHylj=_d|sveuVavF{IUWx8ctJC0E{CsMB7 z&CJq{M;{sV$qG#Vj0 zjM{-wd`5=#IAxX(FnQI_W-A`w8TsM1cb%y3{P3w&*rgUX<)3kby`31%!mibz{${Hs z2CdxXQA!lm7&nU@UpFD?$lh5dKa-v))Zj0j+_w@`Dl!t(r&yO(Hrl8!qaf>FnUUyw zK!k?Y8AZ8*zLrZZb7VKi7J`14E-@k#ZmC>RrbRg`9u!kE5}E14QF3c~`to8JX<$2T z*i3yD%P5pXvN3R+=l&mAR~;4Q*7a$SMq%g{q!~g&q)P<>LAtxUyF)31lm;nb$bq35 z8W~C&hHj)my1u#Z``#?D@{+MT;ea`N^e`lX}lW)m!&Z~@+^lW;qN2>8fIBQO< zbuGK{%xJ*Jx%HMI;Afp|wQ2~$FTm|6n(*I}g z|H}b76g9aZ4Nck$6vDl1ih7(70XBJ+I`swZ0@eIP4ZeuN9pWP6zeMYQpI}r5B-!Xy z%_uV!g+QESR2`Fx>@?(64pZs_5*oI@NdMj*<=U=ORD3*ADhfG zQ94@YsR7{SiPx48H;%vA@gIt(M3A46&}pVr_p4SPsS|cFS!U#Oqa<+fb8^-YLe%BM znjzmPeiKWFg7*?CFThEwUE@cKLI~MRm0@3JjGN1&7ZH7@q&|Fy4XUP@#bz)yLC4Zc zX2n&iiCJ0;~T5$eHN9gO*ay$lf}gHU+~7F~XyP280kN5f-)eZ~ygG|NYx9g909$(6x9%feIO=rZ2eKQe@w3 z#C)Tq%i(Uf$dfG9SJ*aTuDAHO(uFBKu1KE`FXNK^w~X?IAaQ~}vwj8%rq&izD-lXS zrFt)iD-;Pa1hHAXLe-N7+hRO|HmdkUr5FEvuMmoF^&m6q7rW-K0gTT_+0r5ifCJSu zG^`w$Z^)#EO{B=E?6wpXo*0)vA4w`<#ySm-Vg6>?lqJe%l5d|ukRj@nc52??Z#`}` zCcG*1CemF}XdBo?E~sHH(6>BxQG``E?MWF0W5h@t$vL z$k+sV;Ef=+3j;CivG*_rRTbDl%;CF?y6S(K#lJr(7%1tt<4Gaf6VU_mTD(I;z)GpG zA`GpUFgugPe5m?;4Im80V1%kvldz{~T2yeM@v$TWS#jBFaqmLN$lKY7XkL^7>%E=v z1fIFe-y_TjKv<;pHrE}Hq=m-sWZd{LP+R6Gq%S-HPl#0!Fr)4C)GF#X>wzm+Dg{YW zWJVu3V;riGO|~%1OT(Q30G;P6ZJpS~bq&u~rE=(h{ri7c4+WRMPh50aq_0F#;Q7TF zBsuX;vjDdQx)$^Rz?N6tA@lm)DkRV-qLB3PME%dqD|?AClBdaNz+Osx zzFJJNQJ795i`XQ;_ZIOQD;5;i^I^H+Z}e!KvlhlNcrLHW*<%w97^*5dzhe6hhn2iD z#zWLB$nQTTxWOKlW{1t%-UN+|1@Pc4N1*_cw4bvb$QETw#kkeE)%}Yt5e!H_`iQYV zYSvCD&ZioMs%km0`=8UC6IZ?njV7!4LOh{jsg!Y_m2}8`<0i$Mv!)8Nbu>^qN*SUI z>yM{NhfPAdxPTc#zznZtbn$()ijqJj%GN|4sOlojO`1nnsgtAtO!HQUw{cMNsF9)B zr+Vo9Yvn)`9^6WQRMd$C>ng+#=H$@hRAI>};Mm8I8GJN$(PHzc?)vtqgTfB&XWV@= zQpzk5y)z8WCbc%q*{^9nibh7X_rG#&A9`iDXl@Kc~uH5DJQ`*_{|`SPe|w> z+OJFUx>fV@1~Bt#04_d0`I9i7(^7&nRN6yJn3$>W(^axD)_Xf0JgtZnQj1h#=XoX| z!xOa4F>4+QZVxJF7O=;v}T>|E7|K*t^(E5hIiTL<%qzz~bB-ebDA}V&w zaY=nkZ?dD!q8G7ql=!$bSShW6;kR93_(1rgt=dRQz7da9j?8jGE`o*^24qXg#6-j|V?Lo=A<3Ix`vx7DmpK#q+ zkG^*SCS@4ByQfS1NXQK^kNwSB=JVl^M(6{bp~#^8viwoxYEHU(De~!#xA(oMO!g0~ zuS@z)^U(%q(xsLi9gHu^RNB7+e|^H?VGi$#a{1uG>bNEiw|b&{b6@y?dD-@kjx|!1 zSi4^;rHoU=z}gDF!Ck3HNz*n-6}+7wKP&g|_l1w2206u)Xf7Kq)UN)auCL`2KfFcX z4~i%&UxB0$n7O(N)l9cY@XwFG#i-u}r@66=!j=XhM}&v%l7GN@ERI7Qta&%OW)@UxbayiM-z6P z;v350Q~s&equT7NK%IXn(PI?1$JtKd$O6;{vIT!grsX z>I@|62U7hvY|>-+rvzHe$sJ#Ta)J_@WkNC$z;lKQucF?*f2~>zjm}Iy0u;nyoUdv{ zJ05W}a)2c|z#7xRVdq$&$9}e~RKq ztb~>KvCuhaq`L>%gtld|c}!@Kh7Oii=Q9anv^pv}0T7x!W5%KRG#ng9$hUxHf{1-u#51pEaN>@Muf4?Nlj`^{QYknRLRCT zdBgLKiez2Tb<9T(^6+@c6(35IaeGto&s?Yl{wC6B;t@+S`$S{jzegr@83D=+(Lk;41Lb&cPe-kHTB=E>6 zf$OJw_vSZfp#TEN&V^}RM|K|NK&X@Y3{dcIe;|Z1{B5k9q<0$2xDjPR5H0%zcgRUZ zf>_5)mxYgni-C6diR69WAUy6nqz;cYxQ@OQdIR-&Zy{mA3d1aJk)hf!cwC~Uk^>y; zHa|xCdmV(q6v4!3_GO?hCiQH1@J5>y3<;C|6KiKhe}Pecex5z~I{@*T#ANJmrH_)x zBYGj(g>k|0i|rbZtRG2kI$MS9i>n0G40vn$z5=`d-&qNQ_h>v;Y49!HxulQs!MOrf zj(zH&N}gG(95=NX`Do(0Iac8x0y7WZ-sgSoqZg8S>qq39lUUBUA4HHpJr!b0t|bmH z%|q?c={$bF6jG7t?eZ^?4#pCKXqn+0lNZBEd;naI!=P1x&m# zclST{Oah6fYVG4N$F6Ys^m|fmAol^@56eRWXDfOO@+$W3PN3Y8>U~>G7%ayi(HbJ8 zq#L&Sz*!hf7%@dBGgT%O5*7Y67GZK@5}m2WnWLVno{j&p)6+^w9-8dozaAH9rS~0` zqZ2WQsxRu{1mo~TtG}oxY6pYzL;S!cg`uC}GLPM#8(Lns(p&#U|A&h-(2^zhw%v;na7W8J;U-GjPbH~;H zt(pC2*zIDE(egZzXYqJ@i2>nJ4ieEErC`>_Z=EKz?Gj>Ze<)>L-hT=zY=|lkr&O8C% z*Ls=kB`n}G&F{8VEWbF^4nG5oAh6^f?&Qg8Y&JKE05`i0hNO;;XSyHuLV zCtXFfyrOVVQ2rYnt{N}U{RPvZ#L5P}srTbHEk^oLUu0Cmg-M@Z%KnCoQ38|-qnXh1 z*L1v3jSQ6Nfbbi8XoWrp(GBjm+iI`y3QS1~%I6EOdI12_+?4xyV-ObqL*&7eqiXWd z)QRU>);ac^2hUT?jFV0XmxGdY zX4x>F1)172n`Sal^CRXC8r~;MB52w^+If@T7W>)6F^Y_EP$_3mlx#E>=0R!rot+tK zXh%_*wQ+;Z{bwj*ko57dOE0Xw$f2!tryp2j*aXYy0QPo(9>hMY+1lb{Z+{%S`t?%6~SvTT9D?C>XTH$NjHV!xCdUTd~wqI&|p z!5ee^*E<)*w?nAj650rWi()XP+|Z4++@{;`4Qu=Hb*qSTtk}6wK(s7&$y^lo-9R^k zikt?#?KU7RBYa!3s~WorI|Qk^gH59fYpWxDH9Qi8`G~9Q-y8D~c}PK9&6OreJ1jGN zyOe%L(y1o{qU-D1$f?&f{Ke(NmK-GFd zz;4=va<6$3J3JRJJ_al8p5`JLNEOV>8&3b0v)A%@}Js z7bN>!$KmatERbVdEUn%o7ByoBj{2nP4PFeoNDF+fM#lkYX~lfdLf#_%S7hIY_4PR- zg782bJWNqg^o7Y+YJoW^1!g|8Yfd-SXC%qK;`x_C%AnvHs&J`|G4!={%6}Ia9TqyQCBSn^b#`0u?2%8sYmD?Td6H^A6Q5 zh$L>cN`s6%iD1{RMU~&x5r4eS%m0=&{a&L@BZP=SGeIvd2Npj&u#PmO; z#-JT4llQgQf<1U@;N)A~2mM5$kSmUa-9;d0RmDsJA8<*az79-cW~lP7{dx?2VEpTY zIhBrMTZpU%6{|Lt2FK)>O@5J`bO&Qm?!N>;Ht4wN)tm1OTGpl&`0c9SJ%0USP)k7sEbfjVqX3guSDPDzl8KdiEgxCIQZ54L*2av!;=fq4~(3Iqoj0OjhhkJr15WYwRqEk z?yv3#YJf-CFv)r}NlN;1`yFjIsj0G$ImW)<$|o}ojuWIGjqBm9N{d976XWUseu^SN z0=*0)za{rVa@y}Prb0g9yW0F_)FnK>bB3>rMwIPtx*kLXDdd`e#vh27jnVZ&R)~r? zTN|e`Um=CKc6Bq4)8KOzE_1j&986C004pTO%iv$pz7^V{GZLr|a~5Cqqq=G@xyP0Q zSM8{>@N_OPEC--eQ!(Vz-|#QB!;?cwbsUKFl>G33Bb2x9$3h=`_nj{|I3S zkx3yzd)4LyTO`?r&9C}GOdgmdJ!+$~C^ktY5R5ZTaW&5we|q103~Qn3{e)M%#hYI1 zcnxS5C^Gs&#^A1v{iqFvHUKNw(HQF^Eb;%*X5~jsMkXMhQG;vp149xcB#HVf4}da{ z#bpn3jrVBzSu}z&gFh%sIYFb-1`$g2CP_yVwy=}5OTn%m3^pSY67!Ki?=`|yG4STK7DH6r%yim{YY>joK0kumkC`Fq~7`W7L*`6DX@GCrW{3rR9S z>tIAbCb9siwU;h?1AvJr%{Zz6Q{EI^i4gSeoVmttSsyL6GJe-Sf~C`uWV0}HAQ0Y1 z`ijD3ey-JN#OsW!r3AM25_i+s%U;gdWYwH*9{rUqw=|tOiP>{-+3ellDJLRG6XNcR z40cg=zyvRMW6eDqeT5xTo1aInLlTGK5QAj{e1;|Sl%=EELw?AkVZ2X51X~X0_w&GN ztl=Yy2>MSJ`A>*zVl29fH1_tc`za`VbSo>U+EDPiuy=J{hNlxJRZ)#ZuDJ+PQjjAI z9#&WMH@@MQUfmf4?pnXKsUQjo1ST#MYp-IS&{?OBx{x4560 z2R&*JaqCW^_NcR;szA2AqVurKyzpkuBs|f+_d}nMI4hj>zVt~e`ojAiM1a7>uxHEx z^w%6{_PBS`QpTMcVy9SP_A?AAg~hYl+W${G=U5{mU|z*dS{_R`d^7m9pb zF}0)X(jtMk*K#IbTYkGKXv|~6)i0K2t!Fi(>6=L~fm8x|-C*~moW|L&K<>4+N&%-s zE7NlwFSp!`h$>WT*dKlbA0=2jx5O%kdWX8=ZO{Y9is33WgGF5`lZcc^%+FytBWBA< z)Mz_4Qok37(ACp-64;-iyj!Km8Jr!mwK3m~Q-~uH>tpii%*e~5`MTR#W(yguh<(n-Tu}V2H>j7%%t)48)t*_Qj3o8{9z7^XtCY` zr%MFc=!#L+{eJ+XHx@&pxxn(Yy4LaKe(e(=?{1x=*Ap?A1NHyXxff{9%@8N>zm|Mq zieV*T(6WjbcB$vocd2{2rn3VPoC^a(auVOmrZ|(-mV8voyu9x-kWjD;KG+<6pu`>O z1+0@l$9oly!W=^Hs`b`|zLBs7<`SR*(9!4lEslul&I_dZYSvZ7AOg;{Qsv~(NLrt% z35R*Rc(J3DG-3dKIrqwNpA9ae<~9kaVWuEs4V>4a(}L0UUZ(AWlxg$^)sO=?R=~#hnzz z$3O2orXZ{j5^Ql9^2p0nT7=LwItinhM;hry9WacYVBfu(;9&X}^TV4yz;UL9F*8y< zr%aH3<6!YNr!His)_zXSe~M=pQ__e#aN7Lz*ig?=Rxu)Nzf)U7uT*|jU)8=0ZAy~4hiTbB6XV*i;y<;k{sZoixi_ipk%iY0fKu{ZJ!wdHI<6jo`UgGa)OK8fDWlyPOGJqs+?Hd^-rczNbEDOkR&6_SlNM^_o}2ZkiX7j?`?I-R0ZQSMj~>tn8sN2=r>jN27?nqGkQ&4 zA8TrAW_}iC&V&&_e;k%^b&-N{*i)pEMg3az)U5o}&!yXpzN(Ddw0*7qnz zjA3uf^m3`$4s&MteO~7r-ZcizY}&t>$}^UJFsf88ELv_*_spR8fCKP?*zYJ4yEGz zm#heNz`{plH*8Ux=FHt@0bX8{0BmCd6k0$zRJFoKGV8T%PNMDJEEgpWxj?{oT6CO= z@&Nz5#uI;m(%L4@*Yqpa*gdd_)L-{aPs+hsWmF-i2S4%6X@=UqUd z*VoOt7Sl#bcKFgQaoBVD>!pL$&&o4H0Rb7?uxZN-Yh;djd&1I}IVoR}RxZr%8XFsT z8yD^*tGtspF1P8Xdrglp@o5V)U8-~kXbp*f7K-kB?>&ugqXkH>baDt*y*|y0F?1C_ zKU7W+^8X%fxO0lo;|_wlsetp(SyKYPKqTTxEQn)jM?LQdcQ}X-&98e`2p-SB^jge` zoUIo)@XXI?d#T@oYy`n9+3in`_uzS&0OaT(&$2+wAZEwPU<^Ev0bg_m^# zg6&K)e@7!0oXA#ViZh`+-yw=zL2riTeb6sypajT1fLwtJp^!v?;q|Dxm45!(M->q~nPN8prDrlAb5PlKlO&xMt1D(iZ)9P>oTdu8z({*)}3$IcIV zY2d0IO(*BvgHP~YFqRtDo2F5n-e(+OY_%~lJlK;i4o+_x=H920ES$Oxoeydlmxf-p z_I%~&y6nmF8lmwyCxX1!(3-C@XfS&>_wE+teQEt9owc2%N}DD$#iIFRdsH)?hB>xe z0VT61_NybKtVlX5;RxXh3N^F^^-^L5Iz?gu|Dw9d}DQ+7-K7a>A(ULp07 z1mhBZghkp5ggaG7$>M;J)HolqcUDNeX_5`Vij5XF9kt4Bz8MtBu>I>kg7l)VYbUXF z_5%q`#J(>tPF@R&Y}284t82CZa?d9BJlv{8y=lnE!ty=QAYp>gToE8^pwWA&q}9~Q z0j()~9L^fz@{{m4^nGEP?8LnstYzg_ZzKX&ALHtb1RUwX-G9BauTmL1o^pGTJ*@Pq z%J3+?R5|mBiQ7=~8FQNc<7hI5XRJF7()s)`?a}LP6W(y*Q8v0Z6dfM!_iX1O z^4Ho}pIGoYvtS*9&OD0s>d{kgJ94{zEy>fk11e?eoI^;_;RAvTyz8*5T%18qlr4Gj z`tA#_Bai1@44hTJH1n|vTRA~#@!12J)S?wo0eYO7sVKaruGw*6%dux7Kgb|s*AA>e znlf!8?`=p6kOIjPt`;;ZyZk8dT7J+z1X7aa*~dEA@QSFns!;pPnX0~Jm_mUFPLR_r zCVsFetpT;Y9iCEKy2T;P31V|N>u_hg9Tl=>^IncuoLqjHx0lz}`usjzrr}zlL zdkz>LGg-DDG=ADHern%NxNR`2Z?yH?Z8+J}vdr*~@GY;%+GrCE_WQdLW3>J-Wi|%% zD&ufCmV|kRxC!R~ZwJ@@nkFJxAY6AKeH_m?ilk|m7W%LYUaY3iA~UxGc1FzG8KY1X zpr|@)-51RR=;(Z4?dJ0S-sN!^&0RI0Y0$VIjG12NW4Fep7}kKc?AbYo5-4f`ZQXCy z6d`h284!%Ootx#n+vs?@^o_k7?C8JI=pfQFsM^h!yv6O!$k9&PdM@?Egk_P1<0q`6 zBK=U~jMCuF=L}~BF>*H|e$%6oNGjdmXf>q$McYM+Y6X*heKMnJ6>kZo7sU0@slyN+1(3TY3P$1h0JNd9Elc*@}v+w?M89tb*4P!y0fP%bp`&JI8IBwUj?q|(Qa@_2#95=J6i{~6_Tl`n>So5;C~<}|ug{&t;pEsSFFYaK6Gx*%f3>FE zyXM%tAb(Pn?%?c%!i?7YwW|v$s3qCt;iCJ&R_5jmQ>(i2^QAD6Iob1$@JEZAChfG! zegc%A8`?DcF{(qwkU+Z#RarqODLAcGe9I zY%Q}~Gt(q$AgHg$J+PT{Ft^dM9pjG$PS17su0NHNDwV2{;E6a!PoDAB4`fEQU)rC* zN_%RbG;n5&t#|-*xVCYwpzbF(tkNn5&jk<^>*o@x=flODK!*7o*e7?>tA z`ki&m@Ig5uR86@(&;rLyo~2#w#s-d@x;^I$X~SH&Gq}1YZ3%PTGG>?$o~v4zo9cBl zENh#K^+#M-l~UCEzzg00si&2njh{X9*xf7h2mKHC6)Z=05O{lF%B4Cof60qxIr7!$%Ca65M@BXz;cdaUqoSi=z7T+ESfwryfDY^Gdc0 z=k45whbBqx-8kRgjrsZOekMUJg+Lls;xni$9sOVYWExt5r&^`IoI4yk@n1cfKcx;V zJ=`5{weaFnYBJ#uJzQ?Mtvk8e*`C@y6Pjwi$4E6r8qp``&~3y6<-aorRwikmC6QO=H(R9oSS{Cv=2Q6YL`=_7sT z_$n@s>!T0PHo%P%wY(W3_- zT|t5N1Q8)rS?8RPcUOcJF;gUTy+oyzOz;Y0>JghvGf)aqz^^0Ior3LxC-}RP`MKTq zYbO@O$jt0By6w4#s3yJ21Y3^!J6vXXIPI#dyrGDEY3hec53b(A`|Hy$!~!%K2KUK& zeucKEZPe?Ay`ha(*~#l?rK|HrU+Y_N8~xP)Cq#?5JsD8^6oz$KcE4zX=#t6NN%WS1 z<=;@IBIb8Q@_3v}6~@)$kI3boB1${o zsyjUFre|O1YyQ!dl*xV-bZB9mb7CFzntoYQ*EgC|2aIIxh^l3SYTLK5o06BDR~3E0 zWOu(9#4zlH*5}-1qKMTIh$Hu5LkwHm_Pe027Kb)jWRjyp#ImfzzwsA96h-gox@rVS zGC35RIUElcS4-ftY#$u3y}2V377DhX28S16AR!4ezLb%C+t4MYi2JWTo*d%`7al9M zL8NVOWYq}^h?Li)6 zALVDRy>UuQN?>sY&ZX)?rZJhdYI>@Y6C4tu0{YhR~KOIwTYqMFVuNUNuhn!4kkp}m0rBc!Kk zNF?8~-XBUNRk&D@)D8OR>$`$jF^yACIT3B&;QbC&_{qee^RjxlZcdPnO)!ak8ld->J zk7@tzRVLP(GjI6$T(V@Z`}DQK z?YO|r;&@)9jrfU;t>__}t-&GN_SKE}G_=D|P=`x5uJvIV$;T7%b3=i;qbo#4{NZRs zU}IKUcXWhQ=Xuqf$Ly)5#;jlYK;vrG!15<^(hP^RK(~DKU3r}ia@tVy>H!RztIU&y zyZy3^TDAFD(-ve&hQ5ir;k&8DyoE~i@^jiJEXf?ty9E4>O>lGo#(IJFTZ3yFQ;1vH zTGu`o(Zp@_oO>YdX7INbUSGpvm~}`i_l_0;K%UZGy@GKFb;)J6{HQw4vJH>*tP8Lt z&9I0zyyJuW%w27#O_@)_+$FAWlkG2WNgQ-HaKx6n#jeLrkW2+O(v`JGiAc5U{1e?5 z&U+R|n-wVQnJnSGGYeV;w&>lnCTkd>}&`n2Pd_l(`r6^mtx%HK)(${WAk<#NG@tTT25V}2#ZvC0DwFPv zCKj@1mF$#;;U(?)mq%|zTd#1#)*zgX2i_B>>5%DK!vHddqdOf;j?XKOFi6I=$1Inj zO-!@Co{(N91sMV{yCeta=oc^(zq=cbGp;gX}MVYy;!)ZT1%>3Yucv7Y=yLhFOfCJ65Qkc_eTWFP6K{kh7ldEDfdqsPLyq?ogDPPliGGNbZ_Py?2sQWJu z81$32A&U+wFt7X!z1Ny_0)RF(50 zODGk;?DFz?N$6H|0DF{g+D_8o!dwo8=l0r%6g!R3FH0703_T{5{HYOWx-P zJ5KM>*xFy5t(C&umu~(~qlOs_80B<@b}oSpm6^f=<)2yn&jP!ab3g(}Fab{J3Jz!0 zMILvJlTmZHsB$~S?I4f(<^Gi*M4WSS`l2w#VLNa$uri?fMErnuuLlh@|9dYZ1&||V zzbKL$#=ACOHbx!>?ac_7AV!p}s`Y-&h?W$o3VmwsnlvP+T};L>g^cR=+Mkuw2XwZV z5da1~X(k7B(1QyLc~zF zTa_2N2Oj?D45JTrG7G!krYVZNx$}WRU%_~Pt=8=QIJ}P6Vw>YH0KGFHZltB@NEd6# z%U}0|O@goESf6^h#lIMoz45@dO)7J}8`-4<)2=f|{%9EF?aM?2;u-0W45p%(ATZ~- z`QP|3Cl(?n9y8kpE9DgmZmU!kV+3M+nIuOZ<#?2z&Vnz=v5$fp_c^}~TVg3$d#>=y z@uot2s$qesKBuc!=iwt+d~4Uz3UC_d*8qWe^wz1#I{2yakc}s7#xawiWbvmy{!1bX zer}g-g}HbkTBQczVcsvgE&zuPO}L`R*T6y%=5$`6H#TjsmLxk0|AKJH!#JV45#%~v zpr_dp5JH^ZsIPZF%{2cWTeE&Q}sY)z~6bttnM6OJyh0eM6G zg&A>YvASQjG+!`IxWGAMVuZ}B=I!<8R!G`wYodN1dPv9pUf1{e5 zHi=S758eDkJwKB_i~UZrtZJ5@BZ*V%xG!lE9#g~Mr};zM!k9@qeC#ptad57CuD8^Z z-c!l_^W8%Gy)MI$)-`#~cKaRsNk%u~S5sFBjm<+Zl{vaN&qVH&&rD{si0a7tgS$TP zEechBvz~Lb|4te3ppB*@f02^VLL{8Tb2l=&qbb>MI;r`@vurR$ujt5Q2*P+Mu`ABPCoATT5w{2=#rAx}Y zI>F`eB-;fH9F~dQ_Vg1WH6R#S(M0#Wue@WS2C_b)VjpTh(v^4Py&t+byY3e`=WG*r zy&mrHX}vKrRwc}R%_n#f*V9kyTX@Q_gA`mkf#RD=S&&k62Q%E#4>EXO}O?0fjl( z!cU{KZf6ag_Rwox#=lu+usmUAT6SuEhPs`_o^ZtSopbkx?xMr)l=!&m$edAOHl;3V z`EXf@{M}f?r~bWi-8F#s?4{|*>s-C#P-?^Ea?i=Zl!i@d=mX6Txb1C~X>D8!S>VnO zyhj{Bw%~2cjBQ!f*roPOwo2~sn51RQ_J(p%$7CMPre$5i^{kqQp!r{Cpo~0!YeV;c z8des}!E{)JF?2yJAnTe2W0n4hC>~vItG|xq2Dl#&Ot`ltelSkySCWhgl*G0MVE={q zG>3E)#8S>Zu538XJn2GxSiN&2^zkh>o2OviOX^3vN{{!*zS-pR-q!g(tey?@+>NoO z^pC<2h|_-hBl@r>vq-6`Y~E2wJNdaX|GXL8A?rua^1AQr`k|@GYPgHgW@&ZfoFU~u zK_>o76yg%%GU9?3Olf)=Kk6PH8X_8X)76wVQ(yF}9JbRO0{fW|#Bfb*jF%(;PMHQ> zmesN{@1$THsprA&4vMBe^eCSnONd)U@TL{*obMVcfpxb3`E`p2!QZ^*gy{o$J5Cwv z$j{BAx43YYC~*l0w1tzam)e00RQw|D>EDe$kui?{f!K(WkS3Dw^VM>b)^dcoY05Z! zTkK_wuOJkwRt$zi@+N&QeM_4`c{vTB!QcIU#9MxQPwHYPs`+C*QA8QsF(U6H^3srIy z8MQ0Di-RzlQ_@ffhzEUgr*BlP%`5Dwb%39iy6a&627UZ>;3W*2F6^pzRNfLCa6Zh- zEA@H|9}nMHK-=zO9RRO1ZF~x;)ynZSn&Ay+q8_XMBh%Q44T?O#*c}-7P=yP6UxdXK z#)@Va1U7y{JhR-TFncsHVnNDl?1*R6_{U?4PlB;$@r3ShSRLpsVZG%@$)O)VqJV0W z%xUye93bwVx@U+hHOfP`b~57r1Z{q%Q(4yoVoj0B%?NR5SGdD9(nJbjN7MtgM?ZS( zV6~hRBeU2zyN`9${!!BZbmmj!P+0p<`Yh52OW5sueWE#x`-w4HL$N-$(|E5EZFfBe zUNR9Y$R_6)Q(P5D|AxyUm;+tKg7R;Bt5m0xC56Bw<>j9w`KO_>??RzLYt`B~bT*>r zOhtdPlaZ(>fhZN{4Srt@7()KFCEO0AQY@KdM98Km@MveMQvM(hA#yKx8YBTk4G27! zZfX9(6R+jNo+Um?`X>%S{YKPS@Wk4sC1W=|z)Zw5-=8t}7=iRD2wfm>%VblN%os;D z?BG2IR^HTWG??I8sTPZ|iB>tuE2hr;*f7OEup$)iCD3!~nqnfo4ZUIfg4z!rw1=qj zxVmzb&0mJRS%7F@L*AM=z^g!1XuQ5swu=t?Y4hP zh!sDIb!UdC%>_|J0=9NkL2aYryArI;+F@3ny63B1XETM+NrimIbdhDMf$JS3UyF0w;&fki+D|s3lFR zo{x!y6jA|Qc>djE!v9M}Q#?@AV?R58{#n1nLsBA@_3Uny68_aw5 z_gPytnV?I$NRhdgG+%yM%+%rmrJT6j*Zi;9IWpDE*PCRiX2_VeDNNO-`s8D&_zTRjN+HT$Md2}Ba@g8p5BEd;_t&RHzwzC4 zm!)l$<9G24{Bq5`{a=v{>h>sw)h8P<{-@!`&Y>4(D5XD61iSTf6!rvED@`=o7xZwc z{E$v;l}b0k>}_Prcpmh<;ADT>&{hwzv+35hn6}cnJ807MzH0C^Xir$&=0yxn~rfB4^J`G zoWkH-#j;wI>|l6Hk^2VS>03Sl=Oikc5ioJeXhnfMUenK>;Y9M2mbtwh55y~ z`{`wf*xj$u-E`6xsMyI?D>x@72leNL0#{4#{BfD*bmRQ77#wkp$I0o*Om{4${pdO; z=9t6EE-oX-y02u7)DwozZ?ufxQ6AE$Ku6H}6G;#ObxJTnX3fzJ?d|aV`2++GpZBi0 z8kaKmohdGi+afS+-TfZORAPl@>h-&j46RmJw0HEbepGFEw+@-5Hl2Uka+T?u&J&+o z+oH0fvb|HLg1fJ@ZAPdRV?Nh#avB`(*Y9vOx7)}sZC@j9?szkkC2;0VJEb=Y^s+FD zRq9YlYwN6_ONKFsq!_*~Q|a!k`0>(ssNgFIKeh~6aMmkN-(!nuVt#&IV3_zL{P(1_P!ZbE1@m7xi(x7PI6(mT`1CIM?!s_KA@EGt zckktsnUmJ0ws&Kmt;f_J-N(v;^ZEgHYp<^M?`|4I>n~Y#>zso9*SYW7HOhQu<8+-% z-QC=#evX&yR%hLz;06{>=`Q?Yp4{LL*mKO@mu;DD%L3os+7c~FXC5W{#qk{H!;(Pw7-A4X@32mq!CtKj$fmw$8 zdg|$nW^L+w;JXkwr1eU_&|B=} z?k06$YsbwshQ(y)*)eY8UUDngux%6Kcj4mu9nqykw9Ak`UIf{$h%8*S+#qJqWe8dL zW1A+`PH2d%t!^MLmD-MR*P6fXE}3<;lrMD8MVy1Q^c+kV&co;;Xui8CGlX2PYdlF% z7QHaLT77cMUyNw%^4BM^eGE^Wl0xH)T2iBwiIU!C4x>*>&N99PmiE(KBP-4gX=sC; zKKlQXrgiiFC@dW-#`H2!>?S!7)zGk$Hgt2nJW|2%QuTUSxZC}N3QI@F{cgGZt~(-9 ze&>?Xp#sL;JcfaRY4?%S&3%)q+3V2cYG*^t(R1GYtoo@8wdUV}gAss83mDi!xmyc@ zdx+S~ON!lqM|T7v^EP*<`*%w}L2cLc*gYH2kgNWg8VBldgif5HLj2kfd*H`PqFpT) zyZck26}OrG6WSg<`kvDWbfW!(UxVjTJXc+T=kk!5$i^*O!y6lgOMw=Lqc1nP3TU7< z;vXEaB(7lR13N_AoQarFf5pROPc>_4qsfe%7j4%kS3yP$d{h?l()gtddOTkb9T|bf zX4wrnlD}2!A!xtur5-H)*~snrN}v_(-KIQ3F8o`Y*VQ$ry3UzY#oI~{^>pe8K1{@w zMXQ}0nkr)f`w0cq3;iEo`4}Rpjn};4G-ciQmWE8f(+3*X!)gb;&;CF zWL0n;gztt-U-dG^RVZ+K7aynH49njQm-&q9E^1Vm@_!{&KFAHnk7bcBR4p>$$t+xnq46FP`@K1~t$rb!mSv=OOxU%`Y9Y@X`TV6phh}&=T*{DWMAXL4grq4rs@2v(M-$Ziy{AMWr5xHdXrx9Y?#AE>?ysH>UDrs48ozIc{35!>&s< zVvy#70AnYbJ~r9%^7%?!wR(w$cBPh^yDsw8K?gxKyWy41c|w0>jqPOpNjmEb%Qf+v z74eYzTL`c*YpdPZ?>1V!l~|+UbYpV*bXR2O=3w9^Py9ONX53P28?Ee5=3!&082Td^ zTs7IcS94mde49Gw26H4-XRBfd8g5pY!xp)({0m)a{5FXi5j%poa0s3wOplVZC`9;Y(M1iJBBZ~ zZ)->9tMK7Akow`}^s91^?5^uN)Kv5Q$c&Iws#2b%)I+~6KHcsZ+(_D<+ULH$5m#(X zF_)?!UiZ%D?Nvug3XYVgsKigoxNLe=$sc0)K&4KlDn^#_>qzZM@sphpQbW6VM*hxQ zYqNQ!srC7ssaTA0^Wo?zBjnvTpxMds@x`9v^_|FxH)R4Ol>Q8f5{kn6uOQ#VM^WXlDNv2 zuyS+I{`N94D3Xe>g^N({M?=03B1vU?5&jBYHBMyj+(CQ zRLy@kPSydGl6oo1U}Q0Y1=U3x(@3wb!ZACc;EG)O1*wX9M>=FGCppaEnJV7x^A~&+ z(FQ__Zua(ca!taq&)=?b+~#U?;&t)y!N{7feynrH`}^_X97Y80u^o&E|1Y0p+yko{ zJM6nl;UCE_fX`pPYmNm?v5WH&aca@7I$*~h5m<|Pcz8hYd%t;!3y~7!J>5^Q^nBBW z1wM>wCz_h=Y11Q{!92ERv3oy$2|!)BYX9q|*jVBrQ{0{+`wsEMA<3t7S?$LWwF48wQ&rR|pK2AHI%Ns+0eE1b3jeCbGX>Oj zO*Ih@E}}xH!{f*lyc+~B1#h6FX9!_^jZA1wN716>8^QnC2~BB{Gm^u2YNDo*pzne&0Qipa-gF$_m&R1>rDQq< z#|Hl|I*|sCfAq(K+E|L%NCu@Y6{KG*g%`zjM)$&k(uucFKi>yH{=R$tKcylG#wsk; zElMBlyDJqp8TB2lB+-#!rr0P~P=AwUSjzgCs>V2V8tugDA!w?>CCn4Boj1#d6HM{^e=krf*-rGL4@Q zD;P7S*~*n?++!J&#m;WmV8zSgA8$9|TXS3cbOQR)A(l4Vt_Kx5{BK#TuSv5n?&Bj< zBeIk~n?OK`)*V8P|BG#g%D5xe4CzJ8JH3!oZZ0W__=GZ~d&co4uCSrroGja9uWF59C}%&+HbfXkO59knmqCV ztTg-wzQWOCgPLHEYGM*%+lr?k*Pjz%6bw=Sp};(5eH8dVS;;Qo-P`~drlY-FRCVx_ z8P>c;J_pf_(g=|Qm5lkg2z-T|$As27c%#{kbHoIl+j=uFL63RY&CLw@Ckp=&;dB^Z}k%30?oY?PZ4Uu%ray1%QI5httL~9;*8x_(h#IwsjjRX-JLYEPGEii z)!pL9bSKS3qq(l(^2hLJ-!K1t%|HGqzFtg#K(QyIVSOWffJR}ezW`%?$sFEhsPcRN zz}e|>qV>19%#^W2A0hod5iA@|36I3=_6gsWn&?rxxYi+l)9$kGUr`NEiSG+>@fXL#1Y|E z2m?M2J7cI;T=Y-_!myz@PPgL_C6iueGc{iyJiIGV1hVkm{WPiRu*f3f{(mZXz!?=* zJWU|&27QxYvY6R4_uS}H8V&*YbvQ|EHDD66lXgn+G0%^0w*QZaxm}qazrvo0ic}xu zk$=886`O2Bo$vc*&ctqvs+p?G#-2Ug?bO)sz;>)nY)KR}UmDfSZ`nD!%i7zA*G6oN z`G!o17LVu|L%LR5a(Gq(I5m>qS(Yh}nje$xf3+x;4KgkT=pPm)Gxw#KH60d3g)|J= zbhtPmZvmYtz(_|AnFEzTC_a1oGrw4|(O%Pn??Q(SFxwel$k^)PSk08C-`kn4sic-xWx%T}8KJmhi2 ztWToFir9M+rT{bk5|H@r3bVh10(N1Lp^X{&z5ZVRgW~54vhHXxu7BB9qD)@(Juxvh zcuUscXHz?sk`sYR)@oj!2ci=lGjdkOf6?GF7Q$$987t=RZ#~{L8-;tf!sNR3PB)*sS@FtU25Z=6q*2bLk5zvr9y2Nr3avK}jd>sP$eGSmk zBfRU=)qVBFqYx6OF3{K^c`~Ij9UpRADlF;i~Yl=@ z_p(5Zt(D7$;U%uGxEa+hxB3@R+f}pshc%Y9S>28#KQXM7SQNRx;mOz_I@69h7YN^N zgNnb1)CdAcL8)2moTEWfAp%B|5_?~W^M;G~ZQgedemnV=Zyaw9GM)^VjnLc*O<(hO zD|v6;b@0wY^J24V$Jli(wtWLog@4kqq(VV7KHng*z& zSrDhOcnH>OtNaNe8lbqmoJM>l9Tj7;V zMIxx|@PNgH+svH3oq+&+>i7I6>3rj}wDT(#o5OvQQOh~R@~JuH)xdkSmDPg5V99>F z>tRFqf=8_Y2|S{+cXqkv2o^JcV-#LBU+KZ*@W--Kmy0p8Cm?`(sYq-;ULO>Wh#1YR ze!Gyj)6KPlT-olt5zmr7`bea1bYSk|xp$f}yU&eiT(0^ey^KY>Z|aS#R%TtvM@k#c z)%)M3+&{kbSL*rs%UXHs=rTUX)82vG;xU#m>y87?1x0DV`odEj4h88I9Z-{hQS<7V zh5Pp`^MQuJvm4?Ql7Y}CYj|)Ca1gF>+__Lg`6ERlr-9jSSPYD0l_|690Mp_E$#aZ!nUg>}Pl6eV67RUs#Z7x_&e;SdyB z@X3R8WSy{VLP9cL=W5TB2<2xU^#zB&U+k^e3g0$VB5y=wjZXqUFl+gh%_uKVHyuV$+kU@|&WJ}Yz>6D{&0&ov-6z=Dq@;+^J830W4j85~ zRGz8au!I&{fbL+w4)?|24g(YAWpxCb?ZFlMR(`3#?IxT#)4KtDpgL~#ii(NJhyXEg zj*Dzym1nZ+uG=t0dApyOcah31&;&RtG6(7$9rs!j{a8&uh;jKC9u~R1#jR{F+JRWZsGz9}wf}+qIaE^Cuccr{sB3E$}dwfB+oxVD2envhEwCiLo zYp5`lorFfzK*~Z89s3x&2vg_1ZC64omX7uLNfHc|%2KMk6tB(s=#l;V?S^IZmTK0k zSlKW4IEw&IP2Qk;uKlsCITGja?B+Kv49Q8zQ8Sk7gSTFfspy+{|9r}Hxj+$!3gJHuC-*8r3p|{Eq?vt z5Y8%ZBr2IES7+s6cLUqM9qaK!pOQ!3dkOx1PI+Qt5;hbf!8U}cj2uQ?U2E4S@!NU%(-dRLNi3VeLC%9d&RrcX z)GIGnTHP6Mz^GVIO-cb$IhN)Ukl#s27Uyb+exoN^vc$Oqbz;hlX}cngkbX7 zvCx^Rz4wB`S#e+Rs{#G&QG2LBD;AMNc;ZBH%(0cHXMLCZ&q*zYc&u)DmnoP2R=N1j z!CwBo3M5s~`Q=52;IR~Qk)%MHQ$9>zVIEE~yw!CP38&8p+E0j&pL&RPm_`H~%wUm| zv6JxB*HYa4a6vh?)yDe!?)sU6LJMwX$4liF-Vp04bopJPiG0R_9yUAS);ddWYp)tM zpYU(_+Ju)mS5G^xpOCSg+z_6m_J`sl;t@0zOD$=E+;H32$?!taLe8`84&Ra=XxYJn zf|4n(ubKh$uaYK10y`t+cBg_ zA|y~U@rNh;2pq{Z8MMw|MZFz7yuJ43BYYCWGCU|nJQMlR^L}6C@^@&(<03Z;_OU5i znc2xS|X#lyVTfk6+a;YQvY*B0qQrR9~Wu|*r_%J@v7=Wi@v!YFBk6H(d_ zDE(lhB-B@8ezSUdw@S=Q=b~WUbu|WfO0O@2hm-~Z;kaxamrs>Jje6^Ps1upk1*za{ z8z8Z_SHwfMcZ6u+L5^zp?Dh>^$vL`aD>RLvzsRXM>+}5pQsf6%kKMVSF^@JRj@9*D zm2T}>bo7Y(*@>Du;Ho3e6V|?=Y<-evb`Bm6uRJB%-YngUk?oH&jY{9iGhy)DBbpU! z+XhvHU~ZP8GZC~dlyVvzVast;9mZ+etBN|_teGmCajIlTD$0F&9|4lVVMSO(5s3!S z6J;veZW*T3C<$%4?U)Q6mcA>sT}^+i7*Dt8?F6b+C^#Lk!&qn~#Qk@OndOi?Xrr`A zf=*&N&~8Zc%o|de7<24R5Wa)^Q!p%zmiIM@R9P97fOJH#s`Z{}9hG@kL{(%;P?L3c znD1H4%98-5*jz8BB0w!m8f{^ygx>0@l68SI(?eq-j~@{!&*CpFf_L4}MH-~7FXd9H zoFH%DrZt+bYGwVm(k_5Ro-5hv#Q}D#gaEH)9Xg$OG}}(e=*lMN{B$$TDX_8B{r;+K zQ4v+=Nghk`K3UKH1S}pysuMBYly(Hbm5J*OmXn4SpNSEO`{K|^$T?ex$aHT#ogFe8 z(3h>aGK&AeJJ+D{`-LTnkinBE?4wG%vkURhD=O{wFMW-t7V&qyJB!6#0u6Y8{_~$Q zRCCCr>P7VrFmjzt;HG*ZrScIaZkH|NI;+Q?bK*VX2%B-N8yr+c^v z!JFIMIX`?hpKxvjc6k#}IfFmnJv>w@PDS9GmO@kx^(Q-&N4?$N4oGp>>kp$V9e37~yQ8~)}S3c?w?6=Xt!-?TY)pGTtCsIy<1Fo-={Z%n_l30C} zzP}MYj{6y1CQu&lgmG`QyMH4FHqBEF=7BD1>P|JTo$-%StitDPr5>$M8I73%1Lg6< zi1_+nD%x%unlwIP@h0r-8}H_5KATv6>UY|O5hrJP*bd|rK3T%6ew=8@PH9%OJ`z+G zC0F0r=vFHEQwpoD<(bXPldwd4TzbfMX?;GdYj*Y2ipJIV9Y9j_X8#)Rgx}kayE1z zCz$@cyhp5;vO<#mCcpltXJwwH&VZbMx~zG)zpllsjFw2f@bjm`fKE6}IZ#4^O+(CS z;A|$uq?YaDA-$C?NLR(sgmB*#_nM&{JALO`t(f_H*A?JBDbVA=J#a(AtViJkw=Bi- z#4e}(Zg5Mq@ezA&!TzoMdi7+<`db;Z#Isx@VnkC1TwR#wWELVY*nhH~=H%D`UFj^`X|U#i2#g5|m)a8kx+VIuEi=LNc# z2XVP5ykm>RR+#`>6|T3qx2=3WuDRKWMji&l9E29Hr`XA9Izv~kFGdQKFBUwJ`$W&y zkJX1gZNXyN7}fM=RvnSMll4|f?5DrK!@_iND0I0{wOqxSlHLY*qbf|$5ET56;)DI+L#*F!J-YF;BahT1)B zP#<~OXyY4Ez&dI-QzBK95YgYyG;+Pe@wys@OCRj778jOYK^zn}RGE<;gkxf*T5LIc zjFz&osq{_N4FL;tDY)hIb!NzGuJ)147$hgPyTE6QDH=6L#Tbc%+xKvFKct13NRSGA zWesZ=kQbjkWwe7FJk8abF&b8dB;fSDSrJns@#lh#FXV<9kWv#0cy+_^aOi2<#D4>E ze!JaqkWj1@I;|OllBlk2v0t;&uk4Utj1V({v!;$MbiaB7TUX;pwxb!x5yRPdIK&nY{xrGaQD zZ{$1L0zWuXxaVu-$Y6|a%R3f<_$XP^%N9X z>h(9Nl}=V>nZf}YQyHA9z-dV=B#yfk&lXF$(K64ic3Ki*qdagLH8h=OGvNH%u~+{p z({S8zybp^2+82RY&y!(_Z<652jAR?Fm;bdH*S<-X^^f2~Wqk;twA8Q&lSsVcYtcR? zh2|!&&oR4_&$>5qmbWe$A?JrVx_WB_F^4>KH42%7Dgv1KKA0tC33Y}%o=LDuw1ttn z?YEC{9N%R!2Gy7gju1V*!~bxSi$VCSUWRE_B)v zLtFVdb~n(~)~G1G-5h+;53;_LzuTl^2g{Yk{s7-_@Pr;TtDPrEy~ylpoHSQVmBy_h zuV=a8Vbt-_XA%NnuT@g*{~g5GKl9q4G*J7xtfV{PU5HX{mdB<}YBL z^qcl3;y5o+aMRZ)-%KdvEN_l@lTqGpGmXQZNY&w3pPPrUYzhC(_y8 zmnHZQ1#KtoB)?1Wd;T()Qag3eO*8cM0w1eMOkuTVUHug5l%J${9OlAlAUdqeD8okh zLMf|^*D>XjI(*&Q{v<90h^j6y8Kw1Z(P93mLk7-&OPdW(JvT6lslV_>FI=)#wHWb+ zGHMxcd3aFCoGo>qbxS0EDpL2Ii0kR0`Y}OE$g^d6I0dlY^5pny>AHTll4HFGWTE@J=csixqyM;`2U}=oqXMb8O zGy0aqsyvJWpQ!_L&Cs|#Dntsa$r#=;A^V< zBK71=d%wblO?DZAL2P_w`rm7(W}l;9eTUhkIEdS~Cu!GQ_4vUi2&F%LfJx|nNqePd zmodyL=Z{_S7aC@h%mE%~AkQ-e?SlkntuutDjZ&$#AxRquyOb^p1(XGGiti@#o8r^B zv@(21OUaY;Yn+JA04vGKZI>$HiO9A6`6kT6PxL=ms~#|`Ug9x!v*!q5JU*JLx+--_ H*3thD4K>cm literal 0 HcmV?d00001 diff --git a/docs/screenshots/wizard-name.png b/docs/screenshots/wizard-name.png new file mode 100644 index 0000000000000000000000000000000000000000..04eb4136bd5b5f89b4f7dda6adb2346d367ef7b7 GIT binary patch literal 67273 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 TcJ8IGULILVC5b9A Date: Mon, 6 Apr 2026 18:18:17 -0700 Subject: [PATCH 11/12] Align wizard screenshots side-by-side with table layout Use an HTML table with valign=top to guarantee vertical alignment. Add captions below each image. Co-Authored-By: Claude Opus 4.6 (1M context) --- README.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9da0bd3..fac0333 100644 --- a/README.md +++ b/README.md @@ -102,11 +102,16 @@ That's it — no dependencies beyond [Tart](#requirements). 1. **Launch Graftery** from Applications (or Spotlight). 2. The **setup wizard** walks you through creating your first runner configuration — name it, enter your GitHub credentials, choose a base VM image, and set runner limits. -