Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .github/workflows/plugin-release-policy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Plugin Release Policy

on:
pull_request:
paths:
- 'TypeWhisperPluginSDK/Plugins/**/manifest.json'
- 'scripts/*plugin*release*.py'
- '.github/workflows/plugin-release*.yml'
push:
branches: [main]
paths:
- 'TypeWhisperPluginSDK/Plugins/**/manifest.json'
- 'scripts/*plugin*release*.py'
- '.github/workflows/plugin-release*.yml'

permissions:
contents: read

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Validate new plugin release manifests
run: python3 scripts/validate_plugin_release_manifest.py TypeWhisperPluginSDK/Plugins/*/manifest.json
- name: Test release policy and minimum host resolution
run: |
python3 scripts/test_validate_plugin_release_manifest.py
python3 scripts/test_resolve_plugin_host_release.py
64 changes: 11 additions & 53 deletions .github/workflows/plugin-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,17 @@ jobs:
fi
python3 scripts/assemble_community_plugin_registry.py

- name: Validate release manifest
run: |
MANIFEST="TypeWhisperPluginSDK/Plugins/${TARGET}/manifest.json"
if [ ! -f "$MANIFEST" ]; then
echo "Missing manifest for ${TARGET}: $MANIFEST"
exit 1
fi
python3 scripts/validate_plugin_release_manifest.py "$MANIFEST" --version "$PLUGIN_VERSION"
echo "Validated $MANIFEST for release $PLUGIN_VERSION"
cat "$MANIFEST"

- name: Setup Xcode
uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0
with:
Expand All @@ -189,59 +200,6 @@ jobs:
-project TypeWhisper.xcodeproj \
-scheme TypeWhisper

- name: Validate release manifest
run: |
MANIFEST="TypeWhisperPluginSDK/Plugins/${TARGET}/manifest.json"
if [ ! -f "$MANIFEST" ]; then
echo "Missing manifest for ${TARGET}: $MANIFEST"
exit 1
fi
export MANIFEST
python3 <<'PYEOF'
import json
import os
import re

manifest_path = os.environ["MANIFEST"]
expected_version = os.environ["PLUGIN_VERSION"]

with open(manifest_path) as manifest_file:
manifest = json.load(manifest_file)

actual_version = manifest.get("version")
if actual_version != expected_version:
raise SystemExit(
f"manifest version {actual_version!r} does not match release version {expected_version!r}"
)

min_host_version = manifest.get("minHostVersion")
if not isinstance(min_host_version, str) or not re.fullmatch(
r"[0-9]+\.[0-9]+\.[0-9]+",
min_host_version,
):
raise SystemExit(
f"manifest minHostVersion {min_host_version!r} must be a release version like 1.6.0"
)
minimum_host_version = (1, 6, 0)
host_version = tuple(int(part) for part in min_host_version.split("."))
if host_version < minimum_host_version:
raise SystemExit(
f"manifest minHostVersion {min_host_version!r} must be 1.6.0 or newer"
)

sdk_compatibility_version = manifest.get("sdkCompatibilityVersion")
if not isinstance(sdk_compatibility_version, str) or not re.fullmatch(
r"v[1-9][0-9]*",
sdk_compatibility_version,
):
raise SystemExit(
"manifest sdkCompatibilityVersion "
f"{sdk_compatibility_version!r} must use the format vN"
)
PYEOF
echo "Validated $MANIFEST for release $PLUGIN_VERSION"
cat "$MANIFEST"

- name: Build Plugin
run: |
EXTRA_SETTINGS=()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.assemblyai",
"name": "AssemblyAI",
"version": "1.1.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.cartesia",
"name": "Cartesia",
"version": "1.0.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.cerebras",
"name": "Cerebras",
"version": "1.0.5",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/ClaudePlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.claude",
"name": "Claude",
"version": "1.1.1",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.cloudflare-asr",
"name": "Cloudflare ASR",
"version": "1.0.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "yunluyl",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.cohere-transcribe",
"name": "Cohere Transcribe (Local)",
"version": "1.0.1",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"supportedArchitectures": [
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/CoherePlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.cohere",
"name": "Cohere",
"version": "1.0.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.improve",
"name": "Improve TypeWhisper",
"version": "0.1.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.deepgram",
"name": "Deepgram",
"version": "1.0.15",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.elevenlabs",
"name": "ElevenLabs",
"version": "1.0.11",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.file-job-script",
"name": "File Job Script",
"version": "1.0.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.memory.file",
"name": "File Memory",
"version": "1.0.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.filler-words",
"name": "Filler Words",
"version": "1.0.1",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.fireworks",
"name": "Fireworks AI",
"version": "1.0.6",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/GeminiPlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.gemini",
"name": "Gemini",
"version": "1.1.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/Gemma4Plugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.gemma4",
"name": "Gemma 4",
"version": "1.1.6",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"supportedArchitectures": [
"arm64"
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/GladiaPlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.gladia",
"name": "Gladia",
"version": "1.0.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.google-cloud-stt",
"name": "Google Cloud Speech-to-Text",
"version": "1.0.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/GranitePlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.granite",
"name": "Granite Speech",
"version": "1.0.10",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"supportedArchitectures": [
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/GroqPlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.groq",
"name": "Groq",
"version": "1.0.24",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/LinearPlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.linear",
"name": "Linear",
"version": "1.0.10",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.livetranscript",
"name": "Live Transcript",
"version": "1.0.3",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ final class MCPClientPluginTests: XCTestCase {

XCTAssertEqual(manifest.id, "com.typewhisper.mcp-client")
XCTAssertEqual(manifest.version, "0.2.1")
XCTAssertEqual(manifest.minHostVersion, "1.6.0")
XCTAssertEqual(manifest.minHostVersion, "1.7.0")
XCTAssertEqual(manifest.sdkCompatibilityVersion, "v1")
XCTAssertEqual(manifest.category, "action")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.mcp-client",
"name": "MCP Client",
"version": "0.2.1",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.mempalace.memory",
"name": "MemPalace",
"version": "0.3.5",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"supportedArchitectures": ["arm64"],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.minerale.mistralai",
"name": "Mistral AI",
"version": "1.0.5",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "MinerAle",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ final class ObsidianPluginTests: XCTestCase {

XCTAssertEqual(manifest.id, "com.typewhisper.obsidian")
XCTAssertEqual(manifest.version, "1.1.0")
XCTAssertEqual(manifest.minHostVersion, "1.6.0")
XCTAssertEqual(manifest.minHostVersion, "1.7.0")
XCTAssertEqual(manifest.sdkCompatibilityVersion, "v1")
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.obsidian",
"name": "Obsidian",
"version": "1.1.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
Comment thread
SeoFood marked this conversation as resolved.
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.openai-compatible",
"name": "OpenAI Compatible",
"version": "1.1.8",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
2 changes: 1 addition & 1 deletion TypeWhisperPluginSDK/Plugins/OpenAIPlugin/manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.openai",
"name": "OpenAI / ChatGPT",
"version": "1.3.3",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.memory.openai-vector",
"name": "OpenAI Vector Memory",
"version": "1.0.0",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"id": "com.typewhisper.openrouter",
"name": "OpenRouter",
"version": "1.1.6",
"minHostVersion": "1.6.0",
"minHostVersion": "1.7.0",
"sdkCompatibilityVersion": "v1",
"minOSVersion": "14.0",
"author": "TypeWhisper",
Expand Down
Loading
Loading