Releases: mk668a/GhostType
v0.3.1 — Menu bar status fix
⚠️ Not signed/notarized yet. macOS will block the first launch.
Open via System Settings > Privacy & Security > "Open Anyway", or run:
xattr -dr com.apple.quarantine /Applications/GhostType.app
What's fixed
- Menu bar "Connection: Unknown" no longer lingers after a successful Test Connection. (#1) The Settings panel and the menu-bar indicator now share a single connection-state source.
Under the hood
- Add
LLMClient.probe()reusing the bounded-timeout session (8s/10s) and the existingURLError→LLMErrormapping. Removes twoURLSession.shareddirect calls. - Add
CompletionEngine.probe()which routes the result throughsettings.connectionState(resets the circuit breaker on success, marks.unreachableon failure without advancing the failure counter — explicit user probes shouldn't push auto-trigger toward suppression). - Both Test Connection buttons (Model tab and Setup tab) now call
engine.probe().
Install
- Download
GhostType-0.3.1.dmgbelow, or wait — existing 0.3.x users get this via the in-app updater.
v0.3.0 — Auto-updates
⚠️ Not signed/notarized yet. macOS will block the first launch.
Open via System Settings > Privacy & Security > "Open Anyway", or run:
xattr -dr com.apple.quarantine /Applications/GhostType.app
GhostType v0.3.0 ships with built-in auto-updates powered by Sparkle 2. From this version onward, the app checks for new releases in the background and surfaces them as a familiar update dialog — no more polling the Releases page by hand.
⚠️ Users on 0.1.0 / 0.2.0 will not get an auto-update prompt because those builds don't embed Sparkle. Please download this DMG manually one last time; future releases (0.3.1+) will update automatically.
Highlights
- Sparkle 2.9.2 integrated via Swift Package Manager and embedded as a signed framework
- Scheduled background check every 24 hours (
SUScheduledCheckInterval=86400) - Manual check from the menu bar → Check for Updates… (新: アップデートを確認…)
- Ed25519-signed appcast at
raw.githubusercontent.com/mk668a/GhostType/main/appcast.xml— every DMG is signed with a private key kept in the build machine's macOS Keychain, and verified on the client against the public key embedded inInfo.plist - First-launch consent dialog asks whether automatic checks should be enabled (Sparkle standard UI)
Release pipeline
scripts/create-dmg.sh now builds, signs (tools/sparkle/sign_update), and updates appcast.xml in a single pass. See tools/sparkle/README.md for the one-time bootstrap on a new build machine.
Install
- Download the DMG attached to this release
- Open it and drag GhostType into Applications
- Launch from Applications
macOS may show an "unidentified developer" warning on first launch.
Right-click the app → Open, or open System Settings → Privacy & Security and click Open Anyway.
Requirements
- macOS 14 (Sonoma) or later
- An OpenAI-compatible inference server reachable from your Mac (LM Studio, Ollama, llama.cpp, vLLM, mlx-lm, etc.)
Full changelog: v0.2.0...v0.3.0
v0.2.0 — Endpoint robustness
⚠️ Not signed/notarized yet. macOS will block the first launch.
Open via System Settings > Privacy & Security > "Open Anyway", or run:
xattr -dr com.apple.quarantine /Applications/GhostType.app
GhostType v0.2.0 focuses on how the app behaves when the LLM endpoint is slow, unreachable, or misconfigured. The goal: an unresponsive server should never feel like the whole app froze.
Highlights
- Tighter request timeouts. Completion requests now use a dedicated
URLSessionwith an 8-second request timeout and a 10-second resource timeout (replacing the previous 30-second per-request timeout). A stuck endpoint can no longer stall the UI for half a minute. - Failure circuit breaker. After three consecutive network failures, auto-trigger is paused for 30 seconds. The manual shortcut (default
⌘⌥\) always bypasses the breaker, and a successful request or any endpoint/model change resets it immediately. - Connection status in the menu bar. A new
ConnectionState(unknown/ok/suppressed/unreachable) drives a colored dot in the menu and swaps the status-bar icon betweentext.bubbleandexclamationmark.bubble, so you can tell at a glance whether GhostType can reach its endpoint. - Errors stay visible. Completion errors used to clear back to Ready after two seconds, hiding misconfiguration. Errors now stay on screen until the next successful completion.
- Better error classification.
LLMError.timedOutis split fromserverNotRunning, all messages are localized (English / Japanese), and HTTP error bodies are truncated to 200 characters so the status line never gets flooded.
Upgrade notes
- No settings migration is required.
- No new permissions are requested.
- Existing keyboard shortcuts and endpoints are preserved.
Install
- Download the DMG attached to this release
- Open it and drag GhostType into Applications
- Launch from Applications
macOS may show an "unidentified developer" warning on first launch.
Right-click the app → Open, or open System Settings → Privacy & Security and click Open Anyway.
Requirements
- macOS 13 (Ventura) or later
- An OpenAI-compatible inference server reachable from your Mac (LM Studio, Ollama, llama.cpp, vLLM, mlx-lm, etc.)
Full changelog: v0.1.0...v0.2.0
v0.1.0 — Initial Release
⚠️ Not signed/notarized yet. macOS will block the first launch.
Open via System Settings > Privacy & Security > "Open Anyway", or run:
xattr -dr com.apple.quarantine /Applications/GhostType.app
First public release of GhostType — AI-powered keyboard completion engine for macOS.
Features
- GitHub Copilot-style ghost text completions in any app on macOS
- Works with any OpenAI-compatible server (LM Studio, Ollama, llama.cpp, vLLM, etc.)
- Manual trigger via keyboard shortcut, plus optional auto-trigger
- Per-app exclusion / manual-only lists
- Customizable shortcuts, model parameters, and appearance
- Bilingual UI: English and Japanese (follows system language by default)
- Optimized for low latency on Apple Silicon
Install
- Download
GhostType-0.1.0.dmgbelow - Open the DMG and drag GhostType into Applications
- Launch from Applications and follow the first-launch setup guide
macOS may show an "unidentified developer" warning on first launch.
Right-click the app → Open, or open System Settings → Privacy & Security and click Open Anyway.
Requirements
- macOS 13 (Ventura) or later
- An OpenAI-compatible inference server reachable from your Mac
See the README for full setup instructions.