diff --git a/.github/workflows/chorus_artifacts.yml b/.github/workflows/mast_artifacts.yml similarity index 88% rename from .github/workflows/chorus_artifacts.yml rename to .github/workflows/mast_artifacts.yml index 85c8d24013..6060a5ae23 100644 --- a/.github/workflows/chorus_artifacts.yml +++ b/.github/workflows/mast_artifacts.yml @@ -1,4 +1,4 @@ -name: Chorus Artifacts +name: Mast Artifacts on: workflow_dispatch: @@ -20,7 +20,7 @@ permissions: contents: read concurrency: - group: chorus-artifacts-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }} + group: mast-artifacts-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }} cancel-in-progress: true env: @@ -60,8 +60,8 @@ jobs: - name: Upload Linux bundle uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 with: - name: chorus-linux-x86_64 - path: target/release/chorus-linux-x86_64.tar.gz + name: mast-linux-x86_64 + path: target/release/mast-linux-x86_64.tar.gz if-no-files-found: error linux_remote_server_archive: @@ -88,13 +88,13 @@ jobs: - name: Build Linux remote server archive run: | cargo build --release --target x86_64-unknown-linux-gnu --package remote_server - gzip -f --stdout --best target/x86_64-unknown-linux-gnu/release/remote_server > target/chorus-remote-server-linux-x86_64.gz + gzip -f --stdout --best target/x86_64-unknown-linux-gnu/release/remote_server > target/mast-remote-server-linux-x86_64.gz - name: Upload Linux remote server archive uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 with: - name: chorus-remote-server-linux-x86_64 - path: target/chorus-remote-server-linux-x86_64.gz + name: mast-remote-server-linux-x86_64 + path: target/mast-remote-server-linux-x86_64.gz if-no-files-found: error macos_bundle: @@ -143,12 +143,12 @@ jobs: - name: Download Linux remote server archive uses: actions/download-artifact@v4 with: - name: chorus-remote-server-linux-x86_64 + name: mast-remote-server-linux-x86_64 path: target/remote-servers-prebuilt - name: Build macOS app bundle env: - CHORUS_PREBUILT_REMOTE_SERVER_ARCHIVES_DIR: target/remote-servers-prebuilt + MAST_PREBUILT_REMOTE_SERVER_ARCHIVES_DIR: target/remote-servers-prebuilt run: ./script/bundle-mac -a aarch64-apple-darwin - name: Archive macOS app bundle @@ -158,11 +158,11 @@ jobs: echo "Could not locate the macOS app bundle" exit 1 fi - ditto -c -k --sequesterRsrc --keepParent "$app_path" target/chorus-macos-aarch64-app.zip + ditto -c -k --sequesterRsrc --keepParent "$app_path" target/mast-macos-aarch64-app.zip - name: Upload macOS app bundle uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 with: - name: chorus-macos-aarch64-app - path: target/chorus-macos-aarch64-app.zip + name: mast-macos-aarch64-app + path: target/mast-macos-aarch64-app.zip if-no-files-found: error diff --git a/.github/workflows/chorus_ci.yml b/.github/workflows/mast_ci.yml similarity index 91% rename from .github/workflows/chorus_ci.yml rename to .github/workflows/mast_ci.yml index 2222ae62ab..2536b7ff37 100644 --- a/.github/workflows/chorus_ci.yml +++ b/.github/workflows/mast_ci.yml @@ -1,4 +1,4 @@ -name: Chorus CI +name: Mast CI on: workflow_dispatch: {} @@ -13,7 +13,7 @@ permissions: contents: read concurrency: - group: chorus-ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }} + group: mast-ci-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }} cancel-in-progress: true env: @@ -47,10 +47,10 @@ jobs: - name: Validate workflows run: cargo xtask check-workflows - - name: Check Chorus workspace + - name: Check Mast workspace run: cargo check -p sing_bridge -p sing_dispatch -p sing_orchestrator -p sing_project -p sing_spec -p zed - - name: Test sing bridge + - name: Test SAIL bridge run: cargo test -p sing_bridge macos: diff --git a/assets/icon_themes/jetbrains-new-ui/jetbrains-new-ui-icons-theme.json b/assets/icon_themes/jetbrains-new-ui/jetbrains-new-ui-icons-theme.json deleted file mode 100644 index a5d9fae003..0000000000 --- a/assets/icon_themes/jetbrains-new-ui/jetbrains-new-ui-icons-theme.json +++ /dev/null @@ -1,323 +0,0 @@ -{ - "$schema": "https://zed.dev/schema/icon_themes/v0.1.0.json", - "author": "ankddev (Andrey)", - "name": "JetBrains New UI Icons Theme", - "themes": [ - { - "name": "JetBrains New UI Icons (Dark)", - "appearance": "dark", - "directory_icons": { - "collapsed": "./icons/folder_dark.svg", - "expanded": "./icons/folder_dark.svg" - }, - "file_stems": { - "Makefile": "makefile", - "CMakeLists.txt": "cmake" - }, - "file_suffixes": { - "cmake": "cmake", - "cs": "csharp", - "h": "h", - "hpp": "hpp", - "mod": "goMod", - "sum": "goSum", - "work": "goWork" - }, - "file_icons": { - "c": { - "path": "./icons/c_dark.svg" - }, - "csharp": { - "path": "./icons/csharp_dark.svg" - }, - "cmake": { - "path": "./icons/cmake.svg" - }, - "code": { - "path": "./icons/json.svg" - }, - "cpp": { - "path": "./icons/cpp_dark.svg" - }, - "css": { - "path": "./icons/css.svg" - }, - "dart": { - "path": "./icons/dart_dark.svg" - }, - "default": { - "path": "./icons/anyType_dark.svg" - }, - "docker": { - "path": "./icons/docker.svg" - }, - "document": { - "path": "./icons/text.svg" - }, - "elixir": { - "path": "./icons/elixir_dark.svg" - }, - "erlang": { - "path": "./icons/erlang.svg" - }, - "eslint": { - "path": "./icons/eslint.svg" - }, - "font": { - "path": "./icons/font_dark.svg" - }, - "gleam": { - "path": "./icons/gleam_dark.svg" - }, - "go": { - "path": "./icons/go_dark.svg" - }, - "goMod": { - "path": "./icons/goMod_dark.svg" - }, - "goSum": { - "path": "./icons/goSum_dark.svg" - }, - "goWork": { - "path": "./icons/goWork_dark.svg" - }, - "graphql": { - "path": "./icons/graphql.svg" - }, - "h": { - "path": "./icons/h_dark.svg" - }, - "hpp": { - "path": "./icons/h_dark.svg" - }, - "haskell": { - "path": "./icons/haskell.svg" - }, - "hcl": { - "path": "./icons/hcl_dark.svg" - }, - "image": { - "path": "./icons/image_dark.svg" - }, - "java": { - "path": "./icons/java_dark.svg" - }, - "javascript": { - "path": "./icons/javaScript_dark.svg" - }, - "kotlin": { - "path": "./icons/kotlin_dark.svg" - }, - "lua": { - "path": "./icons/lua.svg" - }, - "makefile": { - "path": "./icons/makefile_dark.svg" - }, - "php": { - "path": "./icons/php_dark.svg" - }, - "python": { - "path": "./icons/python.svg" - }, - "react": { - "path": "./icons/tsx_dark.svg" - }, - "ruby": { - "path": "./icons/ruby_dark.svg" - }, - "rust": { - "path": "./icons/rustFile_dark.svg" - }, - "scala": { - "path": "./icons/scala_dark.svg" - }, - "settings": { - "path": "./icons/config_dark.svg" - }, - "swift": { - "path": "./icons/swift.svg" - }, - "terminal": { - "path": "./icons/shell_dark.svg" - }, - "terraform": { - "path": "./icons/terraform_dark.svg" - }, - "toml": { - "path": "./icons/toml_dark.svg" - }, - "typescript": { - "path": "./icons/typeScript_dark.svg" - }, - "vcs": { - "path": "./icons/gitignore.svg" - }, - "vue": { - "path": "./icons/vueJs.svg" - }, - "zig": { - "path": "./icons/zig_dark.svg" - } - } - }, - { - "name": "JetBrains New UI Icons (Light)", - "appearance": "light", - "directory_icons": { - "collapsed": "./icons/folder.svg", - "expanded": "./icons/folder.svg" - }, - "file_stems": { - "Makefile": "makefile", - "CMakeLists.txt": "cmake" - }, - "file_suffixes": { - "cmake": "cmake", - "cs": "csharp", - "h": "h", - "hpp": "hpp", - "mod": "goMod", - "sum": "goSum", - "work": "goWork" - }, - "file_icons": { - "c": { - "path": "./icons/c.svg" - }, - "csharp": { - "path": "./icons/csharp.svg" - }, - "cmake": { - "path": "./icons/cmake.svg" - }, - "code": { - "path": "./icons/json.svg" - }, - "cpp": { - "path": "./icons/cpp.svg" - }, - "css": { - "path": "./icons/css.svg" - }, - "dart": { - "path": "./icons/dart.svg" - }, - "default": { - "path": "./icons/anyType.svg" - }, - "docker": { - "path": "./icons/docker.svg" - }, - "document": { - "path": "./icons/text.svg" - }, - "elixir": { - "path": "./icons/elixir.svg" - }, - "erlang": { - "path": "./icons/erlang.svg" - }, - "eslint": { - "path": "./icons/eslint.svg" - }, - "font": { - "path": "./icons/font.svg" - }, - "gleam": { - "path": "./icons/gleam.svg" - }, - "go": { - "path": "./icons/go.svg" - }, - "goMod": { - "path": "./icons/goMod.svg" - }, - "goSum": { - "path": "./icons/goSum.svg" - }, - "goWork": { - "path": "./icons/goWork.svg" - }, - "graphql": { - "path": "./icons/graphql.svg" - }, - "h": { - "path": "./icons/h.svg" - }, - "hpp": { - "path": "./icons/h.svg" - }, - "haskell": { - "path": "./icons/haskell.svg" - }, - "hcl": { - "path": "./icons/hcl.svg" - }, - "image": { - "path": "./icons/image.svg" - }, - "java": { - "path": "./icons/java.svg" - }, - "javascript": { - "path": "./icons/javaScript.svg" - }, - "kotlin": { - "path": "./icons/kotlin.svg" - }, - "lua": { - "path": "./icons/lua.svg" - }, - "makefile": { - "path": "./icons/makefile.svg" - }, - "php": { - "path": "./icons/php.svg" - }, - "python": { - "path": "./icons/python.svg" - }, - "react": { - "path": "./icons/tsx.svg" - }, - "ruby": { - "path": "./icons/ruby.svg" - }, - "rust": { - "path": "./icons/rustFile.svg" - }, - "scala": { - "path": "./icons/scala.svg" - }, - "settings": { - "path": "./icons/config.svg" - }, - "swift": { - "path": "./icons/swift.svg" - }, - "terminal": { - "path": "./icons/shell.svg" - }, - "terraform": { - "path": "./icons/terraform.svg" - }, - "toml": { - "path": "./icons/toml.svg" - }, - "typescript": { - "path": "./icons/typeScript.svg" - }, - "vcs": { - "path": "./icons/gitignore.svg" - }, - "vue": { - "path": "./icons/vueJs.svg" - }, - "zig": { - "path": "./icons/zig.svg" - } - } - } - ] -} diff --git a/assets/icon_themes/jetbrains-new-ui/LICENSE-APACHE b/assets/icon_themes/mast/LICENSE-APACHE similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/LICENSE-APACHE rename to assets/icon_themes/mast/LICENSE-APACHE diff --git a/assets/icon_themes/jetbrains-new-ui/LICENSE-MIT b/assets/icon_themes/mast/LICENSE-MIT similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/LICENSE-MIT rename to assets/icon_themes/mast/LICENSE-MIT diff --git a/assets/icon_themes/jetbrains-new-ui/icons/anyType.svg b/assets/icon_themes/mast/icons/anyType.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/anyType.svg rename to assets/icon_themes/mast/icons/anyType.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/anyType_dark.svg b/assets/icon_themes/mast/icons/anyType_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/anyType_dark.svg rename to assets/icon_themes/mast/icons/anyType_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/c.svg b/assets/icon_themes/mast/icons/c.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/c.svg rename to assets/icon_themes/mast/icons/c.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/c_dark.svg b/assets/icon_themes/mast/icons/c_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/c_dark.svg rename to assets/icon_themes/mast/icons/c_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/cmake.svg b/assets/icon_themes/mast/icons/cmake.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/cmake.svg rename to assets/icon_themes/mast/icons/cmake.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/config.svg b/assets/icon_themes/mast/icons/config.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/config.svg rename to assets/icon_themes/mast/icons/config.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/config_dark.svg b/assets/icon_themes/mast/icons/config_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/config_dark.svg rename to assets/icon_themes/mast/icons/config_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/cpp.svg b/assets/icon_themes/mast/icons/cpp.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/cpp.svg rename to assets/icon_themes/mast/icons/cpp.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/cpp_dark.svg b/assets/icon_themes/mast/icons/cpp_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/cpp_dark.svg rename to assets/icon_themes/mast/icons/cpp_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/csharp.svg b/assets/icon_themes/mast/icons/csharp.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/csharp.svg rename to assets/icon_themes/mast/icons/csharp.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/csharp_dark.svg b/assets/icon_themes/mast/icons/csharp_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/csharp_dark.svg rename to assets/icon_themes/mast/icons/csharp_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/css.svg b/assets/icon_themes/mast/icons/css.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/css.svg rename to assets/icon_themes/mast/icons/css.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/dart.svg b/assets/icon_themes/mast/icons/dart.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/dart.svg rename to assets/icon_themes/mast/icons/dart.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/dart_dark.svg b/assets/icon_themes/mast/icons/dart_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/dart_dark.svg rename to assets/icon_themes/mast/icons/dart_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/docker.svg b/assets/icon_themes/mast/icons/docker.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/docker.svg rename to assets/icon_themes/mast/icons/docker.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/docker_dark.svg b/assets/icon_themes/mast/icons/docker_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/docker_dark.svg rename to assets/icon_themes/mast/icons/docker_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/elixir.svg b/assets/icon_themes/mast/icons/elixir.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/elixir.svg rename to assets/icon_themes/mast/icons/elixir.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/elixir_dark.svg b/assets/icon_themes/mast/icons/elixir_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/elixir_dark.svg rename to assets/icon_themes/mast/icons/elixir_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/erlang.svg b/assets/icon_themes/mast/icons/erlang.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/erlang.svg rename to assets/icon_themes/mast/icons/erlang.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/eslint.svg b/assets/icon_themes/mast/icons/eslint.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/eslint.svg rename to assets/icon_themes/mast/icons/eslint.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/folder.svg b/assets/icon_themes/mast/icons/folder.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/folder.svg rename to assets/icon_themes/mast/icons/folder.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/folder_dark.svg b/assets/icon_themes/mast/icons/folder_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/folder_dark.svg rename to assets/icon_themes/mast/icons/folder_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/font.svg b/assets/icon_themes/mast/icons/font.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/font.svg rename to assets/icon_themes/mast/icons/font.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/font_dark.svg b/assets/icon_themes/mast/icons/font_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/font_dark.svg rename to assets/icon_themes/mast/icons/font_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/gitignore.svg b/assets/icon_themes/mast/icons/gitignore.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/gitignore.svg rename to assets/icon_themes/mast/icons/gitignore.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/gleam.svg b/assets/icon_themes/mast/icons/gleam.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/gleam.svg rename to assets/icon_themes/mast/icons/gleam.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/gleam_dark.svg b/assets/icon_themes/mast/icons/gleam_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/gleam_dark.svg rename to assets/icon_themes/mast/icons/gleam_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/go.svg b/assets/icon_themes/mast/icons/go.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/go.svg rename to assets/icon_themes/mast/icons/go.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/goSum.svg b/assets/icon_themes/mast/icons/goSum.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/goSum.svg rename to assets/icon_themes/mast/icons/goSum.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/goSum_dark.svg b/assets/icon_themes/mast/icons/goSum_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/goSum_dark.svg rename to assets/icon_themes/mast/icons/goSum_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/goWork.svg b/assets/icon_themes/mast/icons/goWork.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/goWork.svg rename to assets/icon_themes/mast/icons/goWork.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/goWork_dark.svg b/assets/icon_themes/mast/icons/goWork_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/goWork_dark.svg rename to assets/icon_themes/mast/icons/goWork_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/go_dark.svg b/assets/icon_themes/mast/icons/go_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/go_dark.svg rename to assets/icon_themes/mast/icons/go_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/gomod.svg b/assets/icon_themes/mast/icons/gomod.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/gomod.svg rename to assets/icon_themes/mast/icons/gomod.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/gomod_dark.svg b/assets/icon_themes/mast/icons/gomod_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/gomod_dark.svg rename to assets/icon_themes/mast/icons/gomod_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/graphql.svg b/assets/icon_themes/mast/icons/graphql.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/graphql.svg rename to assets/icon_themes/mast/icons/graphql.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/h.svg b/assets/icon_themes/mast/icons/h.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/h.svg rename to assets/icon_themes/mast/icons/h.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/h_dark.svg b/assets/icon_themes/mast/icons/h_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/h_dark.svg rename to assets/icon_themes/mast/icons/h_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/haskell.svg b/assets/icon_themes/mast/icons/haskell.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/haskell.svg rename to assets/icon_themes/mast/icons/haskell.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/hcl.svg b/assets/icon_themes/mast/icons/hcl.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/hcl.svg rename to assets/icon_themes/mast/icons/hcl.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/hcl_dark.svg b/assets/icon_themes/mast/icons/hcl_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/hcl_dark.svg rename to assets/icon_themes/mast/icons/hcl_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/image.svg b/assets/icon_themes/mast/icons/image.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/image.svg rename to assets/icon_themes/mast/icons/image.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/image_dark.svg b/assets/icon_themes/mast/icons/image_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/image_dark.svg rename to assets/icon_themes/mast/icons/image_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/java.svg b/assets/icon_themes/mast/icons/java.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/java.svg rename to assets/icon_themes/mast/icons/java.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/javaScript.svg b/assets/icon_themes/mast/icons/javaScript.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/javaScript.svg rename to assets/icon_themes/mast/icons/javaScript.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/javaScript_dark.svg b/assets/icon_themes/mast/icons/javaScript_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/javaScript_dark.svg rename to assets/icon_themes/mast/icons/javaScript_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/java_dark.svg b/assets/icon_themes/mast/icons/java_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/java_dark.svg rename to assets/icon_themes/mast/icons/java_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/json.svg b/assets/icon_themes/mast/icons/json.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/json.svg rename to assets/icon_themes/mast/icons/json.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/json_dark.svg b/assets/icon_themes/mast/icons/json_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/json_dark.svg rename to assets/icon_themes/mast/icons/json_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/kotlin.svg b/assets/icon_themes/mast/icons/kotlin.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/kotlin.svg rename to assets/icon_themes/mast/icons/kotlin.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/kotlin_dark.svg b/assets/icon_themes/mast/icons/kotlin_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/kotlin_dark.svg rename to assets/icon_themes/mast/icons/kotlin_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/lua.svg b/assets/icon_themes/mast/icons/lua.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/lua.svg rename to assets/icon_themes/mast/icons/lua.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/makefile.svg b/assets/icon_themes/mast/icons/makefile.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/makefile.svg rename to assets/icon_themes/mast/icons/makefile.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/makefile_dark.svg b/assets/icon_themes/mast/icons/makefile_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/makefile_dark.svg rename to assets/icon_themes/mast/icons/makefile_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/php.svg b/assets/icon_themes/mast/icons/php.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/php.svg rename to assets/icon_themes/mast/icons/php.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/php_dark.svg b/assets/icon_themes/mast/icons/php_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/php_dark.svg rename to assets/icon_themes/mast/icons/php_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/python.svg b/assets/icon_themes/mast/icons/python.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/python.svg rename to assets/icon_themes/mast/icons/python.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/ruby.svg b/assets/icon_themes/mast/icons/ruby.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/ruby.svg rename to assets/icon_themes/mast/icons/ruby.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/ruby_dark.svg b/assets/icon_themes/mast/icons/ruby_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/ruby_dark.svg rename to assets/icon_themes/mast/icons/ruby_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/rustFile.svg b/assets/icon_themes/mast/icons/rustFile.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/rustFile.svg rename to assets/icon_themes/mast/icons/rustFile.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/rustFile_dark.svg b/assets/icon_themes/mast/icons/rustFile_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/rustFile_dark.svg rename to assets/icon_themes/mast/icons/rustFile_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/scala.svg b/assets/icon_themes/mast/icons/scala.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/scala.svg rename to assets/icon_themes/mast/icons/scala.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/scala_dark.svg b/assets/icon_themes/mast/icons/scala_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/scala_dark.svg rename to assets/icon_themes/mast/icons/scala_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/shell.svg b/assets/icon_themes/mast/icons/shell.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/shell.svg rename to assets/icon_themes/mast/icons/shell.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/shell_dark.svg b/assets/icon_themes/mast/icons/shell_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/shell_dark.svg rename to assets/icon_themes/mast/icons/shell_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/swift.svg b/assets/icon_themes/mast/icons/swift.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/swift.svg rename to assets/icon_themes/mast/icons/swift.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/terraform.svg b/assets/icon_themes/mast/icons/terraform.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/terraform.svg rename to assets/icon_themes/mast/icons/terraform.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/terraform_dark.svg b/assets/icon_themes/mast/icons/terraform_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/terraform_dark.svg rename to assets/icon_themes/mast/icons/terraform_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/text.svg b/assets/icon_themes/mast/icons/text.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/text.svg rename to assets/icon_themes/mast/icons/text.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/text_dark.svg b/assets/icon_themes/mast/icons/text_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/text_dark.svg rename to assets/icon_themes/mast/icons/text_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/toml.svg b/assets/icon_themes/mast/icons/toml.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/toml.svg rename to assets/icon_themes/mast/icons/toml.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/toml_dark.svg b/assets/icon_themes/mast/icons/toml_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/toml_dark.svg rename to assets/icon_themes/mast/icons/toml_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/tsx.svg b/assets/icon_themes/mast/icons/tsx.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/tsx.svg rename to assets/icon_themes/mast/icons/tsx.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/tsx_dark.svg b/assets/icon_themes/mast/icons/tsx_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/tsx_dark.svg rename to assets/icon_themes/mast/icons/tsx_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/typeScript.svg b/assets/icon_themes/mast/icons/typeScript.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/typeScript.svg rename to assets/icon_themes/mast/icons/typeScript.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/typeScript_dark.svg b/assets/icon_themes/mast/icons/typeScript_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/typeScript_dark.svg rename to assets/icon_themes/mast/icons/typeScript_dark.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/vueJs.svg b/assets/icon_themes/mast/icons/vueJs.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/vueJs.svg rename to assets/icon_themes/mast/icons/vueJs.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/zig.svg b/assets/icon_themes/mast/icons/zig.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/zig.svg rename to assets/icon_themes/mast/icons/zig.svg diff --git a/assets/icon_themes/jetbrains-new-ui/icons/zig_dark.svg b/assets/icon_themes/mast/icons/zig_dark.svg similarity index 100% rename from assets/icon_themes/jetbrains-new-ui/icons/zig_dark.svg rename to assets/icon_themes/mast/icons/zig_dark.svg diff --git a/assets/icon_themes/mast/mast-icons-theme.json b/assets/icon_themes/mast/mast-icons-theme.json new file mode 100644 index 0000000000..ea80af3188 --- /dev/null +++ b/assets/icon_themes/mast/mast-icons-theme.json @@ -0,0 +1,323 @@ +{ + "$schema": "https://zed.dev/schema/icon_themes/v0.1.0.json", + "author": "JetBrains s.r.o. and contributors; packaged for Mast by Standard Applied Intelligence Labs", + "name": "Mast Icons Theme", + "themes": [ + { + "name": "Mast Icons (Dark)", + "appearance": "dark", + "directory_icons": { + "collapsed": "./icons/folder_dark.svg", + "expanded": "./icons/folder_dark.svg" + }, + "file_stems": { + "Makefile": "makefile", + "CMakeLists.txt": "cmake" + }, + "file_suffixes": { + "cmake": "cmake", + "cs": "csharp", + "h": "h", + "hpp": "hpp", + "mod": "goMod", + "sum": "goSum", + "work": "goWork" + }, + "file_icons": { + "c": { + "path": "./icons/c_dark.svg" + }, + "csharp": { + "path": "./icons/csharp_dark.svg" + }, + "cmake": { + "path": "./icons/cmake.svg" + }, + "code": { + "path": "./icons/json.svg" + }, + "cpp": { + "path": "./icons/cpp_dark.svg" + }, + "css": { + "path": "./icons/css.svg" + }, + "dart": { + "path": "./icons/dart_dark.svg" + }, + "default": { + "path": "./icons/anyType_dark.svg" + }, + "docker": { + "path": "./icons/docker.svg" + }, + "document": { + "path": "./icons/text.svg" + }, + "elixir": { + "path": "./icons/elixir_dark.svg" + }, + "erlang": { + "path": "./icons/erlang.svg" + }, + "eslint": { + "path": "./icons/eslint.svg" + }, + "font": { + "path": "./icons/font_dark.svg" + }, + "gleam": { + "path": "./icons/gleam_dark.svg" + }, + "go": { + "path": "./icons/go_dark.svg" + }, + "goMod": { + "path": "./icons/goMod_dark.svg" + }, + "goSum": { + "path": "./icons/goSum_dark.svg" + }, + "goWork": { + "path": "./icons/goWork_dark.svg" + }, + "graphql": { + "path": "./icons/graphql.svg" + }, + "h": { + "path": "./icons/h_dark.svg" + }, + "hpp": { + "path": "./icons/h_dark.svg" + }, + "haskell": { + "path": "./icons/haskell.svg" + }, + "hcl": { + "path": "./icons/hcl_dark.svg" + }, + "image": { + "path": "./icons/image_dark.svg" + }, + "java": { + "path": "./icons/java_dark.svg" + }, + "javascript": { + "path": "./icons/javaScript_dark.svg" + }, + "kotlin": { + "path": "./icons/kotlin_dark.svg" + }, + "lua": { + "path": "./icons/lua.svg" + }, + "makefile": { + "path": "./icons/makefile_dark.svg" + }, + "php": { + "path": "./icons/php_dark.svg" + }, + "python": { + "path": "./icons/python.svg" + }, + "react": { + "path": "./icons/tsx_dark.svg" + }, + "ruby": { + "path": "./icons/ruby_dark.svg" + }, + "rust": { + "path": "./icons/rustFile_dark.svg" + }, + "scala": { + "path": "./icons/scala_dark.svg" + }, + "settings": { + "path": "./icons/config_dark.svg" + }, + "swift": { + "path": "./icons/swift.svg" + }, + "terminal": { + "path": "./icons/shell_dark.svg" + }, + "terraform": { + "path": "./icons/terraform_dark.svg" + }, + "toml": { + "path": "./icons/toml_dark.svg" + }, + "typescript": { + "path": "./icons/typeScript_dark.svg" + }, + "vcs": { + "path": "./icons/gitignore.svg" + }, + "vue": { + "path": "./icons/vueJs.svg" + }, + "zig": { + "path": "./icons/zig_dark.svg" + } + } + }, + { + "name": "Mast Icons (Light)", + "appearance": "light", + "directory_icons": { + "collapsed": "./icons/folder.svg", + "expanded": "./icons/folder.svg" + }, + "file_stems": { + "Makefile": "makefile", + "CMakeLists.txt": "cmake" + }, + "file_suffixes": { + "cmake": "cmake", + "cs": "csharp", + "h": "h", + "hpp": "hpp", + "mod": "goMod", + "sum": "goSum", + "work": "goWork" + }, + "file_icons": { + "c": { + "path": "./icons/c.svg" + }, + "csharp": { + "path": "./icons/csharp.svg" + }, + "cmake": { + "path": "./icons/cmake.svg" + }, + "code": { + "path": "./icons/json.svg" + }, + "cpp": { + "path": "./icons/cpp.svg" + }, + "css": { + "path": "./icons/css.svg" + }, + "dart": { + "path": "./icons/dart.svg" + }, + "default": { + "path": "./icons/anyType.svg" + }, + "docker": { + "path": "./icons/docker.svg" + }, + "document": { + "path": "./icons/text.svg" + }, + "elixir": { + "path": "./icons/elixir.svg" + }, + "erlang": { + "path": "./icons/erlang.svg" + }, + "eslint": { + "path": "./icons/eslint.svg" + }, + "font": { + "path": "./icons/font.svg" + }, + "gleam": { + "path": "./icons/gleam.svg" + }, + "go": { + "path": "./icons/go.svg" + }, + "goMod": { + "path": "./icons/goMod.svg" + }, + "goSum": { + "path": "./icons/goSum.svg" + }, + "goWork": { + "path": "./icons/goWork.svg" + }, + "graphql": { + "path": "./icons/graphql.svg" + }, + "h": { + "path": "./icons/h.svg" + }, + "hpp": { + "path": "./icons/h.svg" + }, + "haskell": { + "path": "./icons/haskell.svg" + }, + "hcl": { + "path": "./icons/hcl.svg" + }, + "image": { + "path": "./icons/image.svg" + }, + "java": { + "path": "./icons/java.svg" + }, + "javascript": { + "path": "./icons/javaScript.svg" + }, + "kotlin": { + "path": "./icons/kotlin.svg" + }, + "lua": { + "path": "./icons/lua.svg" + }, + "makefile": { + "path": "./icons/makefile.svg" + }, + "php": { + "path": "./icons/php.svg" + }, + "python": { + "path": "./icons/python.svg" + }, + "react": { + "path": "./icons/tsx.svg" + }, + "ruby": { + "path": "./icons/ruby.svg" + }, + "rust": { + "path": "./icons/rustFile.svg" + }, + "scala": { + "path": "./icons/scala.svg" + }, + "settings": { + "path": "./icons/config.svg" + }, + "swift": { + "path": "./icons/swift.svg" + }, + "terminal": { + "path": "./icons/shell.svg" + }, + "terraform": { + "path": "./icons/terraform.svg" + }, + "toml": { + "path": "./icons/toml.svg" + }, + "typescript": { + "path": "./icons/typeScript.svg" + }, + "vcs": { + "path": "./icons/gitignore.svg" + }, + "vue": { + "path": "./icons/vueJs.svg" + }, + "zig": { + "path": "./icons/zig.svg" + } + } + } + ] +} diff --git a/assets/settings/default.json b/assets/settings/default.json index a06a6fc136..b599d132c8 100644 --- a/assets/settings/default.json +++ b/assets/settings/default.json @@ -1,5 +1,5 @@ { - "$schema": "chorus://schemas/settings", + "$schema": "mast://schemas/settings", /// The displayed name of this project. If not set or null, the root directory name /// will be displayed. "project_name": null, @@ -11,14 +11,15 @@ // - "dark": Use the theme indicated by the "dark" field "theme": { "mode": "system", - "light": "JetBrains Light", - "dark": "JetBrains Dark", + "light": "Mast Light", + "dark": "Mast Dark", }, "icon_theme": { "mode": "system", - "light": "JetBrains New UI Icons (Light)", - "dark": "JetBrains New UI Icons (Dark)", + "light": "Mast Icons (Light)", + "dark": "Mast Icons (Dark)", }, + "unstable.ui_density": "compact", // The name of a base set of key bindings to use. // This setting can take six values, each named after another // text editor: diff --git a/assets/settings/initial_user_settings.json b/assets/settings/initial_user_settings.json index 0472a9922e..7d6c81e934 100644 --- a/assets/settings/initial_user_settings.json +++ b/assets/settings/initial_user_settings.json @@ -7,16 +7,17 @@ // custom settings, run `zed: open default settings` from the // command palette (cmd-shift-p / ctrl-shift-p) { + "unstable.ui_density": "compact", "ui_font_size": 16, "buffer_font_size": 15, "theme": { "mode": "system", - "light": "JetBrains Light", - "dark": "JetBrains Dark", + "light": "Mast Light", + "dark": "Mast Dark", }, "icon_theme": { "mode": "system", - "light": "JetBrains New UI Icons (Light)", - "dark": "JetBrains New UI Icons (Dark)", + "light": "Mast Icons (Light)", + "dark": "Mast Icons (Dark)", }, } diff --git a/assets/themes/jetbrains/LICENSE.txt b/assets/themes/mast/LICENSE.txt similarity index 100% rename from assets/themes/jetbrains/LICENSE.txt rename to assets/themes/mast/LICENSE.txt diff --git a/assets/themes/jetbrains/NOTICE.txt b/assets/themes/mast/NOTICE.txt similarity index 100% rename from assets/themes/jetbrains/NOTICE.txt rename to assets/themes/mast/NOTICE.txt diff --git a/assets/themes/jetbrains/jetbrains-dark.json b/assets/themes/mast/mast-dark.json similarity index 84% rename from assets/themes/jetbrains/jetbrains-dark.json rename to assets/themes/mast/mast-dark.json index 2e00924271..18c0058dbc 100644 --- a/assets/themes/jetbrains/jetbrains-dark.json +++ b/assets/themes/mast/mast-dark.json @@ -1,78 +1,78 @@ { "$schema": "https://zed.dev/schema/themes/v0.2.0.json", - "name": "JetBrains Dark", - "author": "Artem Evsevev ", + "name": "Mast Dark", + "author": "Standard Applied Intelligence Labs, inspired by IntelliJ IDEA New UI", "themes": [ { - "name": "JetBrains Dark", + "name": "Mast Dark", "appearance": "dark", "style": { - "border": "#393b41ff", - "border.variant": "#393b41ff", - "border.focused": "#467ff2", - "border.selected": "#3474f0", + "border": "#2d3035", + "border.variant": "#343840", + "border.focused": "#3574f0", + "border.selected": "#3574f0", "border.transparent": "#00000000", "border.disabled": null, - "elevated_surface.background": "#26282b", - "surface.background": "#26282b", - "background": "#26282b", - "element.background": "#393b41", - "element.hover": "#3c3e41ff", - "element.active": "#494a4dff", - "element.selected": "#43454a", + "elevated_surface.background": "#1c1d21", + "surface.background": "#17181b", + "background": "#242629", + "element.background": "#24262b", + "element.hover": "#2b2e35", + "element.active": "#333741", + "element.selected": "#2f5fae", "element.disabled": "#2b2d30", - "drop_target.background": "#ffffff25", + "drop_target.background": "#3574f033", "ghost_element.background": "#00000000", - "ghost_element.hover": "#3c3e41ff", - "ghost_element.active": "#494a4dff", - "ghost_element.selected": "#43454a", + "ghost_element.hover": "#2b2e35", + "ghost_element.active": "#333741", + "ghost_element.selected": "#2f5fae", "ghost_element.disabled": null, - "text": "#dfe1e5ff", - "text.muted": "#b0b1b3", - "text.placeholder": "#6f737aff", - "text.disabled": "#b0b1b3", - "text.accent": "#3474f0ff", - "icon": "#ffffffff", - "icon.muted": "#b0b1b3", + "text": "#d1d5db", + "text.muted": "#9ca3ad", + "text.placeholder": "#6f7681", + "text.disabled": "#6f7681", + "text.accent": "#6aa1ff", + "icon": "#c9cdd4", + "icon.muted": "#9ca3ad", "icon.disabled": null, "icon.placeholder": null, "icon.accent": null, - "status_bar.background": "#26282b", - "title_bar.background": "#26282b", - "title_bar.inactive_background": "#3c3f41", - "toolbar.background": "#191A1CFF", - "tab_bar.background": "#26282b", - "tab.inactive_background": "#26282b", - "tab.active_background": "#191A1CFF", - "search.match_background": "#114957", - "search.active_match_background": "#2D543F", - "panel.background": "#26282b", - "panel.focused_border": "#3474f0", - "pane.focused_border": "#3474f0", - "scrollbar.thumb.background": "#ffffff26", - "scrollbar.thumb.hover_background": "#ffffff40", - "scrollbar.thumb.active_background": "#ffffff60", + "status_bar.background": "#242629", + "title_bar.background": "#2b2d30", + "title_bar.inactive_background": "#25272a", + "toolbar.background": "#2b2d30", + "tab_bar.background": "#242629", + "tab.inactive_background": "#242629", + "tab.active_background": "#17181b", + "search.match_background": "#214b5f", + "search.active_match_background": "#315f43", + "panel.background": "#17181b", + "panel.focused_border": "#3574f0", + "pane.focused_border": "#3574f0", + "scrollbar.thumb.background": "#ffffff24", + "scrollbar.thumb.hover_background": "#ffffff38", + "scrollbar.thumb.active_background": "#ffffff50", "scrollbar.thumb.border": "#00000000", "scrollbar.track.background": "#00000000", "scrollbar.track.border": "#00000000", - "editor.foreground": "#bcbec4ff", - "editor.background": "#191A1CFF", - "editor.gutter.background": "#191A1CFF", - "editor.subheader.background": "#26282b", - "editor.active_line.background": "#1F2024", - "editor.highlighted_line.background": "#2d543f", - "editor.line_number": "#4b5059", - "editor.active_line_number": "#a1a3ab", + "editor.foreground": "#c9ccd3", + "editor.background": "#17181b", + "editor.gutter.background": "#17181b", + "editor.subheader.background": "#1c1d21", + "editor.active_line.background": "#1d2026", + "editor.highlighted_line.background": "#25324a", + "editor.line_number": "#5e646f", + "editor.active_line_number": "#a9afb9", "editor.hover_line_number": null, "editor.invisible": "#6f737a", - "editor.wrap_guide": "#393b40", + "editor.wrap_guide": "#30343b", "editor.active_wrap_guide": null, "editor.document_highlight.read_background": "#373b39", "editor.document_highlight.write_background": "#402f33", - "terminal.background": "#191A1CFF", - "terminal.foreground": "#ced0d6", + "terminal.background": "#17181b", + "terminal.foreground": "#c9ccd3", "terminal.bright_foreground": "#ffffff", - "terminal.dim_foreground": "#76777c", + "terminal.dim_foreground": "#737984", "terminal.ansi.black": "#000000", "terminal.ansi.bright_black": "#4e5157", "terminal.ansi.dim_black": "#0f0f11", @@ -97,8 +97,7 @@ "terminal.ansi.white": "#ced0d6", "terminal.ansi.bright_white": "#ffffff", "terminal.ansi.dim_white": "#76777c", - "link_text.hover": "#548AF7", - + "link_text.hover": "#6aa1ff", "version_control.added": "#549159", "version_control.modified": "#375fad", "version_control.deleted": "#a75749", @@ -106,7 +105,6 @@ "version_control.word_deleted": "#45302Bff", "version_control.conflict_marker.ours": null, "version_control.conflict_marker.theirs": null, - "conflict": "#e0bb65", "conflict.background": null, "conflict.border": null, @@ -149,7 +147,6 @@ "warning": "#f2c55cff", "warning.background": "#665014ff", "warning.border": "#f2c55c", - "vim.normal.foreground": "#000000", "vim.insert.foreground": "#000000", "vim.visual.foreground": "#000000", @@ -158,7 +155,6 @@ "vim.visual_block.foreground": "#000000", "vim.helix_select.foreground": "#000000", "vim.helix_normal.foreground": "#000000", - "vim.normal.background": "#90a959", "vim.insert.background": "#f4bf75", "vim.visual.background": "#6a9fb5", @@ -167,7 +163,6 @@ "vim.visual_block.background": "#6a9fb5", "vim.helix_select.background": "#6a9fb5", "vim.helix_normal.background": "#90a959", - "players": [ { "cursor": "#ced0d6ff", diff --git a/assets/themes/jetbrains/jetbrains-light.json b/assets/themes/mast/mast-light.json similarity index 84% rename from assets/themes/jetbrains/jetbrains-light.json rename to assets/themes/mast/mast-light.json index 591b4acd83..d88ed4cd86 100644 --- a/assets/themes/jetbrains/jetbrains-light.json +++ b/assets/themes/mast/mast-light.json @@ -1,78 +1,78 @@ { "$schema": "https://zed.dev/schema/themes/v0.2.0.json", - "name": "JetBrains Light", - "author": "Artem Evsevev ", + "name": "Mast Light", + "author": "Standard Applied Intelligence Labs, inspired by IntelliJ IDEA New UI", "themes": [ { - "name": "JetBrains Light", + "name": "Mast Light", "appearance": "light", "style": { - "border": "#ebecf0ff", - "border.variant": "#ebecf0ff", - "border.focused": "#0055ff", - "border.selected": "#3474f0", + "border": "#d8dce3", + "border.variant": "#cfd5de", + "border.focused": "#3574f0", + "border.selected": "#3574f0", "border.transparent": "#00000000", "border.disabled": null, - "elevated_surface.background": "#f7f8faff", - "surface.background": "#f5f7f9ff", - "background": "#f7f8faff", - "element.background": "#e3e3e5ff", - "element.hover": "#edededff", - "element.active": "#dbdcdeff", - "element.selected": "#dfe1e5", + "elevated_surface.background": "#ffffff", + "surface.background": "#ffffff", + "background": "#eef0f3", + "element.background": "#eef1f5", + "element.hover": "#e2e6ee", + "element.active": "#d8deea", + "element.selected": "#d8e6ff", "element.disabled": "#f7f8faff", - "drop_target.background": "#00000025", + "drop_target.background": "#3574f029", "ghost_element.background": "#00000000", - "ghost_element.hover": "#e6e6e8ff", - "ghost_element.active": "#dbdcdeff", - "ghost_element.selected": "#dfe1e5", + "ghost_element.hover": "#e2e6ee", + "ghost_element.active": "#d8deea", + "ghost_element.selected": "#d8e6ff", "ghost_element.disabled": null, - "text": "#000000ff", - "text.muted": "#404040", - "text.placeholder": "#818594ff", - "text.disabled": "#404040", - "text.accent": "#3573f0ff", - "icon": "#161617", - "icon.muted": "#404040", + "text": "#23272f", + "text.muted": "#606976", + "text.placeholder": "#8a92a0", + "text.disabled": "#9aa2ad", + "text.accent": "#235dca", + "icon": "#4c5563", + "icon.muted": "#6f7784", "icon.disabled": "#808080ff", "icon.placeholder": null, "icon.accent": null, - "status_bar.background": "#f7f8faff", - "title_bar.background": "#f7f8faff", - "title_bar.inactive_background": "#ebecf0", - "toolbar.background": "#ffffffff", - "tab_bar.background": "#f7f8faff", - "tab.inactive_background": "#f7f8faff", - "tab.active_background": "#ffffffff", - "search.match_background": "#fcd47eff", - "search.active_match_background": "#CCCCFF", - "panel.background": "#f7f8faff", - "panel.focused_border": "#0055ff", - "pane.focused_border": "#3474f0", - "scrollbar.thumb.background": "#383a414c", - "scrollbar.thumb.hover_background": "#383a4180", - "scrollbar.thumb.active_background": "#383a41ac", + "status_bar.background": "#eef0f3", + "title_bar.background": "#f2f3f5", + "title_bar.inactive_background": "#e8eaee", + "toolbar.background": "#f2f3f5", + "tab_bar.background": "#eef0f3", + "tab.inactive_background": "#eef0f3", + "tab.active_background": "#ffffff", + "search.match_background": "#d9ecff", + "search.active_match_background": "#cfe8d4", + "panel.background": "#ffffff", + "panel.focused_border": "#3574f0", + "pane.focused_border": "#3574f0", + "scrollbar.thumb.background": "#00000024", + "scrollbar.thumb.hover_background": "#00000038", + "scrollbar.thumb.active_background": "#00000050", "scrollbar.thumb.border": "#dfdfe000", "scrollbar.track.background": "#00000000", "scrollbar.track.border": "#eeeeee00", - "editor.foreground": "#080808ff", - "editor.background": "#ffffffff", - "editor.gutter.background": "#ffffffff", - "editor.subheader.background": "#f7f8faff", - "editor.active_line.background": "#f5f8feff", - "editor.highlighted_line.background": "#ccccff", - "editor.line_number": "#aeb3c2ff", - "editor.active_line_number": "#767a8aff", + "editor.foreground": "#2b2f38", + "editor.background": "#ffffff", + "editor.gutter.background": "#ffffff", + "editor.subheader.background": "#f7f8fa", + "editor.active_line.background": "#f3f7ff", + "editor.highlighted_line.background": "#eaf2ff", + "editor.line_number": "#9ca3af", + "editor.active_line_number": "#4b5563", "editor.hover_line_number": null, "editor.invisible": "#adadadff", - "editor.wrap_guide": "#ebecf0", + "editor.wrap_guide": "#d8dce3", "editor.active_wrap_guide": null, "editor.document_highlight.read_background": "#edebfc", "editor.document_highlight.write_background": "#fce8f4", "terminal.background": "#ffffff", - "terminal.foreground": "#000000", - "terminal.bright_foreground": "#656565", - "terminal.dim_foreground": "#7f7f7f", + "terminal.foreground": "#2b2f38", + "terminal.bright_foreground": "#111827", + "terminal.dim_foreground": "#7a828f", "terminal.ansi.black": "#000000", "terminal.ansi.bright_black": "#656565", "terminal.ansi.dim_black": "#7f7f7f", @@ -97,8 +97,7 @@ "terminal.ansi.white": "#929292", "terminal.ansi.bright_white": "#c9c9c9", "terminal.ansi.dim_white": "#c8c8c8", - "link_text.hover": "#006DCC", - + "link_text.hover": "#235dca", "version_control.added": "#7fc784", "version_control.modified": "#88ADF7", "version_control.deleted": "#ff8266", @@ -106,7 +105,6 @@ "version_control.word_deleted": "#FFD5CCff", "version_control.conflict_marker.ours": null, "version_control.conflict_marker.theirs": null, - "conflict": "#f49810", "conflict.background": null, "conflict.border": null, @@ -149,7 +147,6 @@ "warning": "#f49810", "warning.background": "#fff8dc", "warning.border": "#f49810", - "vim.normal.foreground": "#ffffff", "vim.insert.foreground": "#ffffff", "vim.visual.foreground": "#ffffff", @@ -158,7 +155,6 @@ "vim.visual_block.foreground": "#ffffff", "vim.helix_select.foreground": "#ffffff", "vim.helix_normal.foreground": "#ffffff", - "vim.normal.background": "#90a959", "vim.insert.background": "#f4bf75", "vim.visual.background": "#6a9fb5", @@ -167,7 +163,6 @@ "vim.visual_block.background": "#6a9fb5", "vim.helix_select.background": "#6a9fb5", "vim.helix_normal.background": "#90a959", - "players": [ { "cursor": "#000000ff", diff --git a/crates/agent_ui/src/agent_panel.rs b/crates/agent_ui/src/agent_panel.rs index a9ca25c88a..3ee7ef8551 100644 --- a/crates/agent_ui/src/agent_panel.rs +++ b/crates/agent_ui/src/agent_panel.rs @@ -2994,7 +2994,7 @@ impl AgentPanel { }), ) .item( - ContextMenuEntry::new("Chorus Agent") + ContextMenuEntry::new("Mast Agent") .when(is_agent_selected(Agent::SingOrchestrator), |this| { this.action(Box::new(NewExternalAgentThread { agent: None })) }) diff --git a/crates/agent_ui/src/agent_ui.rs b/crates/agent_ui/src/agent_ui.rs index c8886afa90..78e1d0c52e 100644 --- a/crates/agent_ui/src/agent_ui.rs +++ b/crates/agent_ui/src/agent_ui.rs @@ -306,7 +306,7 @@ impl Agent { pub fn label(&self) -> SharedString { match self { Self::NativeAgent => "Zed Agent".into(), - Self::SingOrchestrator => "Chorus Agent".into(), + Self::SingOrchestrator => "Mast Agent".into(), Self::Custom { id, .. } => id.0.clone(), #[cfg(any(test, feature = "test-support"))] Self::Stub => "Stub Agent".into(), diff --git a/crates/auto_update/src/auto_update.rs b/crates/auto_update/src/auto_update.rs index f2d1b39398..cce1f89d89 100644 --- a/crates/auto_update/src/auto_update.rs +++ b/crates/auto_update/src/auto_update.rs @@ -521,7 +521,7 @@ impl AutoUpdater { &this, release_channel, version, - "chorus-remote-server", + "mast-remote-server", os, arch, cx, @@ -538,7 +538,7 @@ impl AutoUpdater { if smol::fs::metadata(&version_path).await.is_err() { log::info!( - "downloading chorus-remote-server {os} {arch} version {}", + "downloading mast-remote-server {os} {arch} version {}", release.version ); set_status("Downloading remote server", cx); @@ -572,16 +572,9 @@ impl AutoUpdater { .context("auto-update not initialized") })?; - let release = Self::get_release_asset( - &this, - channel, - version, - "chorus-remote-server", - os, - arch, - cx, - ) - .await?; + let release = + Self::get_release_asset(&this, channel, version, "mast-remote-server", os, arch, cx) + .await?; Ok(Some(release.url)) } diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index 89d850cbae..e95cc64e77 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -28,12 +28,7 @@ use walkdir::WalkDir; use std::io::IsTerminal; const URL_PREFIX: [&'static str; 6] = [ - "chorus://", - "zed://", - "http://", - "https://", - "file://", - "ssh://", + "mast://", "zed://", "http://", "https://", "file://", "ssh://", ]; struct Detect; @@ -51,21 +46,21 @@ trait InstalledApp { #[derive(Parser, Debug)] #[command( - name = "chorus", + name = "mast", disable_version_flag = true, - before_help = "The Chorus CLI binary. -This CLI is a separate binary that invokes Chorus. + before_help = "The Mast CLI binary. +This CLI is a separate binary that invokes Mast. Examples: - `chorus` - Simply opens Chorus - `chorus --foreground` + `mast` + Simply opens Mast + `mast --foreground` Runs in foreground (shows all logs) - `chorus path-to-your-project` - Open your project in Chorus - `chorus -n path-to-file ` + `mast path-to-your-project` + Open your project in Mast + `mast -n path-to-file ` Open file/folder in a new window", - after_help = "To read from stdin, append '-', e.g. 'ps axf | chorus -'" + after_help = "To read from stdin, append '-', e.g. 'ps axf | mast -'" )] struct Args { /// Wait for all of the given paths to be opened/closed before exiting. @@ -82,7 +77,7 @@ struct Args { /// Reuse an existing window, replacing its workspace #[arg(short, long, overrides_with_all = ["add", "new", "existing", "classic"], hide = true)] reuse: bool, - /// Open in existing Chorus window + /// Open in existing Mast window #[arg(short = 'e', long = "existing", overrides_with_all = ["add", "new", "reuse", "classic"])] existing: bool, /// Use the classic open behavior: new window for directories, reuse for files @@ -90,32 +85,32 @@ struct Args { classic: bool, /// Sets a custom directory for all user data (e.g., database, extensions, logs). /// This overrides the default platform-specific data directory location: - #[cfg_attr(target_os = "macos", doc = "`~/Library/Application Support/Chorus`.")] - #[cfg_attr(target_os = "windows", doc = "`%LOCALAPPDATA%\\Chorus`.")] + #[cfg_attr(target_os = "macos", doc = "`~/Library/Application Support/Mast`.")] + #[cfg_attr(target_os = "windows", doc = "`%LOCALAPPDATA%\\Mast`.")] #[cfg_attr( not(any(target_os = "windows", target_os = "macos")), - doc = "`$XDG_DATA_HOME/chorus`." + doc = "`$XDG_DATA_HOME/mast`." )] #[arg(long, value_name = "DIR")] user_data_dir: Option, - /// The paths to open in Chorus (space-separated). + /// The paths to open in Mast (space-separated). /// /// Use `path:line:column` syntax to open a file at the given line and column. paths_with_position: Vec, - /// Print Chorus's version and the app path. + /// Print Mast's version and the app path. #[arg(short, long)] version: bool, - /// Run Chorus in the foreground (useful for debugging) + /// Run Mast in the foreground (useful for debugging) #[arg(long)] foreground: bool, - /// Custom path to Chorus.app or the chorus binary - #[arg(long = "chorus", alias = "zed")] + /// Custom path to Mast.app or the mast binary + #[arg(long = "mast", alias = "zed")] zed: Option, - /// Run Chorus in dev-server mode + /// Run Mast in dev-server mode #[arg(long)] dev_server_token: Option, /// The username and WSL distribution to use when opening paths. If not specified, - /// Chorus will attempt to open the paths directly. + /// Mast will attempt to open the paths directly. /// /// The username is optional, and if not specified, the default user for the distribution /// will be used. @@ -126,7 +121,7 @@ struct Args { #[cfg(target_os = "windows")] #[arg(long, value_name = "USER@DISTRO")] wsl: Option, - /// Not supported in Chorus CLI, only supported on the Chorus app binary + /// Not supported in Mast CLI, only supported on the Mast app binary /// Will attempt to give the correct command to run #[arg(long)] system_specs: bool, @@ -140,7 +135,7 @@ struct Args { /// When directories are provided, recurses into them and shows all changed files in a single multi-diff view. #[arg(long, action = clap::ArgAction::Append, num_args = 2, value_names = ["OLD_PATH", "NEW_PATH"])] diff: Vec, - /// Uninstall Chorus from the user system + /// Uninstall Mast from the user system #[cfg(all( any(target_os = "linux", target_os = "macos"), not(feature = "no-bundled-uninstall") @@ -149,7 +144,7 @@ struct Args { uninstall: bool, /// Used for SSH/Git password authentication, to remove the need for netcat as a dependency, - /// by having Chorus act like netcat communicating over a Unix socket. + /// by having Mast act like netcat communicating over a Unix socket. #[arg(long, hide = true)] askpass: Option, } @@ -489,7 +484,7 @@ fn main() -> Result<()> { } let args = Args::parse(); - // `chorus --askpass` makes Chorus operate in nc/netcat mode for use with askpass. + // `mast --askpass` makes Mast operate in nc/netcat mode for use with askpass. if let Some(socket) = &args.askpass { askpass::main(socket); return Ok(()); @@ -514,7 +509,7 @@ fn main() -> Result<()> { if args.system_specs { let path = app.path(); let msg = [ - "The `--system-specs` argument is not supported in the Chorus CLI, only on the Chorus app binary.", + "The `--system-specs` argument is not supported in the Mast CLI, only on the Mast app binary.", "To retrieve the system specs on the command line, run the following command:", &format!("{} --system-specs", path.display()), ]; @@ -545,8 +540,8 @@ fn main() -> Result<()> { } let (server, server_name) = - IpcOneShotServer::::new().context("Handshake before Chorus spawn")?; - let url = format!("chorus-cli://{server_name}"); + IpcOneShotServer::::new().context("Handshake before Mast spawn")?; + let url = format!("mast-cli://{server_name}"); let open_behavior = if args.new { cli::OpenBehavior::AlwaysNew @@ -567,7 +562,7 @@ fn main() -> Result<()> { { use collections::HashMap; - // On Linux, the desktop entry uses `cli` to spawn `chorus`. + // On Linux, the desktop entry uses `cli` to spawn `mast`. // We need to handle env vars correctly since std::env::vars() may not contain // project-specific vars (e.g. those set by direnv). // By setting env to None here, the LSP will use worktree env vars instead, @@ -617,7 +612,7 @@ fn main() -> Result<()> { let (expanded_diff_paths, temp_dirs) = expand_directory_diff_pairs(diff_paths)?; diff_paths = expanded_diff_paths; // Prevent automatic cleanup of temp directories containing empty stub files - // for directory diffs. The CLI process may exit before Chorus has read these + // for directory diffs. The CLI process may exit before Mast has read these // files (e.g., when RPC-ing into an already-running instance). The files // live in the OS temp directory and will be cleaned up on reboot. for temp_dir in temp_dirs { @@ -667,7 +662,7 @@ fn main() -> Result<()> { let exit_status = exit_status.clone(); let user_data_dir_for_thread = user_data_dir.clone(); move || { - let (_, handshake) = server.accept().context("Handshake after Chorus spawn")?; + let (_, handshake) = server.accept().context("Handshake after Mast spawn")?; let (tx, rx) = (handshake.requests, handshake.responses); #[cfg(target_os = "windows")] @@ -798,7 +793,7 @@ fn anonymous_fd(path: &str) -> Option { } /// Shows an interactive prompt asking the user to choose the default open -/// behavior for `chorus `. Returns `None` if the prompt cannot be shown +/// behavior for `mast `. Returns `None` if the prompt cannot be shown /// (e.g. stdin is not a terminal) or the user cancels. fn prompt_open_behavior() -> Option { if !std::io::stdin().is_terminal() { @@ -808,16 +803,16 @@ fn prompt_open_behavior() -> Option { let blue = console::Style::new().blue(); let items = [ format!( - "Add to existing Chorus window ({})", - blue.apply_to("chorus --existing") + "Add to existing Mast window ({})", + blue.apply_to("mast --existing") ), - format!("Open a new window ({})", blue.apply_to("chorus --classic")), + format!("Open a new window ({})", blue.apply_to("mast --classic")), ]; let prompt = format!( "Configure default behavior for {}\n{}", - blue.apply_to("chorus "), - console::style("You can change this later in Chorus settings"), + blue.apply_to("mast "), + console::style("You can change this later in Mast settings"), ); let selection = dialoguer::Select::new() @@ -864,9 +859,9 @@ mod linux { let dir = cli.parent().context("no parent path for cli")?; let possible_locations = [ - "../libexec/chorus-editor", - "../lib/chorus/chorus-editor", - "./chorus", + "../libexec/mast-editor", + "../lib/mast/mast-editor", + "./mast", "../libexec/zed-editor", "../lib/zed/zed-editor", "./zed", @@ -886,7 +881,7 @@ mod linux { impl InstalledApp for App { fn zed_version_string(&self) -> String { format!( - "Chorus {}{}{} – {}", + "Mast {}{}{} – {}", if *release_channel::RELEASE_CHANNEL_NAME == "stable" { "".to_string() } else { @@ -1016,7 +1011,7 @@ mod flatpak { if let Some(flatpak_dir) = get_flatpak_dir() { let mut args = vec!["/usr/bin/flatpak-spawn".into(), "--host".into()]; args.append(&mut get_xdg_env_args()); - args.push("--env=ZED_UPDATE_EXPLANATION=Please use flatpak to update Chorus".into()); + args.push("--env=ZED_UPDATE_EXPLANATION=Please use flatpak to update Mast".into()); args.push( format!( "--env={EXTRA_LIB_ENV_NAME}={}", @@ -1024,17 +1019,17 @@ mod flatpak { ) .into(), ); - args.push(flatpak_dir.join("bin").join("chorus").into()); + args.push(flatpak_dir.join("bin").join("mast").into()); let mut is_app_location_set = false; for arg in &env::args_os().collect::>()[1..] { args.push(arg.clone()); - is_app_location_set |= arg == "--chorus" || arg == "--zed"; + is_app_location_set |= arg == "--mast" || arg == "--zed"; } if !is_app_location_set { - args.push("--chorus".into()); - args.push(flatpak_dir.join("libexec").join("chorus-editor").into()); + args.push("--mast".into()); + args.push(flatpak_dir.join("libexec").join("mast-editor").into()); } let error = exec::execvp("/usr/bin/flatpak-spawn", args); @@ -1045,14 +1040,14 @@ mod flatpak { pub fn set_bin_if_no_escape(mut args: super::Args) -> super::Args { if env::var(NO_ESCAPE_ENV_NAME).is_ok() - && env::var("FLATPAK_ID").is_ok_and(|id| id.starts_with("ai.singlr.Chorus")) + && env::var("FLATPAK_ID").is_ok_and(|id| id.starts_with("ai.singlr.Mast")) && args.zed.is_none() { - args.zed = Some("/app/libexec/chorus-editor".into()); + args.zed = Some("/app/libexec/mast-editor".into()); unsafe { env::set_var( "ZED_UPDATE_EXPLANATION", - "Please use flatpak to update Chorus", + "Please use flatpak to update Mast", ) }; } @@ -1065,7 +1060,7 @@ mod flatpak { } if let Ok(flatpak_id) = env::var("FLATPAK_ID") { - if !flatpak_id.starts_with("ai.singlr.Chorus") { + if !flatpak_id.starts_with("ai.singlr.Mast") { return None; } @@ -1137,7 +1132,7 @@ mod windows { impl InstalledApp for App { fn zed_version_string(&self) -> String { format!( - "Chorus {}{}{} – {}", + "Mast {}{}{} – {}", if *release_channel::RELEASE_CHANNEL_NAME == "stable" { "".to_string() } else { @@ -1210,9 +1205,9 @@ mod windows { let dir = cli.parent().context("no parent path for cli")?; let possible_locations = [ - "../Chorus.exe", - "../lib/chorus/chorus-editor.exe", - "./chorus.exe", + "../Mast.exe", + "../lib/mast/mast-editor.exe", + "./mast.exe", "../Zed.exe", "../lib/zed/zed-editor.exe", "./zed.exe", @@ -1315,7 +1310,7 @@ mod mac_os { impl InstalledApp for Bundle { fn zed_version_string(&self) -> String { - format!("Chorus {} – {}", self.version(), self.path().display(),) + format!("Mast {} – {}", self.version(), self.path().display(),) } fn launch(&self, url: String, user_data_dir: Option<&str>) -> anyhow::Result<()> { @@ -1333,7 +1328,7 @@ mod mac_os { kCFStringEncodingUTF8, ptr::null(), )); - // equivalent to: open chorus-cli:... -a /Applications/Chorus\ Preview.app + // equivalent to: open mast-cli:... -a /Applications/Mast\ Preview.app let urls_to_open = CFArray::from_copyable(&[url_to_open.as_concrete_TypeRef()]); LSOpenFromURLSpec( @@ -1360,7 +1355,7 @@ mod mac_os { .parent() .with_context(|| format!("Executable {executable:?} path has no parent"))?; let subprocess_stdout_file = fs::File::create( - executable_parent.join("chorus_dev.log"), + executable_parent.join("mast_dev.log"), ) .with_context(|| format!("Log file creation in {executable_parent:?}"))?; let subprocess_stdin_file = @@ -1392,7 +1387,7 @@ mod mac_os { user_data_dir: Option<&str>, ) -> io::Result { let path = match self { - Bundle::App { app_bundle, .. } => app_bundle.join("Contents/MacOS/chorus"), + Bundle::App { app_bundle, .. } => app_bundle.join("Contents/MacOS/mast"), Bundle::LocalPath { executable, .. } => executable.clone(), }; @@ -1406,7 +1401,7 @@ mod mac_os { fn path(&self) -> PathBuf { match self { - Bundle::App { app_bundle, .. } => app_bundle.join("Contents/MacOS/chorus"), + Bundle::App { app_bundle, .. } => app_bundle.join("Contents/MacOS/mast"), Bundle::LocalPath { executable, .. } => executable.clone(), } } diff --git a/crates/client/src/client.rs b/crates/client/src/client.rs index 677a29e94c..d82871dcc0 100644 --- a/crates/client/src/client.rs +++ b/crates/client/src/client.rs @@ -1848,7 +1848,6 @@ impl ProtoClient for Client { } pub const ZED_URL_SCHEME: &str = release_channel::APP_URL_SCHEME; -pub const LEGACY_ZED_URL_SCHEME: &str = release_channel::LEGACY_APP_URL_SCHEME; /// A parsed Zed link that can be handled internally by the application. #[derive(Debug, Clone, PartialEq, Eq)] @@ -1877,7 +1876,7 @@ pub fn parse_zed_link(link: &str, cx: &App) -> Option { .and_then(|result| result.strip_prefix("://")) }) .or_else(|| { - link.strip_prefix(LEGACY_ZED_URL_SCHEME) + link.strip_prefix("zed") .and_then(|result| result.strip_prefix("://")) })?; @@ -2342,7 +2341,7 @@ mod tests { fn test_parse_zed_link_accepts_primary_scheme(cx: &mut TestAppContext) { init_test(cx); - let link = cx.update(|cx| parse_zed_link("chorus://channel/team-42", cx)); + let link = cx.update(|cx| parse_zed_link("mast://channel/team-42", cx)); assert_eq!(link, Some(ZedLink::Channel { channel_id: 42 })); } diff --git a/crates/etw_tracing/etw_tracing.rs b/crates/etw_tracing/etw_tracing.rs index 47dea52157..0002fe5e93 100644 --- a/crates/etw_tracing/etw_tracing.rs +++ b/crates/etw_tracing/etw_tracing.rs @@ -572,7 +572,7 @@ pub struct EtwSession { } pub fn launch_etw_recording(heap_pid: Option, output_path: &Path) -> Result { - let sock_path = std::env::temp_dir().join(format!("chorus-etw-{}.sock", std::process::id())); + let sock_path = std::env::temp_dir().join(format!("mast-etw-{}.sock", std::process::id())); _ = std::fs::remove_file(&sock_path); let listener = net::UnixListener::bind(&sock_path).context("Bind Unix socket for ETW IPC")?; diff --git a/crates/install_cli/src/install_cli_binary.rs b/crates/install_cli/src/install_cli_binary.rs index eacf09cd7c..44d1a6f2e7 100644 --- a/crates/install_cli/src/install_cli_binary.rs +++ b/crates/install_cli/src/install_cli_binary.rs @@ -18,7 +18,7 @@ actions!( async fn install_script(cx: &AsyncApp) -> Result { let cli_path = cx.update(|cx| cx.path_for_auxiliary_executable("cli"))?; - let link_path = Path::new("/usr/local/bin/chorus"); + let link_path = Path::new("/usr/local/bin/mast"); let bin_dir_path = link_path.parent().unwrap(); // Don't re-create symlink if it points to the same CLI binary. @@ -62,7 +62,7 @@ async fn install_script(cx: &AsyncApp) -> Result { } pub fn install_cli_binary(window: &mut Window, cx: &mut Context) { - const LINUX_PROMPT_DETAIL: &str = "If you installed Chorus from an official release, add ~/.local/bin to your PATH.\n\nIf you installed Chorus from a different source like your package manager, then you may need to create an alias or symlink manually."; + const LINUX_PROMPT_DETAIL: &str = "If you installed Mast from an official release, add ~/.local/bin to your PATH.\n\nIf you installed Mast from a different source like your package manager, then you may need to create an alias or symlink manually."; cx.spawn_in(window, async move |workspace, cx| { if cfg!(any(target_os = "linux", target_os = "freebsd")) { @@ -80,13 +80,13 @@ pub fn install_cli_binary(window: &mut Window, cx: &mut Context) { .context("error creating CLI symlink")?; workspace.update_in(cx, |workspace, _, cx| { - struct InstalledZedCli; - - workspace.show_toast( - Toast::new( - NotificationId::unique::(), + struct InstalledMastCli; + + workspace.show_toast( + Toast::new( + NotificationId::unique::(), format!( - "Installed `chorus` to {}. You can launch {} from your terminal.", + "Installed `mast` to {}. You can launch {} from your terminal.", path.to_string_lossy(), ReleaseChannel::global(cx).display_name() ), @@ -97,5 +97,5 @@ pub fn install_cli_binary(window: &mut Window, cx: &mut Context) { register_zed_scheme(cx).await.log_err(); Ok(()) }) - .detach_and_prompt_err("Error installing Chorus CLI", window, cx, |_, _, _| None); + .detach_and_prompt_err("Error installing Mast CLI", window, cx, |_, _, _| None); } diff --git a/crates/paths/src/paths.rs b/crates/paths/src/paths.rs index bd6b829cbf..038cf54160 100644 --- a/crates/paths/src/paths.rs +++ b/crates/paths/src/paths.rs @@ -1,4 +1,4 @@ -//! Paths to locations used by Chorus. +//! Paths to locations used by Mast. use std::env; use std::path::{Path, PathBuf}; @@ -11,10 +11,10 @@ use util::rel_path::RelPath; /// A default editorconfig file name to use when resolving project settings. pub const EDITORCONFIG_NAME: &str = ".editorconfig"; -const APP_DIR_NAME_LOWER: &str = "chorus"; -const APP_DIR_NAME_TITLE: &str = "Chorus"; -const APP_LOG_FILE_NAME: &str = "Chorus.log"; -const APP_OLD_LOG_FILE_NAME: &str = "Chorus.log.old"; +const APP_DIR_NAME_LOWER: &str = "mast"; +const APP_DIR_NAME_TITLE: &str = "Mast"; +const APP_LOG_FILE_NAME: &str = "Mast.log"; +const APP_OLD_LOG_FILE_NAME: &str = "Mast.log.old"; /// A custom data directory override, set only by `set_custom_data_dir`. /// This is used to override the default data directory location. @@ -23,22 +23,22 @@ static CUSTOM_DATA_DIR: OnceLock = OnceLock::new(); /// The resolved data directory, combining custom override or platform defaults. /// This is set once and cached for subsequent calls. -/// On macOS, this is `~/Library/Application Support/Chorus`. -/// On Linux/FreeBSD, this is `$XDG_DATA_HOME/chorus`. -/// On Windows, this is `%LOCALAPPDATA%\Chorus`. +/// On macOS, this is `~/Library/Application Support/Mast`. +/// On Linux/FreeBSD, this is `$XDG_DATA_HOME/mast`. +/// On Windows, this is `%LOCALAPPDATA%\Mast`. static CURRENT_DATA_DIR: OnceLock = OnceLock::new(); /// The resolved config directory, combining custom override or platform defaults. /// This is set once and cached for subsequent calls. -/// On macOS, this is `~/.config/chorus`. -/// On Linux/FreeBSD, this is `$XDG_CONFIG_HOME/chorus`. -/// On Windows, this is `%APPDATA%\Chorus`. +/// On macOS, this is `~/.config/mast`. +/// On Linux/FreeBSD, this is `$XDG_CONFIG_HOME/mast`. +/// On Windows, this is `%APPDATA%\Mast`. static CONFIG_DIR: OnceLock = OnceLock::new(); /// Returns the relative path to the remote server directory on the SSH host. pub fn remote_server_dir_relative() -> &'static RelPath { static CACHED: LazyLock<&'static RelPath> = - LazyLock::new(|| RelPath::unix(".chorus_server").unwrap()); + LazyLock::new(|| RelPath::unix(".mast_server").unwrap()); *CACHED } @@ -46,7 +46,7 @@ pub fn remote_server_dir_relative() -> &'static RelPath { /// Returns the relative path to the remote server directory on the WSL host. pub fn remote_wsl_server_dir_relative() -> &'static RelPath { static CACHED: LazyLock<&'static RelPath> = - LazyLock::new(|| RelPath::unix(".chorus_wsl_server").unwrap()); + LazyLock::new(|| RelPath::unix(".mast_wsl_server").unwrap()); *CACHED } @@ -88,7 +88,7 @@ pub fn set_custom_data_dir(dir: &str) -> &'static PathBuf { }) } -/// Returns the path to the configuration directory used by Chorus. +/// Returns the path to the configuration directory used by Mast. pub fn config_dir() -> &'static PathBuf { CONFIG_DIR.get_or_init(|| { if let Some(custom_dir) = CUSTOM_DATA_DIR.get() { @@ -110,7 +110,7 @@ pub fn config_dir() -> &'static PathBuf { }) } -/// Returns the path to the data directory used by Chorus. +/// Returns the path to the data directory used by Mast. pub fn data_dir() -> &'static PathBuf { CURRENT_DATA_DIR.get_or_init(|| { if let Some(custom_dir) = CUSTOM_DATA_DIR.get() { @@ -162,7 +162,7 @@ pub fn state_dir() -> &'static PathBuf { }) } -/// Returns the path to the temp directory used by Chorus. +/// Returns the path to the temp directory used by Mast. pub fn temp_dir() -> &'static PathBuf { static TEMP_DIR: OnceLock = OnceLock::new(); TEMP_DIR.get_or_init(|| { @@ -215,13 +215,13 @@ pub fn remote_server_state_dir() -> &'static PathBuf { REMOTE_SERVER_STATE.get_or_init(|| data_dir().join("server_state")) } -/// Returns the path to the `Chorus.log` file. +/// Returns the path to the `Mast.log` file. pub fn log_file() -> &'static PathBuf { static LOG_FILE: OnceLock = OnceLock::new(); LOG_FILE.get_or_init(|| logs_dir().join(APP_LOG_FILE_NAME)) } -/// Returns the path to the `Chorus.log.old` file. +/// Returns the path to the `Mast.log.old` file. pub fn old_log_file() -> &'static PathBuf { static OLD_LOG_FILE: OnceLock = OnceLock::new(); OLD_LOG_FILE.get_or_init(|| logs_dir().join(APP_OLD_LOG_FILE_NAME)) @@ -593,7 +593,7 @@ mod tests { use super::cli_socket_file_name; #[test] - fn cli_socket_file_name_uses_chorus_prefix() { - assert_eq!(cli_socket_file_name("stable"), "chorus-stable.sock"); + fn cli_socket_file_name_uses_mast_prefix() { + assert_eq!(cli_socket_file_name("stable"), "mast-stable.sock"); } } diff --git a/crates/release_channel/src/lib.rs b/crates/release_channel/src/lib.rs index ee81eb97a7..354aae51cb 100644 --- a/crates/release_channel/src/lib.rs +++ b/crates/release_channel/src/lib.rs @@ -8,18 +8,16 @@ use gpui::{App, Global}; use semver::Version; /// The product name shared across release channels. -pub const APP_NAME: &str = "Chorus"; +pub const APP_NAME: &str = "Mast"; /// The primary URL scheme handled by the application. -pub const APP_URL_SCHEME: &str = "chorus"; -/// The legacy URL scheme accepted for compatibility with upstream Zed links. -pub const LEGACY_APP_URL_SCHEME: &str = "zed"; -/// The public repository for Chorus. +pub const APP_URL_SCHEME: &str = "mast"; +/// The public repository for Mast. pub const REPOSITORY_URL: &str = "https://github.com/singlr-ai/chorus"; -/// The public issue tracker for Chorus. +/// The public issue tracker for Mast. pub const ISSUE_TRACKER_URL: &str = "https://github.com/singlr-ai/chorus/issues"; -/// The public discussion forum for Chorus. +/// The public discussion forum for Mast. pub const DISCUSSIONS_URL: &str = "https://github.com/singlr-ai/chorus/discussions"; -/// The default documentation landing page for Chorus. +/// The default documentation landing page for Mast. pub const DOCUMENTATION_URL: &str = "https://github.com/singlr-ai/chorus#readme"; /// stable | dev | nightly | preview @@ -43,10 +41,10 @@ pub static RELEASE_CHANNEL: LazyLock = #[cfg(target_os = "windows")] pub fn app_identifier() -> &'static str { match *RELEASE_CHANNEL { - ReleaseChannel::Dev => "Chorus-Editor-Dev", - ReleaseChannel::Nightly => "Chorus-Editor-Nightly", - ReleaseChannel::Preview => "Chorus-Editor-Preview", - ReleaseChannel::Stable => "Chorus-Editor-Stable", + ReleaseChannel::Dev => "Mast-Editor-Dev", + ReleaseChannel::Nightly => "Mast-Editor-Nightly", + ReleaseChannel::Preview => "Mast-Editor-Preview", + ReleaseChannel::Stable => "Mast-Editor-Stable", } } @@ -197,8 +195,8 @@ impl ReleaseChannel { pub fn display_name(&self) -> &'static str { match self { ReleaseChannel::Dev => APP_NAME, - ReleaseChannel::Nightly => "Chorus Nightly", - ReleaseChannel::Preview => "Chorus Preview", + ReleaseChannel::Nightly => "Mast Nightly", + ReleaseChannel::Preview => "Mast Preview", ReleaseChannel::Stable => APP_NAME, } } @@ -218,10 +216,10 @@ impl ReleaseChannel { /// This also has to match the bundle identifier for Zed on macOS. pub fn app_id(&self) -> &'static str { match self { - ReleaseChannel::Dev => "ai.singlr.Chorus-Dev", - ReleaseChannel::Nightly => "ai.singlr.Chorus-Nightly", - ReleaseChannel::Preview => "ai.singlr.Chorus-Preview", - ReleaseChannel::Stable => "ai.singlr.Chorus", + ReleaseChannel::Dev => "ai.singlr.Mast-Dev", + ReleaseChannel::Nightly => "ai.singlr.Mast-Nightly", + ReleaseChannel::Preview => "ai.singlr.Mast-Preview", + ReleaseChannel::Stable => "ai.singlr.Mast", } } diff --git a/crates/remote/src/transport.rs b/crates/remote/src/transport.rs index 70e2299330..efedf00156 100644 --- a/crates/remote/src/transport.rs +++ b/crates/remote/src/transport.rs @@ -195,7 +195,7 @@ pub(crate) fn remote_server_binary_name( _ => version.to_string(), }; format!( - "chorus-remote-server-{}-{version_str}", + "mast-remote-server-{}-{version_str}", release_channel.dev_name() ) } @@ -215,20 +215,20 @@ pub(crate) fn legacy_remote_server_binary_name( } pub(crate) fn copy_remote_server_override() -> Option { - std::env::var("CHORUS_COPY_REMOTE_SERVER") + std::env::var("MAST_COPY_REMOTE_SERVER") .or_else(|_| std::env::var("ZED_COPY_REMOTE_SERVER")) .ok() .map(PathBuf::from) } pub(crate) fn build_remote_server_mode() -> String { - std::env::var("CHORUS_BUILD_REMOTE_SERVER") + std::env::var("MAST_BUILD_REMOTE_SERVER") .or_else(|_| std::env::var("ZED_BUILD_REMOTE_SERVER")) .unwrap_or_else(|_| "nocompress".into()) } fn zstd_musl_lib_dir() -> Option { - std::env::var("CHORUS_ZSTD_MUSL_LIB") + std::env::var("MAST_ZSTD_MUSL_LIB") .or_else(|_| std::env::var("ZED_ZSTD_MUSL_LIB")) .ok() } @@ -249,7 +249,7 @@ fn bundled_remote_server_archive_name(platform: RemotePlatform) -> String { "gz" }; format!( - "chorus-remote-server-{}-{}.{}", + "mast-remote-server-{}-{}.{}", platform.os.as_str(), platform.arch.as_str(), extension @@ -297,7 +297,7 @@ async fn build_remote_server_from_source( return Ok(Some(path)); } else { log::warn!( - "CHORUS_COPY_REMOTE_SERVER path does not exist, falling back to CHORUS_BUILD_REMOTE_SERVER: {}", + "MAST_COPY_REMOTE_SERVER path does not exist, falling back to MAST_BUILD_REMOTE_SERVER: {}", path.display() ); } @@ -314,7 +314,7 @@ async fn build_remote_server_from_source( return Ok(None); } log::warn!( - "CHORUS_BUILD_REMOTE_SERVER is disabled, but no server binary exists on the server" + "MAST_BUILD_REMOTE_SERVER is disabled, but no server binary exists on the server" ) } @@ -571,11 +571,11 @@ mod tests { assert_eq!( remote_server_binary_name(ReleaseChannel::Dev, &version), - "chorus-remote-server-dev-build" + "mast-remote-server-dev-build" ); assert_eq!( remote_server_binary_name(ReleaseChannel::Stable, &version), - "chorus-remote-server-stable-0.233.0" + "mast-remote-server-stable-0.233.0" ); assert_eq!( legacy_remote_server_binary_name(ReleaseChannel::Dev, &version), @@ -590,21 +590,21 @@ mod tests { os: RemoteOs::Linux, arch: RemoteArch::X86_64, }), - "chorus-remote-server-linux-x86_64.gz" + "mast-remote-server-linux-x86_64.gz" ); assert_eq!( bundled_remote_server_archive_name(RemotePlatform { os: RemoteOs::Windows, arch: RemoteArch::Aarch64, }), - "chorus-remote-server-windows-aarch64.zip" + "mast-remote-server-windows-aarch64.zip" ); } #[test] fn test_packaged_remote_server_locations_include_bundle_path() { - let current_dir = Path::new("/tmp/chorus"); - let archive_name = "chorus-remote-server-linux-x86_64.gz"; + let current_dir = Path::new("/tmp/mast"); + let archive_name = "mast-remote-server-linux-x86_64.gz"; let locations = packaged_remote_server_locations(current_dir, archive_name); #[cfg(target_os = "macos")] @@ -612,7 +612,7 @@ mod tests { assert_eq!( locations[0], PathBuf::from( - "/tmp/chorus/../Resources/remote-servers/chorus-remote-server-linux-x86_64.gz" + "/tmp/mast/../Resources/remote-servers/mast-remote-server-linux-x86_64.gz" ) ); } @@ -622,7 +622,7 @@ mod tests { assert_eq!( locations[0], PathBuf::from( - "/tmp/chorus/../libexec/remote-servers/chorus-remote-server-linux-x86_64.gz" + "/tmp/mast/../libexec/remote-servers/mast-remote-server-linux-x86_64.gz" ) ); } @@ -631,13 +631,13 @@ mod tests { { assert_eq!( locations[0], - PathBuf::from("/tmp/chorus/remote-servers/chorus-remote-server-linux-x86_64.gz") + PathBuf::from("/tmp/mast/remote-servers/mast-remote-server-linux-x86_64.gz") ); } assert_eq!( locations.last().unwrap(), - &PathBuf::from(format!("/tmp/chorus/{archive_name}")) + &PathBuf::from(format!("/tmp/mast/{archive_name}")) ); } } diff --git a/crates/remote/src/transport/docker.rs b/crates/remote/src/transport/docker.rs index f83abea612..917a2161c6 100644 --- a/crates/remote/src/transport/docker.rs +++ b/crates/remote/src/transport/docker.rs @@ -193,7 +193,7 @@ impl DockerExecConnection { _ => version.to_string(), }; let binary_name = format!( - "chorus-remote-server-{}-{}", + "mast-remote-server-{}-{}", release_channel.dev_name(), version_str ); @@ -292,7 +292,7 @@ impl DockerExecConnection { ReleaseChannel::Nightly => Ok(None), ReleaseChannel::Dev => { anyhow::bail!( - "CHORUS_BUILD_REMOTE_SERVER is not set and no remote server exists at ({:?})", + "MAST_BUILD_REMOTE_SERVER is not set and no remote server exists at ({:?})", dst_path ) } diff --git a/crates/remote/src/transport/ssh.rs b/crates/remote/src/transport/ssh.rs index 401e17ba79..238efcc1a0 100644 --- a/crates/remote/src/transport/ssh.rs +++ b/crates/remote/src/transport/ssh.rs @@ -890,7 +890,7 @@ impl SshRemoteConnection { ReleaseChannel::Nightly => Ok(None), ReleaseChannel::Dev => { anyhow::bail!( - "CHORUS_BUILD_REMOTE_SERVER is not set and no remote server exists at ({:?})", + "MAST_BUILD_REMOTE_SERVER is not set and no remote server exists at ({:?})", dst_path ) } diff --git a/crates/remote_server/src/server.rs b/crates/remote_server/src/server.rs index e9a110d503..054663dd2e 100644 --- a/crates/remote_server/src/server.rs +++ b/crates/remote_server/src/server.rs @@ -472,7 +472,7 @@ pub fn execute_run( crashes::InitCrashHandler { session_id: id, zed_version: VERSION.to_owned(), - binary: "chorus-remote-server".to_string(), + binary: "mast-remote-server".to_string(), release_channel: release_channel::RELEASE_CHANNEL_NAME.clone(), commit_sha: option_env!("ZED_COMMIT_SHA").unwrap_or("no_sha").to_owned(), }, @@ -482,7 +482,7 @@ pub fn execute_run( background_executor.spawn(task).detach(); } }, - |pid| paths::temp_dir().join(format!("chorus-remote-server-crash-handler-{pid}")), + |pid| paths::temp_dir().join(format!("mast-remote-server-crash-handler-{pid}")), #[allow(clippy::disallowed_methods)] |duration| FutureExt::map(Timer::after(duration), |_| ()), ))) @@ -750,14 +750,14 @@ pub(crate) fn execute_proxy( crashes::InitCrashHandler { session_id: id, zed_version: VERSION.to_owned(), - binary: "chorus-remote-proxy".to_string(), + binary: "mast-remote-proxy".to_string(), release_channel: release_channel::RELEASE_CHANNEL_NAME.clone(), commit_sha: option_env!("ZED_COMMIT_SHA").unwrap_or("no_sha").to_owned(), }, |task| { smol::spawn(task).detach(); }, - |pid| paths::temp_dir().join(format!("chorus-remote-server-proxy-crash-handler-{pid}")), + |pid| paths::temp_dir().join(format!("mast-remote-server-proxy-crash-handler-{pid}")), // we are running outside gpui #[allow(clippy::disallowed_methods)] |duration| FutureExt::map(Timer::after(duration), |_| ()), @@ -1214,7 +1214,7 @@ fn cleanup_old_binaries() -> Result<()> { let server_dir = paths::remote_server_dir_relative(); let release_channel = release_channel::RELEASE_CHANNEL.dev_name(); let prefixes = [ - format!("chorus-remote-server-{}-", release_channel), + format!("mast-remote-server-{}-", release_channel), format!("zed-remote-server-{}-", release_channel), ]; diff --git a/crates/settings_content/src/theme.rs b/crates/settings_content/src/theme.rs index 9ce3a2b641..6c431f5fac 100644 --- a/crates/settings_content/src/theme.rs +++ b/crates/settings_content/src/theme.rs @@ -279,8 +279,8 @@ pub enum ThemeSelection { }, } -pub const DEFAULT_LIGHT_THEME: &'static str = "JetBrains Light"; -pub const DEFAULT_DARK_THEME: &'static str = "JetBrains Dark"; +pub const DEFAULT_LIGHT_THEME: &'static str = "Mast Light"; +pub const DEFAULT_DARK_THEME: &'static str = "Mast Dark"; impl Default for ThemeSelection { fn default() -> Self { diff --git a/crates/sing_bridge/src/api.rs b/crates/sing_bridge/src/api.rs index 3eba7ed1e8..597f8aec44 100644 --- a/crates/sing_bridge/src/api.rs +++ b/crates/sing_bridge/src/api.rs @@ -24,7 +24,7 @@ use crate::{ const HOST_API_PORT: u16 = 7070; const TUNNEL_TIMEOUT: Duration = Duration::from_secs(10); const API_START_TIMEOUT: Duration = Duration::from_secs(10); -const API_TOKEN_PATH: &str = "~/.sing/api-token"; +const API_TOKEN_PATH: &str = "~/.sail/api-token"; #[derive(Clone)] pub(crate) struct SingApiClient { @@ -136,7 +136,7 @@ impl SingApiClient { return Err(api_failure(path, status, &text)); } serde_json::from_str(&text).map_err(|source| SingBridgeError::InvalidResponse { - command: format!("sing api {path}"), + command: format!("sail api {path}"), output: text, source, }) @@ -170,9 +170,9 @@ impl SshApiTunnel { .stderr(Stdio::piped()) .args(args); let child = command.spawn().map_err(|error| SingBridgeError::Command { - command: "ssh sing api tunnel".to_string(), + command: "ssh sail api tunnel".to_string(), source: SingCommandError::SpawnFailed { - command: "ssh sing api tunnel".to_string(), + command: "ssh sail api tunnel".to_string(), message: error.to_string(), }, })?; @@ -190,7 +190,7 @@ impl SshApiTunnel { async_io::Timer::at(Instant::now() + Duration::from_millis(25)).await; } Err(SingBridgeError::ApiUnavailable { - message: "timed out creating SSH tunnel to sing API".to_string(), + message: "timed out creating SSH tunnel to SAIL API".to_string(), }) } } @@ -198,7 +198,7 @@ impl SshApiTunnel { impl Drop for SshApiTunnel { fn drop(&mut self) { if let Err(error) = self.child.kill() { - log::warn!("failed to stop sing API SSH tunnel: {error}"); + log::warn!("failed to stop SAIL API SSH tunnel: {error}"); } } } @@ -227,9 +227,9 @@ impl From for ApiDispatchRequest { async fn ensure_api_server(host: &SshConnectionOptions) -> Result<(), SingBridgeError> { let command = format!( - "mkdir -p ~/.sing && if ! bash -lc 'cat /dev/tcp/127.0.0.1/{HOST_API_PORT}' >/dev/null 2>&1; then nohup sing api --host 127.0.0.1 --port {HOST_API_PORT} > ~/.sing/api.log 2>&1 /dev/tcp/127.0.0.1/{HOST_API_PORT}' >/dev/null 2>&1; then nohup sail api --host 127.0.0.1 --port {HOST_API_PORT} > ~/.sail/api.log 2>&1 Result { let token = output.trim().to_string(); if !token.is_empty() { @@ -256,7 +256,7 @@ async fn read_api_token(host: &SshConnectionOptions) -> Result Result { .and_then(|listener| listener.local_addr()) .map(|address| address.port()) .map_err(|error| SingBridgeError::ApiUnavailable { - message: format!("failed to allocate a local port for sing API tunnel: {error}"), + message: format!("failed to allocate a local port for SAIL API tunnel: {error}"), }) } @@ -364,7 +364,7 @@ mod tests { #[test] fn serializes_background_dispatch_request() -> Result<(), serde_json::Error> { let request = ApiDispatchRequest::from(DispatchRequest { - spec_id: Some("chorus-dispatch-integration".to_string()), + spec_id: Some("mast-dispatch-integration".to_string()), background: true, dry_run: true, }); @@ -374,7 +374,7 @@ mod tests { assert_eq!( value, serde_json::json!({ - "spec_id": "chorus-dispatch-integration", + "spec_id": "mast-dispatch-integration", "mode": "background", "dry_run": true }) diff --git a/crates/sing_bridge/src/client_config.rs b/crates/sing_bridge/src/client_config.rs index 7c285ae5a7..3e259eda24 100644 --- a/crates/sing_bridge/src/client_config.rs +++ b/crates/sing_bridge/src/client_config.rs @@ -19,7 +19,7 @@ struct RawSingClientConfig { impl SingClientConfig { pub fn default_path() -> PathBuf { - home_dir().join(".sing").join("config.yaml") + home_dir().join(".sail").join("config.yaml") } pub fn load() -> Result { diff --git a/crates/sing_bridge/src/command.rs b/crates/sing_bridge/src/command.rs index c5487f877a..730a53fd05 100644 --- a/crates/sing_bridge/src/command.rs +++ b/crates/sing_bridge/src/command.rs @@ -50,7 +50,7 @@ impl SshSingCommandRunner { pub fn new(host: SshConnectionOptions) -> Self { Self { host, - remote_program: "sing".to_string(), + remote_program: "sail".to_string(), subprocess: SubprocessRunner, } } @@ -109,7 +109,7 @@ impl SingCommandRunner for SshSingCommandRunner { async fn run(&self, request: CommandRequest) -> Result { let args = self.build_ssh_args(&request)?; log::debug!( - "running sing command {} via {}", + "running SAIL command {} via {}", request.display_name, self.host.connection_string() ); @@ -182,7 +182,7 @@ impl SubprocessRunner { })? } _ = timer => { - log::warn!("sing command {} timed out after {:?}", display_name, timeout); + log::warn!("SAIL command {} timed out after {:?}", display_name, timeout); return Err(ProcessError::Timeout { timeout }); } }; @@ -260,7 +260,7 @@ fn classify_remote_failure_kind(stdout: &str, stderr: &str) -> RemoteFailureKind return RemoteFailureKind::PermissionDenied; } - if combined.contains("is stopped. start it with: sing up") { + if combined.contains("is stopped. start it with: sail up") { return RemoteFailureKind::ProjectStopped; } @@ -321,11 +321,11 @@ mod tests { "Fix \"quoted\" title".to_string(), ]; - let command = build_remote_command("sing", "spec create", &args).unwrap(); + let command = build_remote_command("sail", "spec create", &args).unwrap(); assert_eq!( command, - "exec sing spec create demo --title 'Fix \"quoted\" title'" + "exec sail spec create demo --title 'Fix \"quoted\" title'" ); } @@ -334,14 +334,14 @@ mod tests { assert_eq!( classify_remote_failure_kind( "", - "Project 'demo' is stopped. Start it with: sing up demo" + "Project 'demo' is stopped. Start it with: sail up demo" ), RemoteFailureKind::ProjectStopped ); assert_eq!( classify_remote_failure_kind( "", - "Root privileges required. Run with: sudo sing host status" + "Root privileges required. Run with: sudo sail host status" ), RemoteFailureKind::PermissionDenied ); diff --git a/crates/sing_bridge/src/error.rs b/crates/sing_bridge/src/error.rs index 547802caa0..a4cb740639 100644 --- a/crates/sing_bridge/src/error.rs +++ b/crates/sing_bridge/src/error.rs @@ -54,11 +54,11 @@ pub enum SingCommandError { SpawnFailed { command: String, message: String }, #[error("invalid command arguments for {command}: {message}")] InvalidCommand { command: String, message: String }, - #[error("sing command timed out after {timeout:?}: {command}")] + #[error("SAIL command timed out after {timeout:?}: {command}")] Timeout { command: String, timeout: Duration }, #[error("ssh authentication failed for {host}")] AuthenticationFailed { host: String, stderr: String }, - #[error("unable to reach sing host {host}")] + #[error("unable to reach SAIL host {host}")] ConnectionFailed { host: String, stderr: String }, #[error(transparent)] RemoteFailure(#[from] RemoteFailure), @@ -66,11 +66,11 @@ pub enum SingCommandError { #[derive(Debug, Error)] pub enum SingBridgeError { - #[error("sing client config not found at {path}")] + #[error("SAIL client config not found at {path}")] ConfigNotFound { path: PathBuf }, - #[error("failed to read sing client config at {path}: {message}")] + #[error("failed to read SAIL client config at {path}: {message}")] ConfigRead { path: PathBuf, message: String }, - #[error("invalid sing client config at {path}: {message}")] + #[error("invalid SAIL client config at {path}: {message}")] InvalidConfig { path: PathBuf, message: String }, #[error("invalid {field}: {message}")] InvalidInput { @@ -94,11 +94,11 @@ pub enum SingBridgeError { #[source] source: serde_json::Error, }, - #[error("sing API is unavailable: {message}")] + #[error("SAIL API is unavailable: {message}")] ApiUnavailable { message: String }, - #[error("sing API request failed for {path}: {message}")] + #[error("SAIL API request failed for {path}: {message}")] ApiRequest { path: String, message: String }, - #[error("sing API returned {status} for {path}: {code}: {message}")] + #[error("SAIL API returned {status} for {path}: {code}: {message}")] ApiFailure { path: String, status: u16, diff --git a/crates/sing_orchestrator/src/sing_orchestrator.rs b/crates/sing_orchestrator/src/sing_orchestrator.rs index 694abe38e0..c71dc548ce 100644 --- a/crates/sing_orchestrator/src/sing_orchestrator.rs +++ b/crates/sing_orchestrator/src/sing_orchestrator.rs @@ -17,7 +17,7 @@ use serde::{Deserialize, Serialize}; use sing_bridge::{DispatchRequest, SingBridge}; pub static SING_ORCHESTRATOR_AGENT_ID: LazyLock = - LazyLock::new(|| AgentId::new("Sing Orchestrator")); + LazyLock::new(|| AgentId::new("SAIL Orchestrator")); #[derive(Clone)] pub struct SingOrchestratorServer { @@ -31,7 +31,7 @@ impl SingOrchestratorServer { fs, thread_store, SING_ORCHESTRATOR_AGENT_ID.clone(), - "sing-orchestrator".into(), + "sail-orchestrator".into(), ui::IconName::Sparkle, Some(Arc::new(SingToolProvider)), ), @@ -103,7 +103,7 @@ impl SingToolOutput { match serde_json::to_value(value) { Ok(result) => Self::Success { result }, Err(error) => Self::Error { - error: format!("failed to serialize sing tool result: {error}"), + error: format!("failed to serialize SAIL tool result: {error}"), }, } } @@ -119,14 +119,14 @@ impl From for LanguageModelToolResultContent { fn from(value: SingToolOutput) -> Self { match value { SingToolOutput::Success { result } => serde_json::to_string_pretty(&result) - .unwrap_or_else(|error| format!("failed to render sing tool result: {error}")) + .unwrap_or_else(|error| format!("failed to render SAIL tool result: {error}")) .into(), SingToolOutput::Error { error } => error.into(), } } } -/// Lists sing projects configured on the engineer's sing host. +/// Lists SAIL projects configured on the engineer's SAIL host. #[derive(Debug, Serialize, Deserialize, JsonSchema)] struct SingListProjectsInput {} @@ -136,7 +136,7 @@ impl AgentTool for SingListProjectsTool { type Input = SingListProjectsInput; type Output = SingToolOutput; - const NAME: &'static str = "sing_list_projects"; + const NAME: &'static str = "sail_list_projects"; fn kind() -> acp::ToolKind { acp::ToolKind::Read @@ -147,7 +147,7 @@ impl AgentTool for SingListProjectsTool { _input: Result, _cx: &mut App, ) -> SharedString { - "List sing projects".into() + "List SAIL projects".into() } fn run( @@ -171,10 +171,10 @@ impl AgentTool for SingListProjectsTool { } } -/// Lists the spec board for a sing project. +/// Lists the spec board for a SAIL project. #[derive(Debug, Serialize, Deserialize, JsonSchema)] struct SingProjectInput { - /// The sing project name. + /// The SAIL project name. project: String, } @@ -184,7 +184,7 @@ impl AgentTool for SingListSpecsTool { type Input = SingProjectInput; type Output = SingToolOutput; - const NAME: &'static str = "sing_list_specs"; + const NAME: &'static str = "sail_list_specs"; fn kind() -> acp::ToolKind { acp::ToolKind::Read @@ -197,7 +197,7 @@ impl AgentTool for SingListSpecsTool { ) -> SharedString { match input { Ok(input) => format!("List specs for {}", input.project).into(), - Err(_) => "List sing specs".into(), + Err(_) => "List SAIL specs".into(), } } @@ -222,10 +222,10 @@ impl AgentTool for SingListSpecsTool { } } -/// Shows the full markdown content and metadata for one sing spec. +/// Shows the full markdown content and metadata for one SAIL spec. #[derive(Debug, Serialize, Deserialize, JsonSchema)] struct SingShowSpecInput { - /// The sing project name. + /// The SAIL project name. project: String, /// The spec id to read. spec_id: String, @@ -237,7 +237,7 @@ impl AgentTool for SingShowSpecTool { type Input = SingShowSpecInput; type Output = SingToolOutput; - const NAME: &'static str = "sing_show_spec"; + const NAME: &'static str = "sail_show_spec"; fn kind() -> acp::ToolKind { acp::ToolKind::Read @@ -250,7 +250,7 @@ impl AgentTool for SingShowSpecTool { ) -> SharedString { match input { Ok(input) => format!("Show spec {}", input.spec_id).into(), - Err(_) => "Show sing spec".into(), + Err(_) => "Show SAIL spec".into(), } } @@ -275,10 +275,10 @@ impl AgentTool for SingShowSpecTool { } } -/// Reads current agent session status for a sing project. +/// Reads current agent session status for a SAIL project. #[derive(Debug, Serialize, Deserialize, JsonSchema)] struct SingAgentStatusInput { - /// The sing project name. + /// The SAIL project name. project: String, } @@ -288,7 +288,7 @@ impl AgentTool for SingAgentStatusTool { type Input = SingAgentStatusInput; type Output = SingToolOutput; - const NAME: &'static str = "sing_agent_status"; + const NAME: &'static str = "sail_agent_status"; fn kind() -> acp::ToolKind { acp::ToolKind::Read @@ -301,7 +301,7 @@ impl AgentTool for SingAgentStatusTool { ) -> SharedString { match input { Ok(input) => format!("Check agent status for {}", input.project).into(), - Err(_) => "Check sing agent status".into(), + Err(_) => "Check SAIL agent status".into(), } } @@ -326,10 +326,10 @@ impl AgentTool for SingAgentStatusTool { } } -/// Dispatches the next ready spec, or a specific spec, to a sing-managed agent session. +/// Dispatches the next ready spec, or a specific spec, to a SAIL-managed agent session. #[derive(Debug, Serialize, Deserialize, JsonSchema)] struct SingDispatchSpecInput { - /// The sing project name. + /// The SAIL project name. project: String, /// Optional specific spec id. Omit this to dispatch the next ready spec. spec_id: Option, @@ -344,7 +344,7 @@ impl AgentTool for SingDispatchSpecTool { type Input = SingDispatchSpecInput; type Output = SingToolOutput; - const NAME: &'static str = "sing_dispatch_spec"; + const NAME: &'static str = "sail_dispatch_spec"; fn kind() -> acp::ToolKind { acp::ToolKind::Execute @@ -358,7 +358,7 @@ impl AgentTool for SingDispatchSpecTool { match input { Ok(input) if input.dry_run => format!("Preview dispatch for {}", input.project).into(), Ok(input) => format!("Dispatch spec for {}", input.project).into(), - Err(_) => "Dispatch sing spec".into(), + Err(_) => "Dispatch SAIL spec".into(), } } @@ -396,7 +396,7 @@ impl AgentTool for SingDispatchSpecTool { }); futures::select! { result = task.fuse() => result, - _ = event_stream.cancelled_by_user().fuse() => Err(SingToolOutput::error("sing dispatch cancelled by user")), + _ = event_stream.cancelled_by_user().fuse() => Err(SingToolOutput::error("SAIL dispatch cancelled by user")), } }) } @@ -408,7 +408,7 @@ mod tests { #[test] fn exposes_stable_agent_id() { - assert_eq!(SING_ORCHESTRATOR_AGENT_ID.as_ref(), "Sing Orchestrator"); + assert_eq!(SING_ORCHESTRATOR_AGENT_ID.as_ref(), "SAIL Orchestrator"); } #[test] diff --git a/crates/sing_project/src/panel.rs b/crates/sing_project/src/panel.rs index e766fb44bf..4e11287948 100644 --- a/crates/sing_project/src/panel.rs +++ b/crates/sing_project/src/panel.rs @@ -123,7 +123,7 @@ impl SingProjectPanel { let kvp = cx.update(|_, cx| KeyValueStore::global(cx))?; cx.background_spawn(async move { kvp.read_kvp(&serialization_key) }) .await - .context("loading sing project panel") + .context("loading SAIL project panel") .log_err() .flatten() .map(|panel| serde_json::from_str::(&panel)) @@ -944,7 +944,7 @@ impl SingProjectPanel { .label_size(LabelSize::Small) .loading(start_pending) .disabled(open_pending || stop_pending) - .tooltip(Tooltip::text("Run sing up for this project")) + .tooltip(Tooltip::text("Run sail up for this project")) .on_click(cx.listener( move |this, _, window, cx| { this.start_project(project_name.clone(), window, cx); @@ -960,7 +960,7 @@ impl SingProjectPanel { .label_size(LabelSize::Small) .loading(stop_pending) .disabled(open_pending || start_pending) - .tooltip(Tooltip::text("Run sing down for this project")) + .tooltip(Tooltip::text("Run sail down for this project")) .on_click(cx.listener(move |this, _, window, cx| { this.stop_project(project_name.clone(), window, cx); })), diff --git a/crates/sing_project/src/state.rs b/crates/sing_project/src/state.rs index bbdb4cd762..d17e418b4b 100644 --- a/crates/sing_project/src/state.rs +++ b/crates/sing_project/src/state.rs @@ -648,7 +648,7 @@ mod tests { #[test] fn project_row_humanizes_backend_reason_codes() { let row = ProjectRow { - name: "sing".to_string(), + name: "sail".to_string(), status: ProjectStatus::Stopped, ip: None, description: None, diff --git a/crates/sing_spec/src/file_system.rs b/crates/sing_spec/src/file_system.rs index 4b28ba6a61..09b976de37 100644 --- a/crates/sing_spec/src/file_system.rs +++ b/crates/sing_spec/src/file_system.rs @@ -302,7 +302,7 @@ fn temporary_remote_path(path: &Path) -> Result { .duration_since(UNIX_EPOCH) .context("system clock is before unix epoch")? .as_nanos(); - Ok(path.with_file_name(format!(".{file_name}.chorus-tmp-{}-{nonce}", process::id()))) + Ok(path.with_file_name(format!(".{file_name}.mast-tmp-{}-{nonce}", process::id()))) } fn path_string(path: &Path) -> String { diff --git a/crates/sing_spec/src/panel.rs b/crates/sing_spec/src/panel.rs index 5d768b877f..dc66d0b65f 100644 --- a/crates/sing_spec/src/panel.rs +++ b/crates/sing_spec/src/panel.rs @@ -147,7 +147,7 @@ impl SingSpecBoardPanel { let kvp = cx.update(|_, cx| KeyValueStore::global(cx))?; cx.background_spawn(async move { kvp.read_kvp(&serialization_key) }) .await - .context("loading sing spec board panel") + .context("loading SAIL spec board panel") .log_err() .flatten() .map(|panel| serde_json::from_str::(&panel)) diff --git a/crates/sing_spec/src/store.rs b/crates/sing_spec/src/store.rs index 889b577476..d2722db2c7 100644 --- a/crates/sing_spec/src/store.rs +++ b/crates/sing_spec/src/store.rs @@ -614,7 +614,7 @@ mod tests { fn update_metadata_refreshes_board_and_preserves_unknown_fields() { let store = fixture_store( r#" -owner: chorus +owner: mast specs: - id: alpha title: Alpha diff --git a/crates/theme_settings/src/theme_settings.rs b/crates/theme_settings/src/theme_settings.rs index 1cf74acd7e..5cd098baac 100644 --- a/crates/theme_settings/src/theme_settings.rs +++ b/crates/theme_settings/src/theme_settings.rs @@ -461,13 +461,13 @@ mod tests { use super::*; #[test] - fn loads_bundled_jetbrains_themes() -> anyhow::Result<()> { + fn loads_bundled_mast_themes() -> anyhow::Result<()> { let registry = ThemeRegistry::new(Box::new(Assets)); load_bundled_themes(®istry); - let dark = registry.get("JetBrains Dark")?; - let light = registry.get("JetBrains Light")?; + let dark = registry.get("Mast Dark")?; + let light = registry.get("Mast Light")?; assert_eq!(dark.appearance, Appearance::Dark); assert_eq!(light.appearance, Appearance::Light); @@ -476,23 +476,23 @@ mod tests { } #[test] - fn loads_bundled_jetbrains_icon_themes() -> anyhow::Result<()> { + fn loads_bundled_mast_icon_themes() -> anyhow::Result<()> { let registry = ThemeRegistry::new(Box::new(Assets)); load_bundled_icon_themes(®istry); - let dark = registry.get_icon_theme("JetBrains New UI Icons (Dark)")?; - let light = registry.get_icon_theme("JetBrains New UI Icons (Light)")?; + let dark = registry.get_icon_theme("Mast Icons (Dark)")?; + let light = registry.get_icon_theme("Mast Icons (Light)")?; assert_eq!(dark.appearance, Appearance::Dark); assert_eq!(light.appearance, Appearance::Light); assert_eq!( dark.directory_icons.collapsed.as_deref(), - Some("icon_themes/jetbrains-new-ui/./icons/folder_dark.svg") + Some("icon_themes/mast/./icons/folder_dark.svg") ); assert_eq!( light.directory_icons.collapsed.as_deref(), - Some("icon_themes/jetbrains-new-ui/./icons/folder.svg") + Some("icon_themes/mast/./icons/folder.svg") ); Ok(()) diff --git a/crates/util/src/shell.rs b/crates/util/src/shell.rs index 3334ef41af..4babd79698 100644 --- a/crates/util/src/shell.rs +++ b/crates/util/src/shell.rs @@ -806,7 +806,7 @@ mod tests { // WSL // wsl.exe --distribution NixOS --cd /home/user -- /usr/bin/zsh -c "echo hello" // wsl.exe --distribution NixOS --cd /home/user -- /usr/bin/zsh -c "\"echo hello\"" | grep hello" - // wsl.exe --distribution NixOS --cd ~ env RUST_LOG=info,remote=debug .chorus_wsl_server/chorus-remote-server-dev-build proxy --identifier dev-workspace-53 + // wsl.exe --distribution NixOS --cd ~ env RUST_LOG=info,remote=debug .mast_wsl_server/mast-remote-server-dev-build proxy --identifier dev-workspace-53 // PowerShell from Nushell // nu -c overlay use "C:\Users\kubko\dev\python\39007\tests\.venv\Scripts\activate.nu"; ^"C:\Program Files\PowerShell\7\pwsh.exe" -C "C:\Users\kubko\dev\python\39007\tests\.venv\Scripts\python.exe -m pytest \"test_foo.py::test_foo\"" // PowerShell from CMD diff --git a/crates/windows_resources/src/windows_resources.rs b/crates/windows_resources/src/windows_resources.rs index 8efb695d83..fa34b04b12 100644 --- a/crates/windows_resources/src/windows_resources.rs +++ b/crates/windows_resources/src/windows_resources.rs @@ -44,10 +44,10 @@ const MANIFEST_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/resources/mani pub fn compile(manifest: bool) -> Result<(), Box> { let channel = option_env!("RELEASE_CHANNEL").unwrap_or("dev"); let (icon_filename, product_name) = match channel { - "stable" => ("app-icon.ico", "Chorus"), - "preview" => ("app-icon-preview.ico", "Chorus Preview"), - "nightly" => ("app-icon-nightly.ico", "Chorus Nightly"), - _ => ("app-icon-dev.ico", "Chorus Dev"), + "stable" => ("app-icon.ico", "Mast"), + "preview" => ("app-icon-preview.ico", "Mast Preview"), + "nightly" => ("app-icon-nightly.ico", "Mast Nightly"), + _ => ("app-icon-dev.ico", "Mast Dev"), }; let icon = std::path::PathBuf::from(ICON_DIR).join(icon_filename); let icon_escaped = icon.to_string_lossy().replace('\\', "\\\\"); @@ -94,8 +94,8 @@ BEGIN VALUE "FileVersion", "{pkg_version}\0" VALUE "ProductName", "{product_name}\0" VALUE "ProductVersion", "{product_version}\0" - VALUE "CompanyName", "Singular, Inc.\0" - VALUE "LegalCopyright", "Copyright 2026 Singular\0" + VALUE "CompanyName", "Standard Applied Intelligence Labs\0" + VALUE "LegalCopyright", "Copyright 2026 Standard Applied Intelligence Labs\0" END END BLOCK "VarFileInfo" diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 45a14fa1a0..53b89d9b2e 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -7730,6 +7730,11 @@ impl Workspace { if let Some(panel) = dock.visible_panel() { let size_state = dock.stored_panel_size_state(panel.as_ref()); let min_size = panel.min_size(window, cx); + container = container + .rounded_lg() + .border_1() + .border_color(cx.theme().colors().border) + .bg(cx.theme().colors().panel_background); if position.axis() == Axis::Horizontal { let use_flexible = panel.has_flexible_size(window, cx); let flex_grow = if use_flexible { @@ -8705,6 +8710,8 @@ impl Render for Workspace { .flex() .flex_row() .h_full() + .p_1() + .gap_1() .children(self.render_dock( DockPosition::Left, &self.left_dock, @@ -8717,9 +8724,14 @@ impl Render for Workspace { .flex_col() .flex_1() .overflow_hidden() + .gap_1() .child( h_flex() .flex_1() + .overflow_hidden() + .rounded_lg() + .border_1() + .border_color(colors.border) .when_some(paddings.0, |this, p| { this.child(p.border_r_1()) }) diff --git a/crates/zed/Cargo.toml b/crates/zed/Cargo.toml index cd17ffb84b..5a34e26a6d 100644 --- a/crates/zed/Cargo.toml +++ b/crates/zed/Cargo.toml @@ -7,7 +7,7 @@ version = "1.2.0" publish.workspace = true license = "GPL-3.0-or-later" authors = ["Zed Team "] -default-run = "chorus" +default-run = "mast" [lints] workspace = true @@ -55,7 +55,7 @@ visual-tests = [ ] [[bin]] -name = "chorus" +name = "mast" path = "src/main.rs" [[bin]] @@ -281,35 +281,35 @@ repl = { workspace = true, features = ["test-support"] } [package.metadata.bundle-dev] icon = ["resources/app-icon-dev@2x.png", "resources/app-icon-dev.png"] -identifier = "ai.singlr.Chorus-Dev" -name = "Chorus" +identifier = "ai.singlr.Mast-Dev" +name = "Mast" osx_minimum_system_version = "10.15.7" osx_info_plist_exts = ["resources/info/*"] -osx_url_schemes = ["chorus"] +osx_url_schemes = ["mast"] [package.metadata.bundle-nightly] icon = ["resources/app-icon-nightly@2x.png", "resources/app-icon-nightly.png"] -identifier = "ai.singlr.Chorus-Nightly" -name = "Chorus Nightly" +identifier = "ai.singlr.Mast-Nightly" +name = "Mast Nightly" osx_minimum_system_version = "10.15.7" osx_info_plist_exts = ["resources/info/*"] -osx_url_schemes = ["chorus"] +osx_url_schemes = ["mast"] [package.metadata.bundle-preview] icon = ["resources/app-icon-preview@2x.png", "resources/app-icon-preview.png"] -identifier = "ai.singlr.Chorus-Preview" -name = "Chorus Preview" +identifier = "ai.singlr.Mast-Preview" +name = "Mast Preview" osx_minimum_system_version = "10.15.7" osx_info_plist_exts = ["resources/info/*"] -osx_url_schemes = ["chorus"] +osx_url_schemes = ["mast"] [package.metadata.bundle-stable] icon = ["resources/app-icon@2x.png", "resources/app-icon.png"] -identifier = "ai.singlr.Chorus" -name = "Chorus" +identifier = "ai.singlr.Mast" +name = "Mast" osx_minimum_system_version = "10.15.7" osx_info_plist_exts = ["resources/info/*"] -osx_url_schemes = ["chorus"] +osx_url_schemes = ["mast"] [package.metadata.cargo-machete] ignored = ["profiling", "zstd", "tracing"] diff --git a/crates/zed/resources/flatpak/manifest-template.json b/crates/zed/resources/flatpak/manifest-template.json index a547a40195..318ef72b32 100644 --- a/crates/zed/resources/flatpak/manifest-template.json +++ b/crates/zed/resources/flatpak/manifest-template.json @@ -6,7 +6,7 @@ "sdk-extensions": [ "org.freedesktop.Sdk.Extension.rust-stable" ], - "command": "chorus", + "command": "mast", "finish-args": [ "--talk-name=org.freedesktop.Flatpak", "--device=dri", @@ -22,7 +22,7 @@ }, "modules": [ { - "name": "chorus", + "name": "mast", "buildsystem": "simple", "build-options": { "env": { @@ -31,7 +31,7 @@ "APP_NAME": "$APP_NAME", "BRANDING_LIGHT": "$BRANDING_LIGHT", "BRANDING_DARK": "$BRANDING_DARK", - "APP_CLI": "chorus", + "APP_CLI": "mast", "APP_ARGS": "--foreground %U", "DO_STARTUP_NOTIFY": "false" } @@ -41,8 +41,8 @@ "envsubst < zed.desktop.in > zed.desktop && install -Dm755 zed.desktop /app/share/applications/$APP_ID.desktop", "envsubst < flatpak/zed.metainfo.xml.in > zed.metainfo.xml && install -Dm644 zed.metainfo.xml /app/share/metainfo/$APP_ID.metainfo.xml", "sed -i -e '/@release_info@/{r flatpak/release-info/$CHANNEL' -e 'd}' /app/share/metainfo/$APP_ID.metainfo.xml", - "install -Dm755 bin/chorus /app/bin/chorus", - "install -Dm755 libexec/chorus-editor /app/libexec/chorus-editor", + "install -Dm755 bin/mast /app/bin/mast", + "install -Dm755 libexec/mast-editor /app/libexec/mast-editor", "install -Dm755 lib/* -t /app/lib" ], "sources": [ diff --git a/crates/zed/resources/flatpak/zed.metainfo.xml.in b/crates/zed/resources/flatpak/zed.metainfo.xml.in index a404807c0b..d9b762fe89 100644 --- a/crates/zed/resources/flatpak/zed.metainfo.xml.in +++ b/crates/zed/resources/flatpak/zed.metainfo.xml.in @@ -7,17 +7,17 @@ $APP_NAME The integrated agent environment - Singlr AI + Standard Applied Intelligence Labs

- Chorus brings sing-aware project orchestration into a native code editor without giving up fast startup, SSH workflows, or GPU-rendered UI. + Mast by SAIL is built on Zed and brings SAIL-aware project orchestration into a native code editor without giving up fast startup, SSH workflows, or GPU-rendered UI.

Features:

  • Performance: Efficiently uses every CPU core and your GPU for instant startup, quick file loading, and responsive keystrokes.
  • Language-aware: Maintains a syntax tree for precise highlighting, and auto-indent, with LSP support for autocompletion and refactoring.
  • -
  • Infrastructure-aware: Chorus is built to layer sing project context, specs, and orchestration on top of native editing workflows.
  • +
  • Infrastructure-aware: Mast is built to layer SAIL project context, specs, and orchestration on top of native editing workflows.
  • Local-first: SSH remote development, external agents, and local editing stay available without defaulting users into hosted account flows.
diff --git a/crates/zed/resources/info/DocumentTypes.plist b/crates/zed/resources/info/DocumentTypes.plist index f68a8971a0..3785bc1854 100644 --- a/crates/zed/resources/info/DocumentTypes.plist +++ b/crates/zed/resources/info/DocumentTypes.plist @@ -19,7 +19,7 @@ CFBundleTypeIconFile Document CFBundleTypeName - Chorus Text Document + Mast Text Document CFBundleTypeRole Editor CFBundleTypeOSTypes diff --git a/crates/zed/resources/snap/snapcraft.yaml.in b/crates/zed/resources/snap/snapcraft.yaml.in index 9c4c6d68d1..2556b6564c 100644 --- a/crates/zed/resources/snap/snapcraft.yaml.in +++ b/crates/zed/resources/snap/snapcraft.yaml.in @@ -1,11 +1,11 @@ -name: chorus -title: Chorus +name: mast +title: Mast base: core24 version: "$RELEASE_VERSION" summary: The integrated agent environment description: | - Chorus is a modern open-source code editor forked from Zed and shaped around - sing-native orchestration workflows, SSH development, and external agents. + Mast is a modern open-source code editor forked from Zed and shaped around + SAIL-native orchestration workflows, SSH development, and external agents. grade: stable confinement: classic compression: lzo @@ -15,9 +15,9 @@ issues: https://github.com/singlr-ai/chorus/issues contact: https://github.com/singlr-ai/chorus/discussions parts: - chorus: + mast: plugin: dump - source: "https://github.com/singlr-ai/chorus/releases/download/v$RELEASE_VERSION/chorus-linux-x86_64.tar.gz" + source: "https://github.com/singlr-ai/chorus/releases/download/v$RELEASE_VERSION/mast-linux-x86_64.tar.gz" organize: # These renames seem to not be necessary, but it's tidier. @@ -52,8 +52,8 @@ parts: - -usr/share/man apps: - chorus: - command: usr/bin/chorus - common-id: ai.singlr.Chorus + mast: + command: usr/bin/mast + common-id: ai.singlr.Mast environment: ZED_BUNDLE_TYPE: snap diff --git a/crates/zed/resources/windows/zed.iss b/crates/zed/resources/windows/zed.iss index 78dc0ace1e..c7721f7f85 100644 --- a/crates/zed/resources/windows/zed.iss +++ b/crates/zed/resources/windows/zed.iss @@ -1256,10 +1256,10 @@ Root: HKCU; Subkey: "Software\Classes\Drive\shell\{#RegValueName}\command"; Valu Root: HKCU; Subkey: "Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{code:AddToPath|{app}\bin}"; Tasks: addtopath; Check: NeedsAddToPath(ExpandConstant('{app}\bin')) ; URI Scheme -Root: HKCU; Subkey: "Software\Classes\chorus"; ValueType: "string"; ValueData: "URL:chorus Protocol"; Flags: uninsdeletekey -Root: HKCU; Subkey: "Software\Classes\chorus"; ValueType: "string"; ValueName: "URL Protocol"; ValueData: "" -Root: HKCU; Subkey: "Software\Classes\chorus\DefaultIcon"; ValueType: "string"; ValueData: "{app}\{#AppExeName}.exe,1" -Root: HKCU; Subkey: "Software\Classes\chorus\shell\open\command"; ValueType: "string"; ValueData: """{app}\{#AppExeName}.exe"" ""%1""" +Root: HKCU; Subkey: "Software\Classes\mast"; ValueType: "string"; ValueData: "URL:mast Protocol"; Flags: uninsdeletekey +Root: HKCU; Subkey: "Software\Classes\mast"; ValueType: "string"; ValueName: "URL Protocol"; ValueData: "" +Root: HKCU; Subkey: "Software\Classes\mast\DefaultIcon"; ValueType: "string"; ValueData: "{app}\{#AppExeName}.exe,1" +Root: HKCU; Subkey: "Software\Classes\mast\shell\open\command"; ValueType: "string"; ValueData: """{app}\{#AppExeName}.exe"" ""%1""" [Code] function WizardNotSilent(): Boolean; diff --git a/crates/zed/resources/windows/zed.sh b/crates/zed/resources/windows/zed.sh index b02a7dd439..b7e4c966b3 100644 --- a/crates/zed/resources/windows/zed.sh +++ b/crates/zed/resources/windows/zed.sh @@ -17,9 +17,9 @@ if [ $IN_WSL = true ]; then if [ -z "$WSL_USER" ]; then WSL_USER="$USERNAME" fi - "$ZED_PATH/chorus.exe" --wsl "$WSL_USER@$WSL_DISTRO_NAME" "$@" + "$ZED_PATH/mast.exe" --wsl "$WSL_USER@$WSL_DISTRO_NAME" "$@" exit $? else - "$ZED_PATH/chorus.exe" "$@" + "$ZED_PATH/mast.exe" "$@" exit $? fi diff --git a/crates/zed/resources/zed.desktop.in b/crates/zed/resources/zed.desktop.in index acb07e30a8..f6e83da2b2 100644 --- a/crates/zed/resources/zed.desktop.in +++ b/crates/zed/resources/zed.desktop.in @@ -9,11 +9,11 @@ StartupNotify=$DO_STARTUP_NOTIFY Exec=$APP_CLI $APP_ARGS Icon=$APP_ICON Categories=Utility;TextEditor;Development;IDE; -Keywords=chorus;sing;orchestration; -# To add Chorus to "Open Folder With..." context menu, add `inode/directory` to the MimeType field (semicolon separated) +Keywords=mast;sail;orchestration; +# To add Mast to "Open Folder With..." context menu, add `inode/directory` to the MimeType field (semicolon separated) # Arch linux users have reported this setting Zed as default file browser. See https://github.com/zed-industries/zed/pull/39076 and related issues. # If this happens to you, an unconfirmed fix may be to install Arch's `gnome-defaults-list` package. -MimeType=text/plain;application/x-zerosize;x-scheme-handler/chorus; +MimeType=text/plain;application/x-zerosize;x-scheme-handler/mast; Actions=NewWorkspace; [Desktop Action NewWorkspace] diff --git a/crates/zed/src/main.rs b/crates/zed/src/main.rs index 209b7697c5..83476f9df7 100644 --- a/crates/zed/src/main.rs +++ b/crates/zed/src/main.rs @@ -76,7 +76,7 @@ use crate::zed::{CrashHandler, OpenRequestKind, eager_load_active_theme_and_icon static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc; fn files_not_created_on_launch(errors: HashMap>) { - let message = "Chorus failed to launch"; + let message = "Mast failed to launch"; let error_details = errors .into_iter() .flat_map(|(kind, paths)| { @@ -138,7 +138,7 @@ fn fail_to_open_window_async(e: anyhow::Error, cx: &mut AsyncApp) { fn fail_to_open_window(e: anyhow::Error, _cx: &mut App) { eprintln!( - "Chorus failed to open a window: {e:?}. See https://zed.dev/docs/linux for troubleshooting steps." + "Mast failed to open a window: {e:?}. See https://zed.dev/docs/linux for troubleshooting steps." ); #[cfg(not(any(target_os = "linux", target_os = "freebsd")))] { @@ -158,7 +158,7 @@ fn fail_to_open_window(e: anyhow::Error, _cx: &mut App) { proxy .add_notification( notification_id, - Notification::new("Chorus failed to launch") + Notification::new("Mast failed to launch") .body(Some( format!( "{e:?}. See https://zed.dev/docs/linux for troubleshooting steps." @@ -304,7 +304,7 @@ pub fn main() { client::telemetry::os_name(), client::telemetry::os_version(), ); - println!("Chorus System Specs (from CLI):\n{}", system_specs); + println!("Mast System Specs (from CLI):\n{}", system_specs); return; } @@ -491,7 +491,7 @@ pub fn main() { handle_keymap_file_changes(user_keymap_file_rx, user_keymap_watcher, cx); let user_agent = format!( - "Chorus/{} ({}; {})", + "Mast/{} ({}; {})", AppVersion::global(cx), std::env::consts::OS, std::env::consts::ARCH @@ -1677,14 +1677,14 @@ fn stdout_is_a_pty() -> bool { } #[derive(Parser, Debug)] -#[command(name = "chorus", disable_version_flag = true, max_term_width = 100)] +#[command(name = "mast", disable_version_flag = true, max_term_width = 100)] struct Args { /// A sequence of space-separated paths or urls that you want to open. /// /// Use `path:line:row` syntax to open a file at a specific location. /// Non-existing paths and directories will ignore `:line:row` suffix. /// - /// URLs can either be `file://` or `chorus://` scheme, or relative to the configured server URL. + /// URLs can either be `file://` or `mast://` scheme, or relative to the configured server URL. paths_or_urls: Vec, /// Pairs of file paths to diff. Can be specified multiple times. @@ -1695,14 +1695,14 @@ struct Args { /// Sets a custom directory for all user data (e.g., database, extensions, logs). /// /// This overrides the default platform-specific data directory location. - /// On macOS, the default is `~/Library/Application Support/Chorus`. - /// On Linux/FreeBSD, the default is `$XDG_DATA_HOME/chorus`. - /// On Windows, the default is `%LOCALAPPDATA%\\Chorus`. + /// On macOS, the default is `~/Library/Application Support/Mast`. + /// On Linux/FreeBSD, the default is `$XDG_DATA_HOME/mast`. + /// On Windows, the default is `%LOCALAPPDATA%\\Mast`. #[arg(long, value_name = "DIR", verbatim_doc_comment)] user_data_dir: Option, /// The username and WSL distribution to use when opening paths. If not specified, - /// Chorus will attempt to open the paths directly. + /// Mast will attempt to open the paths directly. /// /// The username is optional, and if not specified, the default user for the distribution /// will be used. @@ -1721,29 +1721,29 @@ struct Args { #[arg(long)] dev_container: bool, - /// Instructs Chorus to run as a dev server on this machine. (not implemented) + /// Instructs Mast to run as a dev server on this machine. (not implemented) #[arg(long)] dev_server_token: Option, /// Prints system specs. /// /// Useful for submitting issues on GitHub when encountering a bug that - /// prevents Chorus from starting, so you can't run `chorus: copy system specs to + /// prevents Mast from starting, so you can't run `mast: copy system specs to /// clipboard` #[arg(long)] system_specs: bool, /// Used for the MCP Server, to remove the need for netcat as a dependency, - /// by having Chorus act like netcat communicating over a Unix socket. + /// by having Mast act like netcat communicating over a Unix socket. #[arg(long, hide = true)] nc: Option, - /// Used for recording minidumps on crashes by having Chorus run a separate + /// Used for recording minidumps on crashes by having Mast run a separate /// process communicating over a socket. #[arg(long, hide = true)] crash_handler: Option, - /// Run Chorus in the foreground, only used on Windows, to match the behavior on macOS. + /// Run Mast in the foreground, only used on Windows, to match the behavior on macOS. #[arg(long)] #[cfg(target_os = "windows")] #[arg(hide = true)] @@ -1756,7 +1756,7 @@ struct Args { dock_action: Option, /// Used for SSH/Git password authentication, to remove the need for netcat as a dependency, - /// by having Chorus act like netcat communicating over a Unix socket. + /// by having Mast act like netcat communicating over a Unix socket. #[arg(long)] #[cfg(not(target_os = "windows"))] #[arg(hide = true)] @@ -1774,7 +1774,7 @@ struct Args { #[arg(long, hide = true)] record_etw_trace: bool, - /// The PID of the Chorus process to trace for heap analysis. + /// The PID of the Mast process to trace for heap analysis. #[cfg(target_os = "windows")] #[arg(long, hide = true, allow_hyphen_values = true)] etw_zed_pid: Option, @@ -1784,7 +1784,7 @@ struct Args { #[arg(long, hide = true)] etw_output: Option, - /// Unix socket path for IPC with the parent Chorus process. + /// Unix socket path for IPC with the parent Mast process. #[cfg(target_os = "windows")] #[arg(long, hide = true)] etw_socket: Option, diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index 103b3c66bc..1120a66db4 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -687,7 +687,7 @@ fn show_software_emulation_warning_if_needed( }; let message = format!( db::indoc! {r#" - Chorus uses {} for rendering and requires a compatible GPU. + Mast uses {} for rendering and requires a compatible GPU. Currently you are using a software emulated GPU ({}) which will result in awful performance. @@ -1111,7 +1111,7 @@ fn register_actions( Ok(()) }) .detach_and_prompt_err( - "Error registering chorus:// scheme", + "Error registering mast:// scheme", window, cx, |_, _, _| None, @@ -1375,6 +1375,7 @@ fn open_about_window(cx: &mut App) { copy_entry: NavigableEntry, app_icon: Arc, message: SharedString, + attribution: SharedString, commit: Option, full_version: SharedString, } @@ -1392,6 +1393,7 @@ fn open_about_window(cx: &mut App) { "" }; let message: SharedString = format!("{release_channel_name} {version} {debug}").into(); + let attribution: SharedString = "Mast by SAIL, built on Zed".into(); let commit = AppCommitSha::try_global(cx) .map(|sha| sha.full()) .filter(|commit| !commit.is_empty()) @@ -1403,6 +1405,7 @@ fn open_about_window(cx: &mut App) { copy_entry: NavigableEntry::focusable(cx), app_icon: about_window_icon(release_channel), message, + attribution, commit, full_version, } @@ -1412,11 +1415,14 @@ fn open_about_window(cx: &mut App) { let content = match self.commit.as_ref() { Some(commit) => { format!( - "{}\nCommit: {}\nVersion: {}", - self.message, commit, self.full_version + "{}\n{}\nCommit: {}\nVersion: {}", + self.message, self.attribution, commit, self.full_version ) } - None => format!("{}\nVersion: {}", self.message, self.full_version), + None => format!( + "{}\n{}\nVersion: {}", + self.message, self.attribution, self.full_version + ), }; cx.write_to_clipboard(ClipboardItem::new_string(content)); window.remove_window(); @@ -1451,6 +1457,11 @@ fn open_about_window(cx: &mut App) { .items_center() .child(img(self.app_icon.clone()).size_16().flex_none()) .child(Headline::new(self.message.clone())) + .child( + Label::new(self.attribution.clone()) + .color(Color::Muted) + .size(LabelSize::Small), + ) .when_some(self.commit.clone(), |this, commit| { this.child( Label::new("Commit") diff --git a/crates/zed/src/zed/app_menus.rs b/crates/zed/src/zed/app_menus.rs index 355c02c069..a9670dac20 100644 --- a/crates/zed/src/zed/app_menus.rs +++ b/crates/zed/src/zed/app_menus.rs @@ -313,7 +313,13 @@ pub fn app_menus(cx: &mut App) -> Vec { url: DOCUMENTATION_URL.into(), }, ), - MenuItem::action("Chorus Repository", feedback::OpenZedRepo), + MenuItem::action("Mast Repository", feedback::OpenZedRepo), + MenuItem::action( + "Zed Project", + super::OpenBrowser { + url: "https://zed.dev".into(), + }, + ), MenuItem::action( "Community Discussions", super::OpenBrowser { diff --git a/crates/zed/src/zed/open_listener.rs b/crates/zed/src/zed/open_listener.rs index a30d48a6f7..8ef382dbd1 100644 --- a/crates/zed/src/zed/open_listener.rs +++ b/crates/zed/src/zed/open_listener.rs @@ -18,7 +18,7 @@ use gpui::{App, AsyncApp, Global, WindowHandle}; use onboarding::FIRST_OPEN; use onboarding::show_onboarding_view; use recent_projects::{RemoteSettings, navigate_to_positions, open_remote_project}; -use release_channel::{APP_URL_SCHEME, LEGACY_APP_URL_SCHEME}; +use release_channel::APP_URL_SCHEME; use remote::{RemoteConnectionOptions, WslConnectionOptions}; use settings::Settings; use std::path::{Path, PathBuf}; @@ -142,11 +142,11 @@ impl OpenRequest { for url in request.urls { if let Some(server_name) = strip_scheme(&url, APP_URL_SCHEME, "-cli://") - .or_else(|| strip_scheme(&url, LEGACY_APP_URL_SCHEME, "-cli://")) + .or_else(|| strip_scheme(&url, "zed", "-cli://")) { this.kind = Some(OpenRequestKind::CliConnection(connect_to_cli(server_name)?)); } else if let Some(action_index) = strip_scheme(&url, APP_URL_SCHEME, "-dock-action://") - .or_else(|| strip_scheme(&url, LEGACY_APP_URL_SCHEME, "-dock-action://")) + .or_else(|| strip_scheme(&url, "zed", "-dock-action://")) { this.kind = Some(OpenRequestKind::DockMenuAction { index: action_index.parse()?, @@ -306,9 +306,9 @@ fn strip_scheme<'a>(url: &'a str, scheme: &str, suffix: &str) -> Option<&'a str> fn strip_app_url<'a>(url: &'a str, path: &str) -> Option<&'a str> { let primary = format!("{APP_URL_SCHEME}://{path}"); - let legacy = format!("{LEGACY_APP_URL_SCHEME}://{path}"); + let upstream = format!("zed://{path}"); url.strip_prefix(&primary) - .or_else(|| url.strip_prefix(&legacy)) + .or_else(|| url.strip_prefix(&upstream)) } fn matches_app_url(url: &str, path: &str) -> bool { @@ -1138,7 +1138,7 @@ mod tests { let request = cx.update(|cx| { OpenRequest::parse( RawOpenRequest { - urls: vec![format!("chorus://agent/shared/{session_id}")], + urls: vec![format!("mast://agent/shared/{session_id}")], ..Default::default() }, cx, diff --git a/crates/zed/src/zed/open_url_modal.rs b/crates/zed/src/zed/open_url_modal.rs index 2746eb3af7..69d6a63a66 100644 --- a/crates/zed/src/zed/open_url_modal.rs +++ b/crates/zed/src/zed/open_url_modal.rs @@ -27,7 +27,7 @@ impl OpenUrlModal { pub fn new(window: &mut Window, cx: &mut Context) -> Self { let editor = cx.new(|cx| { let mut editor = Editor::single_line(window, cx); - editor.set_placeholder_text("chorus://...", window, cx); + editor.set_placeholder_text("mast://...", window, cx); editor }); @@ -53,8 +53,8 @@ impl OpenUrlModal { return; } - if url.starts_with("chorus://") - || url.starts_with("chorus-cli://") + if url.starts_with("mast://") + || url.starts_with("mast-cli://") || url.starts_with("zed://") || url.starts_with("zed-cli://") { diff --git a/docs/chorus/fork-bootstrap.md b/docs/mast/fork-bootstrap.md similarity index 81% rename from docs/chorus/fork-bootstrap.md rename to docs/mast/fork-bootstrap.md index 4e1b688fc0..bc1ab2cae9 100644 --- a/docs/chorus/fork-bootstrap.md +++ b/docs/mast/fork-bootstrap.md @@ -1,11 +1,11 @@ -# Chorus Fork Bootstrap +# Mast Fork Bootstrap ## Upstream Baseline - Upstream repository: `zed-industries/zed` - Synced upstream revision: `cbd856ff3e` - Sync date: `2026-04-13` -- Active Chorus bootstrap branch: `feat/chorus-fork-bootstrap` +- Active Mast bootstrap branch: `feat/mast-fork-bootstrap` ## Supported Build Paths @@ -35,10 +35,10 @@ - `Cargo.toml` for workspace members and shared crate paths - `crates/zed` for app-level initialization and binary ownership -- `crates/workspace` for Chorus panel registration seams +- `crates/workspace` for Mast panel registration seams - App metadata and packaging scripts when branding work starts -## Chorus-Owned Files In This Bootstrap +## Mast-Owned Files In This Bootstrap - `Cargo.toml` - `crates/sing_bridge/**` @@ -46,11 +46,11 @@ - `crates/sing_orchestrator/**` - `crates/sing_project/**` - `crates/sing_spec/**` -- `docs/chorus/fork-bootstrap.md` +- `docs/mast/fork-bootstrap.md` ## Planned Crate Ownership -- `sing_bridge`: SSH and `sing --json` integration boundary +- `sing_bridge`: SSH and `sail --json` integration boundary - `sing_project`: project panel and remote-open coordination - `sing_spec`: spec domain and board model - `sing_dispatch`: dispatch actions and agent lifecycle tracking @@ -59,7 +59,7 @@ ## Guardrails - Keep `default-members = ["crates/zed"]` -- Land Chorus feature work in `crates/sing_*` first +- Land Mast feature work in `crates/sing_*` first - Treat edits outside the reserved fork touch points as exceptions that need explicit justification ## Git Remotes @@ -70,5 +70,5 @@ ## CI and Artifact Builds - Public GitHub-hosted workflows live alongside upstream Zed workflows -- Zed-only workflows stay fenced behind repository guards so Chorus does not queue private-runner jobs -- MBP testing instructions and artifact flow are documented in `docs/chorus/github-actions.md` +- Zed-only workflows stay fenced behind repository guards so Mast does not queue private-runner jobs +- MBP testing instructions and artifact flow are documented in `docs/mast/github-actions.md` diff --git a/docs/chorus/github-actions.md b/docs/mast/github-actions.md similarity index 68% rename from docs/chorus/github-actions.md rename to docs/mast/github-actions.md index 70e2e46eaf..b16501787c 100644 --- a/docs/chorus/github-actions.md +++ b/docs/mast/github-actions.md @@ -1,4 +1,4 @@ -# Chorus GitHub Actions +# Mast GitHub Actions ## Remote Layout @@ -7,33 +7,33 @@ ## Public Workflows -- `Chorus CI` +- `Mast CI` - Runs on pull requests, pushes to `main`, and manual dispatch - Verifies Linux formatting and workflow definitions - - Checks that Chorus builds on Linux and macOS - - Runs `cargo test -p sing_bridge` + - Checks that Mast builds on Linux and macOS + - Runs the SAIL bridge tests -- `Chorus Artifacts` +- `Mast Artifacts` - Runs manually through `workflow_dispatch` - Manual dispatch can build `all`, `macos`, or `linux` - Runs for pull requests labeled `build-artifacts` - - Uploads only the Chorus app bundles needed for local testing + - Uploads only the Mast app bundles needed for local testing - Builds the Linux remote server archive on Ubuntu and injects it into the macOS app bundle so packaged remote development works without macOS cross-compilation ## Disabled Upstream Workflows -- Chorus keeps only the workflows that apply to the public fork today. +- Mast keeps only the workflows that apply to the public fork today. - Upstream Zed workflows for release automation, documentation suggestions, reviewer assignment, community bots, and private infrastructure are intentionally removed from `.github/workflows`. -- If Chorus later needs one of those capabilities, add back a Chorus-owned workflow instead of re-enabling the upstream file unchanged. +- If Mast later needs one of those capabilities, add back a Mast-owned workflow instead of re-enabling the upstream file unchanged. ## Testing on a MacBook Pro 1. Push your branch to `origin` -2. Open the `Chorus Artifacts` workflow in GitHub Actions +2. Open the `Mast Artifacts` workflow in GitHub Actions 3. Run it against the branch you want to test with `platform=macos`, or label the PR with `build-artifacts` -4. Download the `chorus-macos-aarch64-app` artifact +4. Download the `mast-macos-aarch64-app` artifact 5. Unzip it on the MacBook Pro -6. Launch `Chorus Dev.app` +6. Launch `Mast Dev.app` ## Current Limits diff --git a/docs/chorus/upstream-sync.md b/docs/mast/upstream-sync.md similarity index 63% rename from docs/chorus/upstream-sync.md rename to docs/mast/upstream-sync.md index 252c47e299..ab012aa995 100644 --- a/docs/chorus/upstream-sync.md +++ b/docs/mast/upstream-sync.md @@ -1,8 +1,8 @@ -# Chorus Upstream Sync +# Mast Upstream Sync ## Current Baseline -- Sync branch: `feat/chorus-upstream-zed-sync` +- Sync branch: `feat/mast-upstream-zed-sync` - Upstream repository: `zed-industries/zed` - Upstream revision: `832c17e819` - Sync date: `2026-04-27` @@ -10,14 +10,14 @@ ## Sync Policy -- Merge upstream Zed into Chorus on a dedicated sync branch before building more agent, thread, worktree, or dispatch features. +- Merge upstream Zed into Mast on a dedicated sync branch before building more agent, thread, worktree, or dispatch features. - Prefer upstream behavior in Zed-owned crates when resolving conflicts. -- Reattach Chorus behavior through narrow registration points after upstream code is preserved. +- Reattach Mast behavior through narrow registration points after upstream code is preserved. - Keep conflict resolution mechanical for lockfiles, generated assets, and packaging files. -## Chorus-Owned Extension Crates +## Mast-Owned Extension Crates -- `crates/sing_bridge`: boundary for `sing` CLI, SSH, validation, and typed command models. +- `crates/sing_bridge`: boundary for SAIL CLI, SSH, validation, and typed command models. - `crates/sing_project`: project lifecycle panel and remote-open coordination. - `crates/sing_spec`: spec store, spec board, and spec file interactions. - `crates/sing_dispatch`: future dispatch bridge from specs to agent sessions. @@ -26,22 +26,22 @@ ## Allowed Zed-Owned Touch Points - `Cargo.toml` and `Cargo.lock` for workspace membership and dependency resolution. -- `crates/zed` for app startup, binary naming, and registration of Chorus panels. +- `crates/zed` for app startup, binary naming, and registration of Mast panels. - `crates/workspace` for small UI seams that cannot yet be expressed through panel registration alone. - `assets/settings/default.json` for schema and defaults that cannot yet be layered elsewhere. -- Packaging scripts and resources only when required for Chorus builds or distribution. +- Packaging scripts and resources only when required for Mast builds or distribution. ## Conflict Hotspots -- Agent and thread crates change often upstream; avoid direct Chorus edits there. +- Agent and thread crates change often upstream; avoid direct Mast edits there. - Worktree and project-panel internals change often upstream; prefer adapters over patches. - `crates/zed/src/zed.rs` is currently the main registration seam for `sing_project` and `sing_spec`. - Branding resources create broad noisy diffs; defer icon or resource changes unless they are required. -- Upstream GitHub workflows should stay removed unless Chorus intentionally adopts an equivalent workflow. +- Upstream GitHub workflows should stay removed unless Mast intentionally adopts an equivalent workflow. ## Future Isolation Work -- Introduce a single Chorus integration module for startup, action registration, settings defaults, and panel registration. -- Move remaining Chorus welcome/onboarding branding into release-channel or product-identity APIs where possible. +- Introduce a single Mast integration module for startup, action registration, settings defaults, and panel registration. +- Move remaining Mast welcome/onboarding branding into release-channel or product-identity APIs where possible. - Keep new feature work in `sing_*` crates first, then add the smallest possible hook in Zed-owned code. - Document every unavoidable fork patch with its owner and reason before adding more patches nearby. diff --git a/script/bundle-linux b/script/bundle-linux index 5559c44706..88de95c7b0 100755 --- a/script/bundle-linux +++ b/script/bundle-linux @@ -14,7 +14,7 @@ Build a release .tar.gz for Linux. Options: -h, --help Display this help and exit. --flatpak Set ZED_BUNDLE_TYPE=flatpak so that this can be included in system info - --app-only Build the Chorus app bundle without building remote_server + --app-only Build the Mast app bundle without building remote_server " } @@ -94,7 +94,7 @@ if [[ "$(uname -m)" == "aarch64" ]]; then else export RUSTFLAGS="${RUSTFLAGS:-} -C link-args=-Wl,--disable-new-dtags,-rpath,\$ORIGIN/../lib" fi -cargo build --release --target "${target_triple}" --package zed --bin chorus +cargo build --release --target "${target_triple}" --package zed --bin mast cargo build --release --target "${target_triple}" --package cli cargo build --release --target "${bundled_remote_server_triple}" --package remote_server if [[ "$app_only" = false ]]; then @@ -112,8 +112,8 @@ if ! command -v sentry-cli >/dev/null 2>&1; then echo "install with: 'curl -sL https://sentry.io/get-cli | bash'" else if [[ -n "${SENTRY_AUTH_TOKEN:-}" ]]; then - echo "Uploading Chorus debug symbols to sentry..." - sentry_files=("${target_dir}/${target_triple}/release/chorus") + echo "Uploading Mast debug symbols to sentry..." + sentry_files=("${target_dir}/${target_triple}/release/mast") if [[ "$app_only" = false ]]; then sentry_files+=("${target_dir}/${remote_server_triple}/release/remote_server") fi @@ -140,7 +140,7 @@ fi # Strip debug symbols and save them for upload to DigitalOcean. # We use llvm-objcopy because GNU objcopy on older distros (e.g. Ubuntu 20.04) # doesn't understand CREL sections produced by newer LLVM. -llvm-objcopy --strip-debug "${target_dir}/${target_triple}/release/chorus" +llvm-objcopy --strip-debug "${target_dir}/${target_triple}/release/mast" llvm-objcopy --strip-debug "${target_dir}/${target_triple}/release/cli" llvm-objcopy --strip-debug "${target_dir}/${bundled_remote_server_triple}/release/remote_server" if [[ "$app_only" = false ]]; then @@ -169,17 +169,17 @@ fi # Move everything that should end up in the final package # into a temp directory. temp_dir=$(mktemp -d) -zed_dir="${temp_dir}/chorus$suffix.app" +zed_dir="${temp_dir}/mast$suffix.app" # Binary mkdir -p "${zed_dir}/bin" "${zed_dir}/libexec" "${zed_dir}/libexec/remote-servers" -cp "${target_dir}/${target_triple}/release/chorus" "${zed_dir}/libexec/chorus-editor" -cp "${target_dir}/${target_triple}/release/cli" "${zed_dir}/bin/chorus" -gzip -f --stdout --best "${target_dir}/${bundled_remote_server_triple}/release/remote_server" > "${zed_dir}/libexec/remote-servers/chorus-remote-server-linux-${arch}.gz" +cp "${target_dir}/${target_triple}/release/mast" "${zed_dir}/libexec/mast-editor" +cp "${target_dir}/${target_triple}/release/cli" "${zed_dir}/bin/mast" +gzip -f --stdout --best "${target_dir}/${bundled_remote_server_triple}/release/remote_server" > "${zed_dir}/libexec/remote-servers/mast-remote-server-linux-${arch}.gz" # Libs find_libs() { - ldd ${target_dir}/${target_triple}/release/chorus |\ + ldd ${target_dir}/${target_triple}/release/mast |\ cut -d' ' -f3 |\ grep -v '\<\(libstdc++.so\|libc.so\|libgcc_s.so\|libm.so\|libpthread.so\|libdl.so\|libasound.so\)' } @@ -190,27 +190,27 @@ cp $(find_libs) "${zed_dir}/lib" # Icons mkdir -p "${zed_dir}/share/icons/hicolor/512x512/apps" -cp "crates/zed/resources/app-icon$suffix.png" "${zed_dir}/share/icons/hicolor/512x512/apps/chorus.png" +cp "crates/zed/resources/app-icon$suffix.png" "${zed_dir}/share/icons/hicolor/512x512/apps/mast.png" mkdir -p "${zed_dir}/share/icons/hicolor/1024x1024/apps" -cp "crates/zed/resources/app-icon$suffix@2x.png" "${zed_dir}/share/icons/hicolor/1024x1024/apps/chorus.png" +cp "crates/zed/resources/app-icon$suffix@2x.png" "${zed_dir}/share/icons/hicolor/1024x1024/apps/mast.png" # .desktop export DO_STARTUP_NOTIFY="true" -export APP_CLI="chorus" -export APP_ICON="chorus" +export APP_CLI="mast" +export APP_ICON="mast" export APP_ARGS="%U" if [[ "$channel" == "preview" ]]; then - export APP_NAME="Chorus Preview" - APP_ID="ai.singlr.Chorus-Preview" + export APP_NAME="Mast Preview" + APP_ID="ai.singlr.Mast-Preview" elif [[ "$channel" == "nightly" ]]; then - export APP_NAME="Chorus Nightly" - APP_ID="ai.singlr.Chorus-Nightly" + export APP_NAME="Mast Nightly" + APP_ID="ai.singlr.Mast-Nightly" elif [[ "$channel" == "dev" ]]; then - export APP_NAME="Chorus" - APP_ID="ai.singlr.Chorus-Dev" + export APP_NAME="Mast" + APP_ID="ai.singlr.Mast-Dev" else - export APP_NAME="Chorus" - APP_ID="ai.singlr.Chorus" + export APP_NAME="Mast" + APP_ID="ai.singlr.Mast" fi mkdir -p "${zed_dir}/share/applications" @@ -221,13 +221,13 @@ chmod +x "${zed_dir}/share/applications/$APP_ID.desktop" cp "assets/licenses.md" "${zed_dir}/licenses.md" # Create archive out of everything that's in the temp directory -archive="chorus-linux-${arch}.tar.gz" +archive="mast-linux-${arch}.tar.gz" rm -rf "${archive}" -remove_match="chorus(-[a-zA-Z0-9]+)?-linux-$(uname -m)\.tar\.gz" +remove_match="mast(-[a-zA-Z0-9]+)?-linux-$(uname -m)\.tar\.gz" ls "${target_dir}/release" | grep -E ${remove_match} | xargs -d "\n" -I {} rm -f "${target_dir}/release/{}" || true -tar -czvf "${target_dir}/release/$archive" -C ${temp_dir} "chorus$suffix.app" +tar -czvf "${target_dir}/release/$archive" -C ${temp_dir} "mast$suffix.app" if [[ "$app_only" = false ]]; then - gzip -f --stdout --best "${target_dir}/${remote_server_triple}/release/remote_server" > "${target_dir}/chorus-remote-server-linux-${arch}.gz" + gzip -f --stdout --best "${target_dir}/${remote_server_triple}/release/remote_server" > "${target_dir}/mast-remote-server-linux-${arch}.gz" fi diff --git a/script/bundle-mac b/script/bundle-mac index 44401d85ac..2414090deb 100755 --- a/script/bundle-mac +++ b/script/bundle-mac @@ -75,7 +75,7 @@ if [[ $# -gt 0 && -n "$1" ]]; then fi arch_suffix="" remote_server_bundle_dir="target/remote-servers" -prebuilt_remote_server_archives_dir="${CHORUS_PREBUILT_REMOTE_SERVER_ARCHIVES_DIR:-${ZED_PREBUILT_REMOTE_SERVER_ARCHIVES_DIR:-}}" +prebuilt_remote_server_archives_dir="${MAST_PREBUILT_REMOTE_SERVER_ARCHIVES_DIR:-${ZED_PREBUILT_REMOTE_SERVER_ARCHIVES_DIR:-}}" if [[ "$target_triple" = "x86_64-apple-darwin" ]]; then arch_suffix="x86_64" @@ -91,8 +91,8 @@ script/generate-licenses rustup target add $target_triple -echo "Compiling Chorus binaries" -cargo build ${build_flag} --package zed --bin chorus --target $target_triple +echo "Compiling Mast binaries" +cargo build ${build_flag} --package zed --bin mast --target $target_triple cargo build ${build_flag} --package cli --target $target_triple if [ "$app_only" = false ]; then # Build remote_server in separate invocation to prevent feature unification from other crates @@ -202,7 +202,7 @@ function build_remote_server_archive() { local platform_os=$2 local platform_arch=$3 local binary_path="target/${target}/${target_dir}/remote_server" - local archive_path="${remote_server_bundle_dir}/chorus-remote-server-${platform_os}-${platform_arch}.gz" + local archive_path="${remote_server_bundle_dir}/mast-remote-server-${platform_os}-${platform_arch}.gz" rustup target add "$target" @@ -286,7 +286,7 @@ function sign_app_binaries() { # sequence of codesign commands modeled after this example: https://developer.apple.com/forums/thread/701514 /usr/bin/codesign --deep --force --timestamp --options runtime --sign "$IDENTITY" "${app_path}/Contents/MacOS/cli" -v /usr/bin/codesign --deep --force --timestamp --options runtime --sign "$IDENTITY" "${app_path}/Contents/MacOS/git" -v - /usr/bin/codesign --deep --force --timestamp --options runtime --entitlements crates/zed/resources/zed.entitlements --sign "$IDENTITY" "${app_path}/Contents/MacOS/chorus" -v + /usr/bin/codesign --deep --force --timestamp --options runtime --entitlements crates/zed/resources/zed.entitlements --sign "$IDENTITY" "${app_path}/Contents/MacOS/mast" -v /usr/bin/codesign --force --timestamp --options runtime --entitlements crates/zed/resources/zed.entitlements --sign "$IDENTITY" "${app_path}" -v else echo "One or more of the following variables are missing: MACOS_CERTIFICATE, MACOS_CERTIFICATE_PASSWORD, APPLE_NOTARIZATION_KEY, APPLE_NOTARIZATION_KEY_ID, APPLE_NOTARIZATION_ISSUER_ID" @@ -332,7 +332,7 @@ function sign_app_binaries() { else dmg_target_directory="target/${target_triple}/${target_dir}" dmg_source_directory="${dmg_target_directory}/dmg" - dmg_file_path="${dmg_target_directory}/Chorus-${arch_suffix}.dmg" + dmg_file_path="${dmg_target_directory}/Mast-${arch_suffix}.dmg" xcode_bin_dir_path="$(xcode-select -p)/usr/bin" rm -rf ${dmg_source_directory} @@ -344,7 +344,7 @@ function sign_app_binaries() { ln -s /Applications ${dmg_source_directory} echo "Creating final DMG at ${dmg_file_path} using ${dmg_source_directory}" - hdiutil create -volname Chorus -srcfolder "${dmg_source_directory}" -ov -format UDZO "${dmg_file_path}" + hdiutil create -volname Mast -srcfolder "${dmg_source_directory}" -ov -format UDZO "${dmg_file_path}" # If someone runs this bundle script locally, a symlink will be placed in `dmg_source_directory`. # This symlink causes CPU issues if the project being worked on is also the app source tree, so we simply remove it for now. @@ -383,13 +383,13 @@ function upload_debug_symbols() { if [ "$local_install" = true ]; then echo "local install; skipping sentry upload." elif [[ -n "${SENTRY_AUTH_TOKEN:-}" ]]; then - echo "Uploading Chorus debug symbols to sentry..." - if ! dsymutil --flat "target/${target_triple}/${target_dir}/chorus" 2> target/dsymutil.log; then + echo "Uploading Mast debug symbols to sentry..." + if ! dsymutil --flat "target/${target_triple}/${target_dir}/mast" 2> target/dsymutil.log; then echo "dsymutil failed" cat target/dsymutil.log exit 1 fi - sentry_files=("target/${target_triple}/${target_dir}/chorus.dwarf") + sentry_files=("target/${target_triple}/${target_dir}/mast.dwarf") if [ "$app_only" = false ]; then if ! dsymutil --flat "target/${target_triple}/${target_dir}/remote_server" 2> target/dsymutil.log; then echo "dsymutil failed" @@ -423,7 +423,7 @@ upload_debug_symbols prepare_remote_server_archives -cp target/${target_triple}/${target_dir}/chorus "${app_path}/Contents/MacOS/chorus" +cp target/${target_triple}/${target_dir}/mast "${app_path}/Contents/MacOS/mast" cp target/${target_triple}/${target_dir}/cli "${app_path}/Contents/MacOS/cli" copy_remote_server_archives_into_app sign_app_binaries @@ -431,5 +431,5 @@ sign_app_binaries if [ "$app_only" = false ]; then remote_server_path="target/${target_triple}/${target_dir}/remote_server" sign_binary "${remote_server_path}" - gzip -f --stdout --best "${remote_server_path}" > "target/chorus-remote-server-macos-${arch_suffix}.gz" + gzip -f --stdout --best "${remote_server_path}" > "target/mast-remote-server-macos-${arch_suffix}.gz" fi diff --git a/script/bundle-windows.ps1 b/script/bundle-windows.ps1 index 645f3e3cfd..ca12b4ef46 100644 --- a/script/bundle-windows.ps1 +++ b/script/bundle-windows.ps1 @@ -101,9 +101,9 @@ function GenerateLicenses { function BuildZedAndItsFriends { Write-Output "Building Zed and its friends, for channel: $channel" - # Build chorus.exe, cli.exe and auto_update_helper.exe + # Build mast.exe, cli.exe and auto_update_helper.exe cargo build --release --package zed --package cli --package auto_update_helper --target $target - Copy-Item -Path ".\$CargoOutDir\chorus.exe" -Destination "$innoDir\Chorus.exe" -Force + Copy-Item -Path ".\$CargoOutDir\mast.exe" -Destination "$innoDir\Mast.exe" -Force Copy-Item -Path ".\$CargoOutDir\cli.exe" -Destination "$innoDir\cli.exe" -Force Copy-Item -Path ".\$CargoOutDir\auto_update_helper.exe" -Destination "$innoDir\auto_update_helper.exe" -Force # Build explorer_command_injector.dll @@ -204,7 +204,7 @@ function SignZedAndItsFriends { return } - $files = "$innoDir\Chorus.exe,$innoDir\cli.exe,$innoDir\auto_update_helper.exe,$innoDir\zed_explorer_command_injector.dll,$innoDir\zed_explorer_command_injector.appx" + $files = "$innoDir\Mast.exe,$innoDir\cli.exe,$innoDir\auto_update_helper.exe,$innoDir\zed_explorer_command_injector.dll,$innoDir\zed_explorer_command_injector.appx" & "$innoDir\sign.ps1" $files } @@ -228,8 +228,8 @@ function DownloadConpty { function CollectFiles { Move-Item -Path "$innoDir\zed_explorer_command_injector.appx" -Destination "$innoDir\appx\zed_explorer_command_injector.appx" -Force Move-Item -Path "$innoDir\zed_explorer_command_injector.dll" -Destination "$innoDir\appx\zed_explorer_command_injector.dll" -Force - Move-Item -Path "$innoDir\cli.exe" -Destination "$innoDir\bin\chorus.exe" -Force - Move-Item -Path "$innoDir\zed.sh" -Destination "$innoDir\bin\chorus" -Force + Move-Item -Path "$innoDir\cli.exe" -Destination "$innoDir\bin\mast.exe" -Force + Move-Item -Path "$innoDir\zed.sh" -Destination "$innoDir\bin\mast" -Force Move-Item -Path "$innoDir\auto_update_helper.exe" -Destination "$innoDir\tools\auto_update_helper.exe" -Force if($Architecture -eq "aarch64") { New-Item -Type Directory -Path "$innoDir\arm64" -Force @@ -252,58 +252,58 @@ function BuildInstaller { "stable" { $appId = "{{2DB0DA96-CA55-49BB-AF4F-64AF36A86712}" $appIconName = "app-icon" - $appName = "Chorus" - $appDisplayName = "Chorus" - $appSetupName = "Chorus-$Architecture" + $appName = "Mast" + $appDisplayName = "Mast" + $appSetupName = "Mast-$Architecture" # The mutex name here should match the mutex name in crates\zed\src\zed\windows_only_instance.rs - $appMutex = "Chorus-Stable-Instance-Mutex" - $appExeName = "Chorus" - $regValueName = "Chorus" - $appUserId = "SinglrAI.Chorus" + $appMutex = "Mast-Stable-Instance-Mutex" + $appExeName = "Mast" + $regValueName = "Mast" + $appUserId = "SinglrAI.Mast" $appShellNameShort = "C&horus" - $appAppxFullName = "SinglrAI.Chorus_1.0.0.0_neutral__japxn1gcva8rg" + $appAppxFullName = "SinglrAI.Mast_1.0.0.0_neutral__japxn1gcva8rg" } "preview" { $appId = "{{F70E4811-D0E2-4D88-AC99-D63752799F95}" $appIconName = "app-icon-preview" - $appName = "Chorus Preview" - $appDisplayName = "Chorus Preview" - $appSetupName = "Chorus-$Architecture" + $appName = "Mast Preview" + $appDisplayName = "Mast Preview" + $appSetupName = "Mast-$Architecture" # The mutex name here should match the mutex name in crates\zed\src\zed\windows_only_instance.rs - $appMutex = "Chorus-Preview-Instance-Mutex" - $appExeName = "Chorus" - $regValueName = "ChorusPreview" - $appUserId = "SinglrAI.Chorus.Preview" + $appMutex = "Mast-Preview-Instance-Mutex" + $appExeName = "Mast" + $regValueName = "MastPreview" + $appUserId = "SinglrAI.Mast.Preview" $appShellNameShort = "C&horus Preview" - $appAppxFullName = "SinglrAI.Chorus.Preview_1.0.0.0_neutral__japxn1gcva8rg" + $appAppxFullName = "SinglrAI.Mast.Preview_1.0.0.0_neutral__japxn1gcva8rg" } "nightly" { $appId = "{{1BDB21D3-14E7-433C-843C-9C97382B2FE0}" $appIconName = "app-icon-nightly" - $appName = "Chorus Nightly" - $appDisplayName = "Chorus Nightly" - $appSetupName = "Chorus-$Architecture" + $appName = "Mast Nightly" + $appDisplayName = "Mast Nightly" + $appSetupName = "Mast-$Architecture" # The mutex name here should match the mutex name in crates\zed\src\zed\windows_only_instance.rs - $appMutex = "Chorus-Nightly-Instance-Mutex" - $appExeName = "Chorus" - $regValueName = "ChorusNightly" - $appUserId = "SinglrAI.Chorus.Nightly" + $appMutex = "Mast-Nightly-Instance-Mutex" + $appExeName = "Mast" + $regValueName = "MastNightly" + $appUserId = "SinglrAI.Mast.Nightly" $appShellNameShort = "C&horus Nightly" - $appAppxFullName = "SinglrAI.Chorus.Nightly_1.0.0.0_neutral__japxn1gcva8rg" + $appAppxFullName = "SinglrAI.Mast.Nightly_1.0.0.0_neutral__japxn1gcva8rg" } "dev" { $appId = "{{8357632E-24A4-4F32-BA97-E575B4D1FE5D}" $appIconName = "app-icon-dev" - $appName = "Chorus" - $appDisplayName = "Chorus" - $appSetupName = "Chorus-$Architecture" + $appName = "Mast" + $appDisplayName = "Mast" + $appSetupName = "Mast-$Architecture" # The mutex name here should match the mutex name in crates\zed\src\zed\windows_only_instance.rs - $appMutex = "Chorus-Dev-Instance-Mutex" - $appExeName = "Chorus" - $regValueName = "ChorusDev" - $appUserId = "SinglrAI.Chorus.Dev" + $appMutex = "Mast-Dev-Instance-Mutex" + $appExeName = "Mast" + $regValueName = "MastDev" + $appUserId = "SinglrAI.Mast.Dev" $appShellNameShort = "C&horus Dev" - $appAppxFullName = "SinglrAI.Chorus.Dev_1.0.0.0_neutral__japxn1gcva8rg" + $appAppxFullName = "SinglrAI.Mast.Dev_1.0.0.0_neutral__japxn1gcva8rg" } default { Write-Error "can't bundle installer for $channel." diff --git a/script/flatpak/bundle-flatpak b/script/flatpak/bundle-flatpak index dbeab875ab..22d12bfe4e 100755 --- a/script/flatpak/bundle-flatpak +++ b/script/flatpak/bundle-flatpak @@ -5,33 +5,33 @@ cd "$(dirname "$0")/../.." shopt -s extglob script/bundle-linux --flatpak -archive_match="chorus(-[a-zA-Z0-9]+)?-linux-$(uname -m)\.tar\.gz" +archive_match="mast(-[a-zA-Z0-9]+)?-linux-$(uname -m)\.tar\.gz" archive=$(ls "target/release" | grep -E ${archive_match}) channel=$( "$temp/chorus-linux-$arch.tar.gz" + echo "Downloading Mast version: $ZED_VERSION" + curl "$(release_base_url)/mast-linux-$arch.tar.gz" > "$temp/mast-linux-$arch.tar.gz" fi suffix="" @@ -106,54 +106,54 @@ linux() { appid="" case "$channel" in stable) - appid="ai.singlr.Chorus" + appid="ai.singlr.Mast" ;; nightly) - appid="ai.singlr.Chorus-Nightly" + appid="ai.singlr.Mast-Nightly" ;; preview) - appid="ai.singlr.Chorus-Preview" + appid="ai.singlr.Mast-Preview" ;; dev) - appid="ai.singlr.Chorus-Dev" + appid="ai.singlr.Mast-Dev" ;; *) echo "Unknown release channel: ${channel}. Using stable app ID." - appid="ai.singlr.Chorus" + appid="ai.singlr.Mast" ;; esac # Unpack - rm -rf "$HOME/.local/chorus$suffix.app" - mkdir -p "$HOME/.local/chorus$suffix.app" - tar -xzf "$temp/chorus-linux-$arch.tar.gz" -C "$HOME/.local/" + rm -rf "$HOME/.local/mast$suffix.app" + mkdir -p "$HOME/.local/mast$suffix.app" + tar -xzf "$temp/mast-linux-$arch.tar.gz" -C "$HOME/.local/" # Setup ~/.local directories mkdir -p "$HOME/.local/bin" "$HOME/.local/share/applications" # Link the binary - if [ -f "$HOME/.local/chorus$suffix.app/bin/chorus" ]; then - ln -sf "$HOME/.local/chorus$suffix.app/bin/chorus" "$HOME/.local/bin/chorus" + if [ -f "$HOME/.local/mast$suffix.app/bin/mast" ]; then + ln -sf "$HOME/.local/mast$suffix.app/bin/mast" "$HOME/.local/bin/mast" else - ln -sf "$HOME/.local/chorus$suffix.app/bin/cli" "$HOME/.local/bin/chorus" + ln -sf "$HOME/.local/mast$suffix.app/bin/cli" "$HOME/.local/bin/mast" fi # Copy .desktop file desktop_file_path="$HOME/.local/share/applications/${appid}.desktop" - src_dir="$HOME/.local/chorus$suffix.app/share/applications" + src_dir="$HOME/.local/mast$suffix.app/share/applications" if [ -f "$src_dir/${appid}.desktop" ]; then cp "$src_dir/${appid}.desktop" "${desktop_file_path}" else - cp "$src_dir/chorus$suffix.desktop" "${desktop_file_path}" + cp "$src_dir/mast$suffix.desktop" "${desktop_file_path}" fi - sed -i "s|Icon=chorus|Icon=$HOME/.local/chorus$suffix.app/share/icons/hicolor/512x512/apps/chorus.png|g" "${desktop_file_path}" - sed -i "s|Exec=chorus|Exec=$HOME/.local/chorus$suffix.app/bin/chorus|g" "${desktop_file_path}" + sed -i "s|Icon=mast|Icon=$HOME/.local/mast$suffix.app/share/icons/hicolor/512x512/apps/mast.png|g" "${desktop_file_path}" + sed -i "s|Exec=mast|Exec=$HOME/.local/mast$suffix.app/bin/mast|g" "${desktop_file_path}" } macos() { - echo "Downloading Chorus version: $ZED_VERSION" - curl "$(release_base_url)/Chorus-$arch.dmg" > "$temp/Chorus-$arch.dmg" - hdiutil attach -quiet "$temp/Chorus-$arch.dmg" -mountpoint "$temp/mount" + echo "Downloading Mast version: $ZED_VERSION" + curl "$(release_base_url)/Mast-$arch.dmg" > "$temp/Mast-$arch.dmg" + hdiutil attach -quiet "$temp/Mast-$arch.dmg" -mountpoint "$temp/mount" app="$(cd "$temp/mount/"; echo *.app)" echo "Installing $app" if [ -d "/Applications/$app" ]; then @@ -165,7 +165,7 @@ macos() { mkdir -p "$HOME/.local/bin" # Link the binary - ln -sf "/Applications/$app/Contents/MacOS/cli" "$HOME/.local/bin/chorus" + ln -sf "/Applications/$app/Contents/MacOS/cli" "$HOME/.local/bin/mast" } main "$@" diff --git a/script/uninstall.sh b/script/uninstall.sh index 7b3324dded..26c1be7b73 100644 --- a/script/uninstall.sh +++ b/script/uninstall.sh @@ -1,25 +1,25 @@ #!/usr/bin/env sh set -eu -# Uninstalls Chorus that was installed using the install.sh script +# Uninstalls Mast that was installed using the install.sh script check_remaining_installations() { platform="$(uname -s)" if [ "$platform" = "Darwin" ]; then - remaining=$(ls -d /Applications/Chorus*.app 2>/dev/null | wc -l) + remaining=$(ls -d /Applications/Mast*.app 2>/dev/null | wc -l) [ "$remaining" -eq 0 ] else - remaining=$(ls -d "$HOME/.local/chorus"*.app 2>/dev/null | wc -l) + remaining=$(ls -d "$HOME/.local/mast"*.app 2>/dev/null | wc -l) [ "$remaining" -eq 0 ] fi } prompt_remove_preferences() { - printf "Do you want to keep your Chorus preferences? [Y/n] " + printf "Do you want to keep your Mast preferences? [Y/n] " read -r response case "$response" in [nN]|[nN][oO]) - rm -rf "$HOME/.config/chorus" + rm -rf "$HOME/.config/mast" echo "Preferences removed." ;; *) @@ -43,7 +43,7 @@ main() { "$platform" - echo "Chorus has been uninstalled" + echo "Mast has been uninstalled" } linux() { @@ -56,71 +56,71 @@ linux() { db_suffix="stable" case "$channel" in stable) - appid="ai.singlr.Chorus" + appid="ai.singlr.Mast" db_suffix="stable" ;; nightly) - appid="ai.singlr.Chorus-Nightly" + appid="ai.singlr.Mast-Nightly" db_suffix="nightly" ;; preview) - appid="ai.singlr.Chorus-Preview" + appid="ai.singlr.Mast-Preview" db_suffix="preview" ;; dev) - appid="ai.singlr.Chorus-Dev" + appid="ai.singlr.Mast-Dev" db_suffix="dev" ;; *) echo "Unknown release channel: ${channel}. Using stable app ID." - appid="ai.singlr.Chorus" + appid="ai.singlr.Mast" db_suffix="stable" ;; esac # Remove the app directory - rm -rf "$HOME/.local/chorus$suffix.app" + rm -rf "$HOME/.local/mast$suffix.app" # Remove the binary symlink - rm -f "$HOME/.local/bin/chorus" + rm -f "$HOME/.local/bin/mast" # Remove the .desktop file rm -f "$HOME/.local/share/applications/${appid}.desktop" # Remove the database directory for this channel - rm -rf "$HOME/.local/share/chorus/db/0-$db_suffix" + rm -rf "$HOME/.local/share/mast/db/0-$db_suffix" # Remove socket file - rm -f "$HOME/.local/share/chorus/chorus-$db_suffix.sock" + rm -f "$HOME/.local/share/mast/mast-$db_suffix.sock" - # Remove the entire Chorus directory if no installations remain + # Remove the entire Mast directory if no installations remain if check_remaining_installations; then - rm -rf "$HOME/.local/share/chorus" + rm -rf "$HOME/.local/share/mast" prompt_remove_preferences fi - rm -rf $HOME/.chorus_server + rm -rf $HOME/.mast_server } macos() { - app="Chorus.app" + app="Mast.app" db_suffix="stable" - app_id="ai.singlr.Chorus" + app_id="ai.singlr.Mast" case "$channel" in nightly) - app="Chorus Nightly.app" + app="Mast Nightly.app" db_suffix="nightly" - app_id="ai.singlr.Chorus-Nightly" + app_id="ai.singlr.Mast-Nightly" ;; preview) - app="Chorus Preview.app" + app="Mast Preview.app" db_suffix="preview" - app_id="ai.singlr.Chorus-Preview" + app_id="ai.singlr.Mast-Preview" ;; dev) - app="Chorus.app" + app="Mast.app" db_suffix="dev" - app_id="ai.singlr.Chorus-Dev" + app_id="ai.singlr.Mast-Dev" ;; esac @@ -130,10 +130,10 @@ macos() { fi # Remove the binary symlink - rm -f "$HOME/.local/bin/chorus" + rm -f "$HOME/.local/bin/mast" # Remove the database directory for this channel - rm -rf "$HOME/Library/Application Support/Chorus/db/0-$db_suffix" + rm -rf "$HOME/Library/Application Support/Mast/db/0-$db_suffix" # Remove app-specific files and directories rm -rf "$HOME/Library/Application Support/com.apple.sharedfilelist/com.apple.LSSharedFileList.ApplicationRecentDocuments/$app_id.sfl"* @@ -142,15 +142,15 @@ macos() { rm -rf "$HOME/Library/Preferences/$app_id.plist" rm -rf "$HOME/Library/Saved Application State/$app_id.savedState" - # Remove the entire Chorus directory if no installations remain + # Remove the entire Mast directory if no installations remain if check_remaining_installations; then - rm -rf "$HOME/Library/Application Support/Chorus" - rm -rf "$HOME/Library/Logs/Chorus" + rm -rf "$HOME/Library/Application Support/Mast" + rm -rf "$HOME/Library/Logs/Mast" prompt_remove_preferences fi - rm -rf $HOME/.chorus_server + rm -rf $HOME/.mast_server } main "$@"