Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
c05b13a
refactor: simplify app to minimal frontend and backend modules
seho-dev Aug 23, 2026
72f4ff7
refactor: consolidate backend commands and add opencode CLI model lis…
seho-dev Sep 7, 2026
01c45ac
refactor: split app.css into modular stylesheets
seho-dev Sep 7, 2026
9bb2c73
feat: surface opencode model catalog with toast-based feedback
seho-dev Sep 7, 2026
a27c4d3
feat: rebuild listing pages around the opencode model catalog and pag…
seho-dev Sep 7, 2026
ab7ca96
fix: add splash screen during config loading
seho-dev Sep 8, 2026
e694c82
fix: resolve opencode config file with .json fallback
seho-dev Sep 10, 2026
359bba7
refactor: simplify provider model to name-keyed provider with structu…
seho-dev Sep 11, 2026
bba11d3
chore: commit Tauri macOS capability schema
seho-dev Sep 11, 2026
3c7837e
docs: document opencode config file fallback alignment
seho-dev Sep 11, 2026
79c49b1
refactor: align model schema with opencode config and extract ModelForm
seho-dev Sep 13, 2026
3fa8cc8
feat: add theme toggle and i18n with persisted preferences
seho-dev Sep 13, 2026
743cc49
fix: layer custom stylesheets so Tailwind utilities win
seho-dev Sep 13, 2026
b02d0b2
refactor: restructure agent forms with shared fields and builtin cata…
seho-dev Sep 13, 2026
f9a6a7d
chore: ignore worktree metadata
seho-dev Sep 13, 2026
3ad3598
Merge branch 'v2.0' into omos/theme-i18n
seho-dev Sep 13, 2026
8f996d2
refactor(groups): rename group types to native/slim/omo and merge pro…
seho-dev Sep 13, 2026
3ee9ba4
refactor(agents): share built-in catalog and drop project markdown st…
seho-dev Sep 13, 2026
537cf3a
refactor(ui): align group types, split builtin agent tabs, trim statu…
seho-dev Sep 13, 2026
760f55a
feat(groups): add type tabs with counts and keyboard navigation
seho-dev Sep 14, 2026
a5b2a6b
feat(ui): drive toast notices from operation and drop model creation …
seho-dev Sep 14, 2026
6c008b9
feat(groups): select model variant from catalog options in group form
seho-dev Sep 14, 2026
04ee285
refactor(ui): keep splash mounted and enforce minimum visible duration
seho-dev Sep 14, 2026
047ce32
fix(ui): keep combobox open when clicking an option
seho-dev Sep 14, 2026
edec65b
style(ui): pin form actions and scroll the field area
seho-dev Sep 14, 2026
111cba6
style(ui): place list search above type tabs
seho-dev Sep 14, 2026
2fabb71
chore: migrate formatting and linting to Biome
seho-dev Sep 17, 2026
bc0a1c9
fix(a11y): resolve Biome a11y lint errors
seho-dev Sep 17, 2026
c062fa2
ci: gate frontend lint alongside formatting
seho-dev Sep 17, 2026
99e73bd
feat: migrate OpenCode configuration management to V2
seho-dev Sep 25, 2026
e6248bb
fix: remove obsolete scout builtin agent
seho-dev Sep 25, 2026
2ac951a
fix: use existing JSON config for Slim groups
seho-dev Sep 25, 2026
c6f7b81
feat(tauri): add opencode reload command
seho-dev Sep 28, 2026
a10cbbd
chore(deps): add form and test tooling
seho-dev Sep 28, 2026
173ecf7
refactor(frontend): reorganize modules under $src alias
seho-dev Sep 28, 2026
fff54ec
refactor(forms): extract route form components with zod validation
seho-dev Sep 28, 2026
6b497d9
feat(groups): prompt to reload opencode after switching group
seho-dev Sep 28, 2026
f261696
test: add component and unit test infrastructure
seho-dev Sep 28, 2026
4f537a2
chore(tooling): add OpenCode workflows and Vibe configuration
seho-dev Oct 6, 2026
5812018
chore(icons): update application and tray assets
seho-dev Oct 6, 2026
d0e5fef
feat: add usage dashboard, resource management, tray, and lid protection
seho-dev Oct 6, 2026
9072ba9
docs: document configuration overrides and lid protection checks
seho-dev Oct 6, 2026
aa445bc
docs: Add MIT license, READMEs, and agent guides
seho-dev Oct 6, 2026
0c660ed
test: add component tests for updates and shell
seho-dev Oct 7, 2026
2e7ab40
ci: Add multi-target release pipeline
seho-dev Oct 7, 2026
e0753c5
feat: add update check and app info to settings
seho-dev Oct 7, 2026
5392a9f
test: add update check and app info to settings
seho-dev Oct 7, 2026
d083f50
doc: add opencode api skill
seho-dev Oct 18, 2026
a2e18d9
feat: Add Mini Island, project scopes and settings
seho-dev Oct 18, 2026
772f256
feat: Add island, scopes, settings, previews
seho-dev Oct 18, 2026
8ba7e1d
chore(infra): update .gitignore and vibe lockfile
seho-dev Oct 20, 2026
51f9e10
docs: update documentation and agent specifications for v2 features
seho-dev Oct 20, 2026
e48eeac
feat(frontend): refine agent form snapshots, JSON utilities, and sett…
seho-dev Oct 20, 2026
80fada2
build(tauri): update Cargo dependencies and Tauri capabilities for Is…
seho-dev Oct 20, 2026
5b33af6
feat(backend/resources): harden resource file safety, agent snapshots…
seho-dev Oct 20, 2026
821c904
feat(backend/cli): add service target management, installation check,…
seho-dev Oct 20, 2026
4bc329c
feat(backend/island): implement macOS Mini Island native window manag…
seho-dev Oct 20, 2026
7707f94
feat(backend/commands): wire IPC commands, dialog plugin, and integra…
seho-dev Oct 20, 2026
f2aeeed
doc: update skills and agents
seho-dev Oct 22, 2026
818250d
doc: update skill
seho-dev Oct 23, 2026
7ea6e89
ci: update ci
seho-dev Oct 23, 2026
08281b5
test: refactor test module
seho-dev Oct 23, 2026
9336eb9
fix: rename opencode_cli module
seho-dev Oct 23, 2026
8b4ef5f
refactor: optimizing Rust Code
seho-dev Oct 23, 2026
1bfaad8
feat(frontend): add lazy MCP proxy boundary and localized copy
seho-dev Oct 25, 2026
7f94c5a
feat(frontend): unify Checkbox, disabled link styles, form/page docs …
seho-dev Oct 25, 2026
0746f57
feat(frontend): MCP proxy guards, token rotation, settings lifecycle …
seho-dev Oct 25, 2026
2b62c9c
feat(frontend): dashboard token chart, runtime card and list refresh …
seho-dev Oct 25, 2026
e7c29dd
style: update app image
seho-dev Oct 25, 2026
96d28b9
docs: update specifications and sync backend AGENTS guidelines
seho-dev Oct 25, 2026
76d4a65
fix(power): harden child process reaping, lock safety and memory prot…
seho-dev Oct 25, 2026
e39d1dc
refactor(core): harden JSONC patching, agent markdown parsing and res…
seho-dev Oct 25, 2026
05ca367
feat(opencode): add managed transport, streamline island event loop a…
seho-dev Oct 25, 2026
b519fe3
feat(mcp-proxy): implement HTTP gateway server, bridge stdio MCP and …
seho-dev Oct 25, 2026
f201589
feat(prompt-generation): add guarded AI prompt previews for agents an…
seho-dev Oct 31, 2026
715967d
feat(managed-resources): manage scoped slash commands and global beha…
seho-dev Oct 31, 2026
76d488f
feat(plugin-management): manage global plugin runtime and guarded upd…
seho-dev Oct 31, 2026
6776062
feat(preferences): persist default plugin and prioritize matching run…
seho-dev Oct 31, 2026
215f978
doc: update doc
seho-dev Oct 31, 2026
507bc77
refactor(plugins): remove configuration preview API and UI
seho-dev Nov 1, 2026
f85b4aa
feat(behavior): add shared prompt generation for global instructions
seho-dev Nov 1, 2026
223d515
feat(http): share MCP authentication and isolate startup failures
seho-dev Nov 1, 2026
e1cc666
refactor(settings): simplify lid preference lifecycle without polling
seho-dev Nov 1, 2026
3bc0de7
test(config): include child output in persistence failure diagnostics
seho-dev Nov 1, 2026
47e3f2c
fix(plugins): satisfy strict clippy without changing validation
seho-dev Nov 1, 2026
0dbd89c
feat(logging): persist bounded local diagnostics and trace operations
seho-dev Nov 1, 2026
6c0ba0e
feat(logs): add diagnostic viewer and independent recording control
seho-dev Nov 1, 2026
5edfbab
docs(logging): document local diagnostics and lifecycle contracts
seho-dev Nov 1, 2026
26f6cbb
doc: update doc
seho-dev Nov 1, 2026
01e5e17
doc(skill): update skill
seho-dev Nov 1, 2026
73c859e
ci: update release workflow
seho-dev Nov 1, 2026
51b095c
fix(models): render absent numeric fields as empty inputs
seho-dev Nov 1, 2026
e2753c2
fix(mcp): reject malformed proxy environment and timeout inputs
seho-dev Nov 1, 2026
33460a9
fix(config): reject invalid wire types and report refresh failures once
seho-dev Nov 1, 2026
01d825d
refactor(mcp): match typed cancellation progress notifications
seho-dev Nov 1, 2026
8b01600
test: simplify harnesses and retain behavioral coverage
seho-dev Nov 1, 2026
3e3c36f
docs(skill): validate exact status values in defensive example
seho-dev Nov 1, 2026
075e18b
fix: Update CI MSRV helper fetch and Tauri API
seho-dev Nov 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto eol=lf
140 changes: 104 additions & 36 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,18 @@ on:
push:
branches:
- main
- master
pull_request:

permissions:
contents: read

env:
HUSKY: '0'

jobs:
tauri-windows:
name: Tauri Windows required gate
runs-on: windows-latest
runs-on: windows-2022

steps:
- name: Checkout
Expand All @@ -22,14 +24,23 @@ jobs:
- name: Setup Node 22
uses: actions/setup-node@v4
with:
node-version: "22.23.0"
node-version: '22.23.0'
cache: npm
cache-dependency-path: package-lock.json

- name: Setup Rust 1.96.0 with rustfmt
- name: Test release version handling
run: node --test scripts/release-version.test.mjs

- name: Check app version sources
id: version
shell: bash
run: |
node --input-type=module -e 'import { verifyVersions } from "./scripts/release-version.mjs"; import { appendFileSync } from "node:fs"; appendFileSync(process.env.GITHUB_OUTPUT, `version=${verifyVersions(process.cwd())}\n`);'

- name: Setup Rust 1.96.0 with rustfmt and Clippy
uses: dtolnay/rust-toolchain@1.96.0
with:
components: rustfmt
components: rustfmt, clippy

- name: Cache Rust build outputs
uses: Swatinem/rust-cache@v2
Expand All @@ -39,45 +50,44 @@ jobs:
- name: Install frontend dependencies
run: npm ci

- name: Run frontend tests
run: npm test
- name: Check frontend format and lint
run: npm run check

- name: Build frontend
run: npm run build

- name: Check Rust formatting
run: cargo fmt --manifest-path src-tauri/Cargo.toml --all -- --check

- name: Run Rust tests
run: cargo test --manifest-path src-tauri/Cargo.toml -- --nocapture
- name: Lint Rust backend
run: cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets --locked -- -D warnings

- name: Assert product config, security, identity, removed scope, and CI contract
shell: pwsh
env:
OMO_CHARACTERIZE_NATIVE_GAPS: '1'
run: npm test -- --run src/native-gaps.test.ts
- name: Run Rust backend tests
run: cargo test --manifest-path src-tauri/Cargo.toml --locked

- name: Build Windows Tauri package
run: npm run tauri build
run: npm run tauri -- build --ci --target x86_64-pc-windows-msvc --bundles nsis -- --locked

- name: Assert exact Windows NSIS artifact
shell: pwsh
env:
APP_VERSION: ${{ steps.version.outputs.version }}
run: |
$artifact = 'src-tauri/target/release/bundle/nsis/omo-switch_0.1.0_x64-setup.exe'
$artifact = "src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/opencode-mom_$($env:APP_VERSION)_x64-setup.exe"
if (-not (Test-Path -LiteralPath $artifact -PathType Leaf)) {
throw "Expected exact NSIS artifact: $artifact"
}

- name: Upload Windows Tauri evidence
uses: actions/upload-artifact@v4
with:
name: omo-switch-tauri-windows-0.1.0
path: src-tauri/target/release/bundle/nsis/omo-switch_0.1.0_x64-setup.exe
name: opencode-mom-tauri-windows-${{ steps.version.outputs.version }}
path: src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/opencode-mom_${{ steps.version.outputs.version }}_x64-setup.exe
if-no-files-found: error

tauri-macos:
name: Tauri macOS required gate
runs-on: macos-latest
runs-on: macos-15

steps:
- name: Checkout
Expand All @@ -86,14 +96,22 @@ jobs:
- name: Setup Node 22
uses: actions/setup-node@v4
with:
node-version: "22.23.0"
node-version: '22.23.0'
cache: npm
cache-dependency-path: package-lock.json

- name: Setup Rust 1.96.0 with rustfmt
- name: Test release version handling
run: node --test scripts/release-version.test.mjs

- name: Check app version sources
id: version
run: |
node --input-type=module -e 'import { verifyVersions } from "./scripts/release-version.mjs"; import { appendFileSync } from "node:fs"; appendFileSync(process.env.GITHUB_OUTPUT, `version=${verifyVersions(process.cwd())}\n`);'

- name: Setup Rust 1.96.0 with rustfmt and Clippy
uses: dtolnay/rust-toolchain@1.96.0
with:
components: rustfmt
components: rustfmt, clippy

- name: Cache Rust build outputs
uses: Swatinem/rust-cache@v2
Expand All @@ -103,38 +121,88 @@ jobs:
- name: Install frontend dependencies
run: npm ci

- name: Run frontend tests
run: npm test
- name: Check frontend format and lint
run: npm run check

- name: Build frontend
run: npm run build

- name: Fetch macOS helper dependencies
run: cargo fetch --manifest-path src-tauri/native/macos-helper/Cargo.toml --locked --target aarch64-apple-darwin

- name: Check macOS helper formatting
run: cargo fmt --manifest-path src-tauri/native/macos-helper/Cargo.toml --all -- --check

- name: Check macOS helper
run: cargo check --manifest-path src-tauri/native/macos-helper/Cargo.toml --all-targets --offline --locked

- name: Test macOS helper
run: cargo test --manifest-path src-tauri/native/macos-helper/Cargo.toml --offline --locked

- name: Lint macOS helper
run: cargo clippy --manifest-path src-tauri/native/macos-helper/Cargo.toml --all-targets --offline --locked -- -D warnings

- name: Check Rust formatting
run: cargo fmt --manifest-path src-tauri/Cargo.toml --all -- --check

- name: Run Rust tests
run: cargo test --manifest-path src-tauri/Cargo.toml -- --nocapture
- name: Lint Rust backend
run: cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets --locked -- -D warnings

- name: Assert product config, security, identity, removed scope, and CI contract
env:
OMO_CHARACTERIZE_NATIVE_GAPS: '1'
run: npm test -- --run src/native-gaps.test.ts
- name: Run Rust backend tests
run: cargo test --manifest-path src-tauri/Cargo.toml --locked

- name: Build macOS Tauri packages
run: npm run tauri build
run: npm run tauri -- build --ci --target aarch64-apple-darwin --bundles app,dmg -- --locked

- name: Assert exact macOS app and DMG artifacts
shell: bash
env:
APP_VERSION: ${{ steps.version.outputs.version }}
run: |
set -euo pipefail
test -d 'src-tauri/target/release/bundle/macos/omo-switch.app'
test -f 'src-tauri/target/release/bundle/dmg/omo-switch_0.1.0_aarch64.dmg'
test -d 'src-tauri/target/aarch64-apple-darwin/release/bundle/macos/opencode-mom.app'
test -f "src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/opencode-mom_${APP_VERSION}_aarch64.dmg"

- name: Upload macOS Tauri evidence
uses: actions/upload-artifact@v4
with:
name: omo-switch-tauri-macos-0.1.0
name: opencode-mom-tauri-macos-${{ steps.version.outputs.version }}
path: |
src-tauri/target/release/bundle/macos/omo-switch.app
src-tauri/target/release/bundle/dmg/omo-switch_0.1.0_aarch64.dmg
src-tauri/target/aarch64-apple-darwin/release/bundle/dmg/opencode-mom_${{ steps.version.outputs.version }}_aarch64.dmg
if-no-files-found: error

rust-msrv:
name: Rust minimum supported versions
runs-on: macos-15

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup helper Rust 1.77.2
uses: dtolnay/rust-toolchain@1.77.2

- name: Setup backend Rust 1.90.0
uses: dtolnay/rust-toolchain@1.90.0

- name: Cache Rust build outputs
uses: Swatinem/rust-cache@v2
with:
workspaces: |
src-tauri -> target
src-tauri/native/macos-helper -> target

- name: Fetch macOS helper dependencies
run: cargo +1.90.0 fetch --manifest-path src-tauri/native/macos-helper/Cargo.toml --locked --target aarch64-apple-darwin

- name: Fetch macOS helper dependencies for MSRV
run: cargo +1.77.2 fetch --manifest-path src-tauri/native/macos-helper/Cargo.toml --locked --target aarch64-apple-darwin

- name: Check Rust backend MSRV
run: cargo +1.90.0 check --manifest-path src-tauri/Cargo.toml --all-targets --locked

- name: Check macOS helper MSRV
run: cargo +1.77.2 check --manifest-path src-tauri/native/macos-helper/Cargo.toml --all-targets --offline --locked

- name: Test macOS helper MSRV
run: cargo +1.77.2 test --manifest-path src-tauri/native/macos-helper/Cargo.toml --offline --locked
Loading
Loading