Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
fa50f8e
Add editable browser bookmarks bar
MocA-Love Apr 1, 2026
74a7739
Show CPU in resource usage header summary
MocA-Love Apr 1, 2026
32a6406
feat(desktop): add github repository tools to git sidebar
MocA-Love Apr 1, 2026
7f71cd8
fix(desktop): collapse repository panel by default
MocA-Love Apr 1, 2026
ea7ac11
feat(desktop): track triggered workflow runs
MocA-Love Apr 1, 2026
8917335
Add database explorer pane and connection management
MocA-Love Apr 1, 2026
05f02b3
Add desktop TypeScript diagnostics UI
MocA-Love Apr 1, 2026
8491af9
Fix browser open link as new split
MocA-Love Apr 1, 2026
9818178
feat(desktop): show GitHub avatars and raise dev heap
MocA-Love Apr 1, 2026
5750e30
Add multi-language desktop diagnostics providers
MocA-Love Apr 1, 2026
033b780
Improve database explorer table interactions
MocA-Love Apr 1, 2026
e7beacf
Fix database cell detail scrolling
MocA-Love Apr 1, 2026
da52480
Improve database cell detail feedback and markdown view
MocA-Love Apr 1, 2026
b70ddf3
chore(bunfig): minimumReleaseAge無効化しlinkerをisolatedへ
MocA-Love Apr 1, 2026
791dfc8
feat(desktop): add workspace search sidebar
MocA-Love Apr 1, 2026
e04047a
Fix CI lint diagnostics
MocA-Love Apr 1, 2026
c38680e
Fix desktop typecheck regressions
MocA-Love Apr 1, 2026
de5500a
feat(desktop): add agent sleep prevention toggle
MocA-Love Apr 1, 2026
87d87d5
Add browser reload hotkeys for v1 and v2 workspaces
MocA-Love Apr 1, 2026
6931a8d
Fix PR review issues in desktop explorer and diagnostics
MocA-Love Apr 1, 2026
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
64 changes: 64 additions & 0 deletions apps/desktop/docs/LANGUAGE_SERVICES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# Desktop Language Services

This document tracks the IDE-oriented diagnostics stack used by the desktop app.

## Goals

- Keep editor and sidebar UI stable while adding language-specific diagnostics.
- Match VS Code behavior as closely as practical for each language.
- Make it easy to add new providers behind the same manager/store/router flow.

## Current Providers

### TypeScript / JavaScript / TSX / JSX

- Backend: `tsserver`
- Reason: VS Code uses `tsserver` for TypeScript and JavaScript language features, so this is the closest path to parity.
- Source:
- https://github.com/microsoft/TypeScript/wiki/Standalone-Server-%28tsserver%29

### JSON / JSONC

- Backend: `vscode-json-languageservice`
- Reason: This is the JSON language service used in the VS Code ecosystem and supports schema-backed validation.
- Source:
- https://github.com/microsoft/vscode-json-languageservice

### TOML

- Backend: `@taplo/lib`
- Reason: Taplo is the de facto TOML toolkit with a maintained JavaScript/WASM entrypoint suitable for desktop embedding.
- Source:
- https://taplo.tamasfe.dev/lib/javascript/lib.html

### Dart / Flutter

- Backend: Dart language server via `dart language-server`
- Reason: This matches the official Dart analysis server/LSP flow and works for both Dart and Flutter projects.
- Sources:
- https://dart.dev/tools/analysis-server
- https://raw.githubusercontent.com/dart-lang/sdk/main/pkg/analysis_server/tool/lsp_spec/README.md

## Architecture

- `main/lib/language-services/manager.ts`
- Registers providers
- Tracks provider enable/disable state
- Produces workspace snapshots for the Problems view
- `main/lib/language-services/diagnostics-store.ts`
- Holds normalized diagnostics per provider/file/workspace
- `main/lib/language-services/lsp/StdioJsonRpcClient.ts`
- Shared stdio JSON-RPC transport for LSP-based providers
- `renderer/providers/LanguageServicesProvider`
- Syncs open editor documents to enabled providers
- `renderer/routes/_authenticated/settings/behavior/components/DiagnosticsSettings`
- Lets users toggle providers on or off

## Adding a New Provider

1. Implement `LanguageServiceProvider`.
2. Normalize diagnostics into `LanguageServiceDiagnostic`.
3. Register the provider in `LanguageServiceManager`.
4. Add a renderer-side language mapping in `LanguageServicesProvider`.
5. Add syntax highlighting support if needed in `detect-language.ts` and `loadLanguageSupport.ts`.
6. Extend the settings store/provider ID union if the provider should be user-toggleable.
7 changes: 6 additions & 1 deletion apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"start": "electron-vite preview",
"generate:icons": "bun run scripts/generate-file-icons.ts",
"predev": "cross-env NODE_ENV=development bun run clean:dev && bun run generate:icons && cross-env NODE_ENV=development bun run scripts/clean-launch-services.ts && cross-env NODE_ENV=development bun run scripts/patch-dev-protocol.ts",
"dev": "cross-env NODE_ENV=development electron-vite dev --watch",
"dev": "cross-env NODE_ENV=development NODE_OPTIONS=--max-old-space-size=8192 electron-vite dev --watch",
"compile:app": "cross-env NODE_OPTIONS=--max-old-space-size=8192 electron-vite build",
"copy:native-modules": "bun run scripts/copy-native-modules.ts",
"validate:native-runtime": "bun run scripts/validate-native-runtime.ts",
Expand Down Expand Up @@ -99,6 +99,7 @@
"@tanstack/react-router": "^1.147.3",
"@tanstack/react-table": "^8.21.3",
"@tanstack/react-virtual": "^3.13.18",
"@taplo/lib": "^0.5.0",
"@tiptap/core": "^3.17.1",
"@tiptap/extension-blockquote": "^3.17.1",
"@tiptap/extension-bold": "^3.17.1",
Expand Down Expand Up @@ -187,6 +188,7 @@
"node-addon-api": "^7.1.0",
"node-pty": "1.1.0",
"os-locale": "^6.0.2",
"pg": "8.20.0",
"pidtree": "^0.6.0",
"pidusage": "^4.0.1",
"posthog-js": "1.310.1",
Expand Down Expand Up @@ -222,6 +224,8 @@
"use-resize-observer": "^9.1.0",
"utf-8-validate": "^6.0.6",
"uuid": "^13.0.0",
"vscode-json-languageservice": "^5.7.2",
"vscode-languageserver-textdocument": "^1.0.12",
"zod": "^4.3.5",
"zustand": "^5.0.8"
},
Expand All @@ -238,6 +242,7 @@
"@types/http-proxy": "^1.17.17",
"@types/lodash": "^4.17.20",
"@types/node": "^24.9.1",
"@types/pg": "8.15.6",
"@types/react": "~19.2.2",
"@types/react-dom": "^19.2.3",
"@types/react-syntax-highlighter": "^15.5.13",
Expand Down
Loading
Loading