Skip to content
Closed
Show file tree
Hide file tree
Changes from 4 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
1 change: 1 addition & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ Last updated: 2026-03-11
- Shared contracts live in `packages/shared-types` so the UI can evolve without importing Python internals.
- Shared contracts should ultimately model section, role, cue, confidence, and export artifacts explicitly enough that desktop UI and analysis outputs do not invent their own parallel schemas.
- The current shared-types baseline includes a rehearsal-domain fixture that exercises section, role, cue, confidence, provenance, and export-summary fields in the desktop shell before the full analysis pipeline lands.
- Local analysis orchestration uses typed Tauri IPC commands and a Python subprocess over stdin/stdout rather than a loopback HTTP listener.
- Product and UX decisions should prefer rehearsal-first simplicity while still maintaining high analytical accuracy.
- Security decisions should prefer allowlisted narrow capabilities over generic convenience APIs.

Expand Down
1 change: 1 addition & 0 deletions apps/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"test": "node -e \"require('node:fs').mkdirSync('coverage/.tmp', { recursive: true })\" && vitest run --coverage"
},
"dependencies": {
"@tauri-apps/api": "^2.8.0",
"@bandscope/shared-types": "0.1.0",
"react": "^19.2.4",
"react-dom": "^19.2.4"
Expand Down
3 changes: 3 additions & 0 deletions apps/desktop/src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions apps/desktop/src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ edition = "2021"
tauri-build = { version = "2" }

[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tauri = { version = "2.3.1" }
time = { version = "0.3", features = ["formatting", "macros"] }

[features]
default = []
8 changes: 7 additions & 1 deletion apps/desktop/src-tauri/build.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
fn main() {
tauri_build::build()
tauri_build::try_build(
tauri_build::Attributes::new().app_manifest(
tauri_build::AppManifest::new()
.commands(&["start_analysis_job", "get_analysis_job_status"]),
),
)
.expect("failed to build tauri application manifest");
}
11 changes: 11 additions & 0 deletions apps/desktop/src-tauri/capabilities/main.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "main-capability",
"description": "Capability for the main BandScope window to use the analysis orchestration commands.",
"windows": ["main"],
"permissions": [
"core:default",
"allow-start-analysis-job",
"allow-get-analysis-job-status"
]
}
1 change: 1 addition & 0 deletions apps/desktop/src-tauri/gen/schemas/acl-manifests.json

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions apps/desktop/src-tauri/gen/schemas/capabilities.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"main-capability":{"identifier":"main-capability","description":"Capability for the main BandScope window to use the analysis orchestration commands.","local":true,"windows":["main"],"permissions":["core:default","allow-start-analysis-job","allow-get-analysis-job-status"]}}
2,268 changes: 2,268 additions & 0 deletions apps/desktop/src-tauri/gen/schemas/desktop-schema.json

Large diffs are not rendered by default.

2,268 changes: 2,268 additions & 0 deletions apps/desktop/src-tauri/gen/schemas/macOS-schema.json

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Automatically generated - DO NOT EDIT!

[[permission]]
identifier = "allow-get-analysis-job-status"
description = "Enables the get_analysis_job_status command without any pre-configured scope."
commands.allow = ["get_analysis_job_status"]

[[permission]]
identifier = "deny-get-analysis-job-status"
description = "Denies the get_analysis_job_status command without any pre-configured scope."
commands.deny = ["get_analysis_job_status"]
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Automatically generated - DO NOT EDIT!

[[permission]]
identifier = "allow-start-analysis-job"
description = "Enables the start_analysis_job command without any pre-configured scope."
commands.allow = ["start_analysis_job"]

[[permission]]
identifier = "deny-start-analysis-job"
description = "Denies the start_analysis_job command without any pre-configured scope."
commands.deny = ["start_analysis_job"]
Loading
Loading