Skip to content
Open
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
203 changes: 113 additions & 90 deletions apps/desktop/src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
@@ -1,91 +1,114 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "Cap - Development",
"identifier": "so.cap.desktop.dev",
"mainBinaryName": "Cap - Development",
"build": {
"beforeDevCommand": "pnpm localdev",
"devUrl": "http://localhost:3002",
"beforeBuildCommand": "pnpm turbo build --filter @cap/desktop",
"frontendDist": "../.output/public"
},
"app": {
"macOSPrivateApi": true,
"security": {
"csp": "default-src 'self' ws: ipc: http://ipc.localhost; img-src 'self' asset: http://asset.localhost blob: data:; media-src 'self' asset: http://asset.localhost; script-src 'self' 'unsafe-eval' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'",
"assetProtocol": {
"enable": true,
"scope": [
"$APPDATA/**",
"**/*.jpg",
"**/*.webp",
"$RESOURCE/**",
"**/*.riv",
"$HOME/**"
]
}
}
},
"plugins": {
"updater": { "active": false, "pubkey": "" },
"deep-link": {
"desktop": {
"schemes": ["cap-desktop"]
}
}
},
"bundle": {
"active": true,
"createUpdaterArtifacts": true,
"targets": "all",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/macos/icon.icns",
"icons/icon.ico"
],
"resources": {
"assets/backgrounds/macOS/*": "assets/backgrounds/macOS/",
"assets/backgrounds/blue/*": "assets/backgrounds/blue/",
"assets/backgrounds/dark/*": "assets/backgrounds/dark/",
"assets/backgrounds/orange/*": "assets/backgrounds/orange/",
"assets/backgrounds/purple/*": "assets/backgrounds/purple/",
"../src/assets/rive/*.riv": "assets/rive/"
},
"macOS": {
"dmg": {
"background": "assets/dmg-background.png",
"appPosition": {
"x": 180,
"y": 140
},
"applicationFolderPosition": {
"x": 480,
"y": 140
}
},
"frameworks": ["../../../target/native-deps/Spacedrive.framework"]
},
"windows": {
"nsis": {
"headerImage": "assets/nsis-header.bmp",
"sidebarImage": "assets/nsis-sidebar.bmp",
"installerIcon": "icons/icon.ico"
},
"wix": {
"upgradeCode": "79f4309d-ca23-54df-b6f9-826a1d783676",
"bannerPath": "assets/wix-banner.bmp",
"dialogImagePath": "assets/wix-dialog.bmp"
}
},
"fileAssociations": [
{
"ext": ["cap"],
"name": "Cap Project",
"mimeType": "application/x-cap-project",
"role": "Editor"
}
]
}
}
"$schema": "../node_modules/@tauri-apps/cli/schema.json",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This rewrites tauri.conf.json from the repo's current Tauri v2 format into a v1-style config (tauri.allowlist, package, etc). If desktop is still on Tauri v2, this is likely to fail to parse/build. Might be safer to keep the existing v2 structure and only add the new deeplink schemes under plugins.deep-link.desktop.schemes.

"build": {
"beforeBuildCommand": "pnpm build",
"beforeDevCommand": "pnpm dev:ui",
"devPath": "http://localhost:3001",
"distDir": "../dist"
Comment on lines +4 to +7
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build commands are incorrect. Changed:

  • beforeDevCommand: pnpm localdev to pnpm dev:ui
  • devUrl: port 3002 to port 3001
  • beforeBuildCommand: pnpm turbo build --filter @cap/desktop to pnpm build
  • frontendDist: ../.output/public to ../dist

Per package.json, the desktop app uses vinxi with localdev script on port 3002, and builds to ../.output/public.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 4:7

Comment:
Build commands are incorrect. Changed:
- `beforeDevCommand`: `pnpm localdev` to `pnpm dev:ui` 
- `devUrl`: port 3002 to port 3001
- `beforeBuildCommand`: `pnpm turbo build --filter @cap/desktop` to `pnpm build`
- `frontendDist`: `../.output/public` to `../dist`

Per `package.json`, the desktop app uses `vinxi` with `localdev` script on port 3002, and builds to `../.output/public`.

How can I resolve this? If you propose a fix, please make it concise.

},
"package": {
"productName": "Cap",
"version": "../package.json"
},
Comment on lines +9 to +12
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Product name changed from "Cap - Development" to "Cap", and the entire package structure is v1 syntax. In Tauri v2, product name and identifier are at the top level, not nested under package.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 9:12

Comment:
Product name changed from "Cap - Development" to "Cap", and the entire `package` structure is v1 syntax. In Tauri v2, product name and identifier are at the top level, not nested under `package`.

How can I resolve this? If you propose a fix, please make it concise.

"tauri": {
"allowlist": {
"all": false,
"shell": {
"all": false,
"open": true
},
"window": {
"all": false,
"close": true,
"hide": true,
"show": true,
"maximize": true,
"minimize": true,
"unmaximize": true,
"unminimize": true,
"startDragging": true
},
"fs": {
"all": true,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

allowlist.fs.all: true (plus path/os/dialog/notification/globalShortcut all enabled) is extremely permissive. If this is intentional, can we scope it down to the minimal set of APIs needed for deeplinks?

"scope": ["$HOME/**", "$RESOURCE/**"]
},
"path": {
"all": true
},
"os": {
"all": true
},
"dialog": {
"all": true
},
"notification": {
"all": true
},
"globalShortcut": {
"all": true
}
Comment on lines +14 to +49
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The allowlist configuration is Tauri v1 syntax and was completely removed in Tauri v2. In v2, permissions are managed through the new capability system with manifest files. This entire section will cause errors.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 14:49

Comment:
The `allowlist` configuration is Tauri v1 syntax and was completely removed in Tauri v2. In v2, permissions are managed through the new capability system with manifest files. This entire section will cause errors.

How can I resolve this? If you propose a fix, please make it concise.

},
"bundle": {
"active": true,
"category": "DeveloperTool",
"copyright": "",
"deb": {
"depends": []
},
"externalBin": [],
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
],
"identifier": "com.cap.desktop",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bundle identifier changed from so.cap.desktop.dev to com.cap.desktop. This would require re-signing and could break existing installations.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 66:66

Comment:
Bundle identifier changed from `so.cap.desktop.dev` to `com.cap.desktop`. This would require re-signing and could break existing installations.

How can I resolve this? If you propose a fix, please make it concise.

"longDescription": "",
"macOS": {
"entitlements": null,
"exceptionDomain": "",
"frameworks": [],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The frameworks array was changed from ["../../../target/native-deps/Spacedrive.framework"] to empty []. The Spacedrive framework is required for the desktop app functionality.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 71:71

Comment:
The `frameworks` array was changed from `["../../../target/native-deps/Spacedrive.framework"]` to empty `[]`. The Spacedrive framework is required for the desktop app functionality.

How can I resolve this? If you propose a fix, please make it concise.

"providerShortName": null,
"signingIdentity": null
},
"resources": [],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The resources were changed from a detailed mapping of background assets and Rive files to an empty array []. The app requires these bundled resources:

  • assets/backgrounds/macOS/*
  • assets/backgrounds/blue/*, dark/*, orange/*, purple/*
  • ../src/assets/rive/*.riv
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 75:75

Comment:
The `resources` were changed from a detailed mapping of background assets and Rive files to an empty array `[]`. The app requires these bundled resources:
- `assets/backgrounds/macOS/*`
- `assets/backgrounds/blue/*`, `dark/*`, `orange/*`, `purple/*`
- `../src/assets/rive/*.riv`

How can I resolve this? If you propose a fix, please make it concise.

"shortDescription": "",
"targets": "all",
"windows": {
"certificateThumbprint": null,
"digestAlgorithm": "sha256",
"timestampUrl": ""
}
},
"security": {
"csp": null
},
Comment on lines +84 to +86
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Security CSP was removed (changed from a detailed CSP string to null). The original CSP allowed specific sources:

default-src 'self' ws: ipc: http://ipc.localhost; img-src 'self' asset: http://asset.localhost blob: data:; media-src 'self' asset: http://asset.localhost; script-src 'self' 'unsafe-eval' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'

This was required for the asset protocol to work properly.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 84:86

Comment:
Security CSP was removed (changed from a detailed CSP string to `null`). The original CSP allowed specific sources:
```
default-src 'self' ws: ipc: http://ipc.localhost; img-src 'self' asset: http://asset.localhost blob: data:; media-src 'self' asset: http://asset.localhost; script-src 'self' 'unsafe-eval' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'
```
This was required for the asset protocol to work properly.

How can I resolve this? If you propose a fix, please make it concise.

"updater": {
"active": false
},
"windows": [
{
"fullscreen": false,
"height": 600,
"resizable": true,
"title": "Cap",
"width": 800
}
],
"systemTray": {
"iconPath": "icons/icon.png",
"iconAsTemplate": true
},
"protocols": [
{
"name": "cap-auth",
"schemes": ["cap-auth"]
},
{
"name": "cap-deeplink",
"schemes": ["cap"]
}
]
Comment on lines +103 to +112
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The deeplink configuration changed from Tauri v2 plugin syntax to v1 protocols syntax. Also changed schemes from ["cap-desktop"] to ["cap-auth"] and ["cap"].

The v2 plugin configuration should be:

"plugins": {
  "deep-link": {
    "desktop": {
      "schemes": ["cap-desktop"]
    }
  }
}

Additionally, the original config had the deep-link plugin properly configured, and changing the scheme names may break existing deeplinks.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 103:112

Comment:
The deeplink configuration changed from Tauri v2 plugin syntax to v1 `protocols` syntax. Also changed schemes from `["cap-desktop"]` to `["cap-auth"]` and `["cap"]`. 

The v2 plugin configuration should be:
```json
"plugins": {
  "deep-link": {
    "desktop": {
      "schemes": ["cap-desktop"]
    }
  }
}
```

Additionally, the original config had the deep-link plugin properly configured, and changing the scheme names may break existing deeplinks.

How can I resolve this? If you propose a fix, please make it concise.

}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: add a trailing newline so this file doesn't show \ No newline at end of file.

Suggested change
}
}

Comment on lines 1 to +114
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This entire configuration has been replaced with Tauri v1 syntax, but the project uses Tauri v2. The schema reference changed from Tauri v2 to v1, and the structure is completely different (v1 uses tauri.allowlist which was removed in v2). This will break the build.

Critical missing configurations:

  • app.macOSPrivateApi: true (required for NSPanel features per Cargo.toml)
  • Security CSP configuration
  • Resource bundling for backgrounds and Rive assets
  • macOS frameworks (Spacedrive.framework)
  • File associations for .cap files
  • Correct Tauri v2 plugin syntax
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 1:114

Comment:
This entire configuration has been replaced with Tauri v1 syntax, but the project uses Tauri v2. The schema reference changed from Tauri v2 to v1, and the structure is completely different (v1 uses `tauri.allowlist` which was removed in v2). This will break the build.

Critical missing configurations:
- `app.macOSPrivateApi: true` (required for NSPanel features per `Cargo.toml`)
- Security CSP configuration
- Resource bundling for backgrounds and Rive assets
- macOS frameworks (Spacedrive.framework)
- File associations for `.cap` files
- Correct Tauri v2 plugin syntax

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines 1 to +114
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing app.macOSPrivateApi: true configuration. Per apps/desktop/src-tauri/Cargo.toml:23, the app depends on macos-private-api feature and uses tauri-nspanel (line 136) which requires this flag in the config.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 1:114

Comment:
Missing `app.macOSPrivateApi: true` configuration. Per `apps/desktop/src-tauri/Cargo.toml:23`, the app depends on `macos-private-api` feature and uses `tauri-nspanel` (line 136) which requires this flag in the config.

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines 1 to +114
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing file associations configuration. The original config registered .cap file extension with:

"fileAssociations": [{
  "ext": ["cap"],
  "name": "Cap Project",
  "mimeType": "application/x-cap-project",
  "role": "Editor"
}]

Without this, .cap files won't open with the app.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 1:114

Comment:
Missing file associations configuration. The original config registered `.cap` file extension with:
```json
"fileAssociations": [{
  "ext": ["cap"],
  "name": "Cap Project",
  "mimeType": "application/x-cap-project",
  "role": "Editor"
}]
```
Without this, `.cap` files won't open with the app.

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines 1 to +114
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing asset protocol configuration. The original had:

"security": {
  "assetProtocol": {
    "enable": true,
    "scope": ["$APPDATA/**", "**/*.jpg", "**/*.webp", "$RESOURCE/**", "**/*.riv", "$HOME/**"]
  }
}

This is required for the app to access local assets. Per Cargo.toml:24, the app uses protocol-asset feature.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 1:114

Comment:
Missing asset protocol configuration. The original had:
```json
"security": {
  "assetProtocol": {
    "enable": true,
    "scope": ["$APPDATA/**", "**/*.jpg", "**/*.webp", "$RESOURCE/**", "**/*.riv", "$HOME/**"]
  }
}
```
This is required for the app to access local assets. Per `Cargo.toml:24`, the app uses `protocol-asset` feature.

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines 1 to +114
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing macOS DMG and Windows installer customizations. The original config had custom images for:

  • DMG background (assets/dmg-background.png)
  • NSIS header/sidebar images
  • WIX banner/dialog images
  • Upgrade code for WIX installer

These are important for branding and proper installer behavior.

Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src-tauri/tauri.conf.json
Line: 1:114

Comment:
Missing macOS DMG and Windows installer customizations. The original config had custom images for:
- DMG background (`assets/dmg-background.png`)
- NSIS header/sidebar images  
- WIX banner/dialog images
- Upgrade code for WIX installer

These are important for branding and proper installer behavior.

How can I resolve this? If you propose a fix, please make it concise.