Skip to content

Commit 92c4dfd

Browse files
feat: restructure as pnpm monorepo with Tauri desktop shell
- Migrate to packages/web + packages/desktop workspace layout via git mv - Add Tauri v2 desktop shell with @tauri-apps/plugin-http for CORS bypass - Configure Turborepo with package-level dependsOn build graph - Add semantic-release with exec plugin for GHA output and disabled PR comments - Fix http:default capability scope to allow all HTTP/HTTPS origins - Add Vite Tauri integration (clearScreen, TAURI_DEV_HOST, target, envPrefix) - Add semantic-release.yml and release.yml GitHub Actions workflows - Fix all Biome lint errors (noArrayIndexKey, noNonNullAssertion, button types)
1 parent 9a74182 commit 92c4dfd

152 files changed

Lines changed: 14123 additions & 4809 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ on:
88

99
jobs:
1010
check:
11-
name: Lint, type-check & test
11+
name: Lint, type-check, test & build
1212
runs-on: ubuntu-latest
13-
1413
steps:
1514
- uses: actions/checkout@v4
1615

@@ -25,14 +24,4 @@ jobs:
2524

2625
- run: pnpm install --frozen-lockfile
2726

28-
- run: pnpm lint
29-
name: Biome lint
30-
31-
- run: pnpm exec tsc --noEmit -p tsconfig.app.json
32-
name: Type check
33-
34-
- run: pnpm test
35-
name: Tests
36-
37-
- run: pnpm build
38-
name: Production build
27+
- run: pnpm turbo lint typecheck test build --filter=@openconcho/web

.github/workflows/release.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
release-macos:
10+
runs-on: macos-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- uses: pnpm/action-setup@v4
15+
with:
16+
version: 9
17+
18+
- uses: actions/setup-node@v4
19+
with:
20+
node-version: '20'
21+
cache: 'pnpm'
22+
23+
- uses: dtolnay/rust-toolchain@stable
24+
25+
- name: Install frontend dependencies
26+
run: pnpm install --frozen-lockfile
27+
28+
- uses: tauri-apps/tauri-action@v0
29+
env:
30+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
31+
with:
32+
tagName: ${{ github.ref_name }}
33+
releaseName: 'OpenConcho ${{ github.ref_name }}'
34+
releaseBody: 'See assets below to download and install.'
35+
releaseDraft: false
36+
prerelease: false
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Semantic Release
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
jobs:
8+
release:
9+
name: Release
10+
runs-on: ubuntu-latest
11+
permissions:
12+
contents: write
13+
issues: write
14+
pull-requests: write
15+
steps:
16+
- uses: actions/checkout@v4
17+
with:
18+
fetch-depth: 0
19+
token: ${{ secrets.GH_TOKEN }}
20+
21+
- uses: pnpm/action-setup@v4
22+
with:
23+
version: 9
24+
25+
- uses: actions/setup-node@v4
26+
with:
27+
node-version: 20
28+
cache: pnpm
29+
30+
- run: pnpm install --frozen-lockfile
31+
32+
- run: pnpm exec semantic-release
33+
env:
34+
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
35+
GIT_AUTHOR_NAME: github-actions[bot]
36+
GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com
37+
GIT_COMMITTER_NAME: github-actions[bot]
38+
GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,7 @@ dist-ssr
3636
# TypeScript build info
3737
*.tsbuildinfo
3838
.tanstack/
39+
40+
# Tauri
41+
packages/desktop/src-tauri/target/
42+
packages/desktop/src-tauri/gen/

.releaserc.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"branches": ["main"],
3+
"plugins": [
4+
"@semantic-release/commit-analyzer",
5+
"@semantic-release/release-notes-generator",
6+
["@semantic-release/changelog", {
7+
"changelogFile": "CHANGELOG.md"
8+
}],
9+
["@semantic-release/git", {
10+
"assets": ["CHANGELOG.md", "package.json", "packages/*/package.json"],
11+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
12+
}],
13+
["@semantic-release/exec", {
14+
"publishCmd": "echo new_release_published=true >> $GITHUB_OUTPUT && echo new_release_version=${nextRelease.version} >> $GITHUB_OUTPUT"
15+
}],
16+
["@semantic-release/github", {
17+
"assets": [],
18+
"successComment": false,
19+
"failComment": false
20+
}]
21+
]
22+
}

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# honcho-ui
1+
# openconcho
22

33
Frontend UI for self-hosted Honcho instances — browse memories, peers, sessions, conclusions, and chat with memory context.
44

@@ -40,7 +40,7 @@ Read `docs/architecture.md` for component overview, data flow, and design decisi
4040

4141
## Key Constraints
4242

43-
- **No hardcoded URLs** — all connection config lives in `localStorage` under `honcho-ui:config`
43+
- **No hardcoded URLs** — all connection config lives in `localStorage` under `openconcho:config`
4444
- **TanStack Router flat-route params** — always cast `params` as `as never` at `navigate()` and `<Link>` callsites
4545
- **`framer-motion` Variants typing** — import `type Variants` and annotate objects; never use `as const` on variant objects
4646
- **Auth is optional** — token header only sent when non-empty; `checkConnection()` detects if auth is required

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ A clean, fast frontend for browsing and chatting with a self-hosted [Honcho](htt
2828
### Install & run
2929

3030
```bash
31-
git clone https://github.com/offendingcommit/honcho-ui.git
32-
cd honcho-ui
31+
git clone https://github.com/offendingcommit/openconcho.git
32+
cd openconcho
3333
pnpm install
3434
pnpm dev
3535
```
@@ -84,8 +84,8 @@ pnpm generate:api
8484

8585
## Privacy
8686

87-
- Base URL and token are stored in `localStorage` under `honcho-ui:config`
88-
- Theme preference is stored in `localStorage` under `honcho-ui:theme`
87+
- Base URL and token are stored in `localStorage` under `openconcho:config`
88+
- Theme preference is stored in `localStorage` under `openconcho:theme`
8989
- No telemetry, no analytics, no external requests beyond your configured Honcho instance
9090

9191
## Contributing

biome.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
{
22
"$schema": "https://biomejs.dev/schemas/1.9.4/schema.json",
3+
"files": {
4+
"ignore": ["src/routeTree.gen.ts", "src/api/schema.d.ts"]
5+
},
36
"vcs": {
47
"enabled": true,
58
"clientKind": "git",

docs/architecture.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Architecture: honcho-ui
1+
# Architecture: openconcho
22

33
## Overview
44

package.json

Lines changed: 15 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,24 @@
11
{
2-
"name": "honcho-ui",
2+
"name": "openconcho",
33
"private": true,
44
"version": "0.1.0",
5-
"type": "module",
5+
"packageManager": "pnpm@10.33.2",
66
"scripts": {
7-
"dev": "vite",
8-
"build": "tsc -b && vite build",
9-
"preview": "vite preview",
10-
"lint": "biome check src/",
11-
"lint:fix": "biome check --write src/",
12-
"format": "biome format --write src/",
13-
"test": "vitest run",
14-
"test:watch": "vitest",
15-
"generate:api": "openapi-typescript openapi.json -o src/api/schema.d.ts"
16-
},
17-
"dependencies": {
18-
"@fontsource/dm-mono": "^5.2.7",
19-
"@fontsource/dm-sans": "^5.2.8",
20-
"@radix-ui/react-collapsible": "^1.1.12",
21-
"@radix-ui/react-dialog": "^1.1.15",
22-
"@radix-ui/react-label": "^2.1.8",
23-
"@radix-ui/react-separator": "^1.1.8",
24-
"@radix-ui/react-slot": "^1.2.4",
25-
"@radix-ui/react-tooltip": "^1.2.8",
26-
"@tailwindcss/vite": "^4.2.4",
27-
"@tanstack/react-query": "^5.74.4",
28-
"@tanstack/react-router": "^1.120.3",
29-
"class-variance-authority": "^0.7.1",
30-
"clsx": "^2.1.1",
31-
"framer-motion": "^12.38.0",
32-
"lucide-react": "^1.11.0",
33-
"luxon": "^3.7.2",
34-
"openapi-fetch": "^0.13.5",
35-
"react": "^19.2.5",
36-
"react-dom": "^19.2.5",
37-
"react-markdown": "^10.1.0",
38-
"remark-gfm": "^4.0.1",
39-
"tailwind-merge": "^3.5.0",
40-
"tailwindcss": "^4.2.4",
41-
"zod": "^3.24.3"
7+
"dev": "pnpm --filter @openconcho/desktop dev",
8+
"build": "turbo run build",
9+
"lint": "turbo run lint",
10+
"test": "turbo run test",
11+
"typecheck": "turbo run typecheck"
4212
},
4313
"devDependencies": {
4414
"@biomejs/biome": "^1.9.4",
45-
"@tanstack/router-plugin": "^1.120.3",
46-
"@testing-library/jest-dom": "^6.6.3",
47-
"@testing-library/react": "^16.3.0",
48-
"@testing-library/user-event": "^14.6.1",
49-
"@types/luxon": "^3.7.1",
50-
"@types/node": "^25.6.0",
51-
"@types/react": "^19.2.14",
52-
"@types/react-dom": "^19.2.3",
53-
"@vitejs/plugin-react": "^6.0.1",
54-
"jsdom": "^26.1.0",
55-
"openapi-typescript": "^7.8.0",
56-
"typescript": "~6.0.2",
57-
"vite": "^8.0.10",
58-
"vitest": "^3.2.3"
15+
"@semantic-release/changelog": "^6.0.0",
16+
"@semantic-release/commit-analyzer": "^13.0.0",
17+
"@semantic-release/exec": "^7.1.0",
18+
"@semantic-release/git": "^10.0.0",
19+
"@semantic-release/github": "^10.0.0",
20+
"@semantic-release/release-notes-generator": "^14.0.0",
21+
"semantic-release": "^24.0.0",
22+
"turbo": "^2"
5923
}
6024
}

0 commit comments

Comments
 (0)