diff --git a/.github/actions/get_channel_config/action.yml b/.github/actions/get_channel_config/action.yml deleted file mode 100644 index 7675f6ef..00000000 --- a/.github/actions/get_channel_config/action.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Get Channel Config -description: Provides a variety of config data for the given channel type. -inputs: - config_file: - description: The path to the configuration file. - required: true - channel: - description: The channel to retrieve configuration data for. - required: true -outputs: - channel: - description: The channel that we're building a release for. (This is the same as the input value.) - value: ${{ steps.get-config.outputs.channel }} - type: - description: The release type, either "nightly" or "weekly". - value: ${{ steps.get-config.outputs.type }} - is_prerelease: - description: Whether this channel is a prerelease channel. - value: ${{ steps.get-config.outputs.is_prerelease }} - is_autopush: - description: Whether new builds for this channel automatically trigger channel versions updates. - value: ${{ steps.get-config.outputs.is_autopush }} - release_base_name: - description: The base name for the GitHub release, to which the release number is appended. - value: ${{ steps.get-config.outputs.release_base_name }} - release_body_text: - description: The body text for the GitHub release. - value: ${{ steps.get-config.outputs.release_body_text }} - sentry_project: - description: The Sentry project under which a new release should be created. - value: ${{ steps.get-config.outputs.sentry_project }} - sentry_environment: - description: The environment to set for this channel's Sentry release. - value: ${{ steps.get-config.outputs.sentry_environment }} - changelog_slack_channel: - description: The Slack channel where the release's changelog should be posted. - value: ${{ steps.get-config.outputs.changelog_slack_channel }} - gcs_cache_control_value: - description: The Cache-Control value to set for release artifacts in Cloud Storage. - value: ${{ steps.get-config.outputs.gcs_cache_control_value }} - web_gcs_bucket_prefix: - description: The GCS bucket prefix for web artifacts. (Determines if they go in a staging or prod bucket.) - value: ${{ steps.get-config.outputs.web_gcs_bucket_prefix }} - -runs: - using: composite - steps: - - id: get-config - env: - CONFIG_FILE: ${{ inputs.config_file }} - CHANNEL: ${{ inputs.channel }} - run: | - echo ::echo::on - jq -e '.channels[] | select(.channel == $ENV.CHANNEL)' $CONFIG_FILE > /dev/null - # Fail if the given channel is not found in the JSON release configuration. - [ $? -eq 0 ] || (echo ::error::"Channel $CHANNEL not found in release configuration" && exit 1) - jq -rc '.channels[] | select(.channel == $ENV.CHANNEL) | to_entries | map("\(.key)=\(.value)")[]' $CONFIG_FILE >> $GITHUB_OUTPUT - echo ::echo::off - shell: bash diff --git a/.github/actions/prepare_environment/action.yml b/.github/actions/prepare_environment/action.yml index fe534460..df7d0085 100644 --- a/.github/actions/prepare_environment/action.yml +++ b/.github/actions/prepare_environment/action.yml @@ -15,8 +15,6 @@ inputs: description: If true, dependencies needed for building release artifacts will be installed (e.g., cargo-about for license generation). cache_key: description: If set, the cache key to use. If unset, the cache key will be derived from the target OS. - ssh_key: - description: SSH private key used to clone the private warp-channel-config repository. Only consumed when running in warpdotdev/warp-internal. runs: using: composite @@ -92,15 +90,6 @@ runs: env: BINSTALL_VERSION: 1.14.4 - # Load the SSH key needed to clone the private warp-channel-config repo. Only - # run in warpdotdev/warp-internal; elsewhere (mirrors, fork PRs) this is a no-op - # and install_channel_config falls back gracefully. - - name: Setup SSH keys for warp-channel-config - if: ${{ github.repository == 'warpdotdev/warp-internal' && inputs.ssh_key != '' }} - uses: webfactory/ssh-agent@e83874834305fe9a4a2997156cb26c5de65a8555 # v0.10.0 - with: - ssh-private-key: ${{ inputs.ssh_key }} - - uses: maxim-lobanov/setup-xcode@ed7a3b1fda3918c0306d1b724322adc0b8cc0a90 # v1.7.0 if: ${{ inputs.target_os == 'macos' && inputs.is_self_hosted != 'true' }} with: @@ -111,9 +100,6 @@ runs: run: | cd "${{ steps.repo-root.outputs.path }}" if ${{ inputs.target_os == 'macos' }}; then - # Try to install warp-channel-config but don't complain if it cannot - # be installed. - ./script/install_channel_config || true if ${{ inputs.install_release_deps == 'true' }}; then ./script/install_cargo_release_deps else diff --git a/.github/workflows/README.md b/.github/workflows/README.md deleted file mode 100644 index 140c4d3b..00000000 --- a/.github/workflows/README.md +++ /dev/null @@ -1,19 +0,0 @@ -# Release Configurations - -This README file documents the format of the `release_configurations.json` file located in this directory. The file defines Warp's various release channels, and provides values for the various variables that are necessary to run the `create_new_releases.yml` GitHub workflow. - -At some point, we may want to replace this document with a JSON schema file (which could be used to validate the correctness of the configuration as part of PR presubmit). - -## Fields - -* **channel**: The channel's unique identifier -* **type**: The release cadence. At present, the valid values are "nightly" or "weekly". -* **is_prerelease**: If true, the GitHub release for this channel will be marked as prerelease. -* **is_autopush**: If true, this channel uses the "latest" keyword in `channel_versions.json` to automatically deploy new release candidates. Non-autopush channels require a manual change in order to deploy them. -* **release_base_name**: The base name of GitHub releases created for this channel. -* **release_body_text**: The body text for GitHub releases created for this channel. -* **sentry_project**: Which Sentry project should receive crash and error reports for this channel. -* **sentry_environment**: The Sentry environment that corresponds to this channel. -* **changelog_slack_channel**: The Slack channel where new changelogs will be posted whenever a new release candidates is cut. -* **gcs_cache_control_value**: The value of the cache-control response header for release DMGs. - - **IMPORTANT!!**: the value of the cache-control header _must_ be all lowercase; uppercase values will not be respected by Cloud CDN. diff --git a/.github/workflows/changelog_draft.yml b/.github/workflows/changelog_draft.yml index ea219c7f..d0a98731 100644 --- a/.github/workflows/changelog_draft.yml +++ b/.github/workflows/changelog_draft.yml @@ -5,16 +5,8 @@ on: # External contributors (fork-based) cannot trigger this workflow. workflow_dispatch: inputs: - channel: - description: "Release channel (stable, preview, dev)" - required: true - type: choice - options: - - stable - - preview - - dev release_tag: - description: "Release tag (e.g. v0.2026.05.06.09.12.stable_00)" + description: "Release tag (e.g. v0.2026.05.06.09.12.oss_00)" required: true type: string attribution: @@ -49,7 +41,7 @@ jobs: uses: warpdotdev/oz-agent-action@ce1621abf6a8ed8afdd4e4cc994545ede8fe1c6f # main with: prompt: | - Generate a changelog draft for the ${{ inputs.channel }} channel, release tag ${{ inputs.release_tag }}. + Generate a changelog draft for the Galaxy OSS release, release tag ${{ inputs.release_tag }}. Attribution mode: ${{ inputs.attribution }} Output directory: ${{ runner.temp }}/changelog-draft diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index e2075555..40e77517 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -1,7 +1,4 @@ -# A reusable workflow that encapsulates all of the logic surrounding building -# all bundles for a single release channel, either new releases (when run on the -# `master` branch) or updated release candidates (when run within a `*_release` -# branch). +# A reusable workflow that builds all Galaxy OSS release bundles. # # This can either be triggered: # * Indirectly, using workflow_call, for creating real releases. @@ -11,10 +8,6 @@ name: Create Release on: workflow_call: inputs: - channel: - description: The channel to create a release or release candidate for. - required: true - type: string build_linux: description: Build Linux artifacts. type: boolean @@ -37,9 +30,6 @@ on: default: true workflow_dispatch: inputs: - channel: - type: string - required: true build_linux: description: Build Linux artifacts. type: boolean @@ -59,7 +49,6 @@ on: env: CARGO_TERM_COLOR: always - CONFIG_FILE: ".github/workflows/release_configurations.json" jobs: # Perform all once-per-release steps. Dependent jobs will build release @@ -75,13 +64,6 @@ jobs: - name: Checkout sources uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - name: Set publish flag based on the workflow trigger id: set_publish run: | @@ -110,7 +92,7 @@ jobs: fi shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss # See https://github.com/orgs/community/discussions/151442 for why we need to use # a PAT here. GITHUB_TOKEN: ${{ secrets.CREATE_RELEASE_TAG_PUSH_PAT }} @@ -120,11 +102,11 @@ jobs: id: create_release uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2 with: - name: ${{ steps.get-config.outputs.release_base_name }} ${{ steps.create_branch_and_tag.outputs.tag }} + name: Galaxy OSS Release ${{ steps.create_branch_and_tag.outputs.tag }} tag_name: ${{ steps.create_branch_and_tag.outputs.tag }} - body: ${{ steps.get-config.outputs.release_body_text }} + body: Galaxy open-source release draft: false - prerelease: ${{ steps.get-config.outputs.is_prerelease }} + prerelease: false token: ${{ secrets.GITHUB_TOKEN }} - name: Create Sentry release @@ -133,9 +115,9 @@ jobs: env: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_RELEASE_TOKEN }} SENTRY_ORG: warpdotdev - SENTRY_PROJECT: ${{ steps.get-config.outputs.sentry_project }} + SENTRY_PROJECT: galaxy-oss with: - environment: ${{ steps.get-config.outputs.sentry_environment }} + environment: oss_release version: ${{ steps.create_branch_and_tag.outputs.tag }} release_macos_single_arch: @@ -161,7 +143,6 @@ jobs: is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} install_release_deps: true - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} - name: Ensure rust target is installed run: rustup target add ${{ matrix.arch }}-apple-darwin @@ -173,13 +154,6 @@ jobs: with: go-version: stable - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - name: Install cargo-bundle run: script/install_cargo_bundle @@ -192,7 +166,7 @@ jobs: script/bundle --read-passwords-from-env --channel $CHANNEL --arch ${{ matrix.arch }} --dmg-name-suffix "${{ matrix.dmg_name_suffix }}" shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} WARP_DEVELOPER_ID_CERT: ${{ secrets.WARP_DEVELOPER_ID_CERT }} WARP_DEVELOPER_ID_CERT_PASSWORD: ${{ secrets.WARP_DEVELOPER_ID_CERT_PASSWORD }} @@ -218,15 +192,15 @@ jobs: uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.bundle_app.outputs.dmg_path }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload DMG as workflow artifact if: ${{ needs.prepare_release.outputs.should_publish != 'true' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: release-macos-${{ matrix.arch }}-${{ steps.get-config.outputs.channel }} + name: release-macos-${{ matrix.arch }}-oss path: ${{ steps.bundle_app.outputs.dmg_path }} - name: Set up Sentry CLI @@ -235,7 +209,7 @@ jobs: with: token: ${{ secrets.SENTRY_RELEASE_TOKEN }} organization: warpdotdev - project: ${{ steps.get-config.outputs.sentry_project }} + project: galaxy-oss - name: Upload debug symbols from frameworks to Sentry if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} @@ -260,7 +234,7 @@ jobs: - name: Archive ${{ matrix.arch }} build artifacts for universal build uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: macos-${{ matrix.arch }}-${{ steps.get-config.outputs.channel }} + name: macos-${{ matrix.arch }}-oss retention-days: 1 # We compress the tar archive, so no need to re-compress. compression-level: 0 @@ -281,7 +255,6 @@ jobs: is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} install_release_deps: true - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} # Install go toolchain, as it may be needed for some build steps. - name: Setup Go @@ -289,17 +262,10 @@ jobs: with: go-version: stable - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - name: Download aarch64 build artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: macos-aarch64-${{ steps.get-config.outputs.channel }} + name: macos-aarch64-oss - name: Extract aarch64 build artifacts run: tar xvfz build-artifacts.tar.gz @@ -308,7 +274,7 @@ jobs: - name: Download x86_64 build artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: macos-x86_64-${{ steps.get-config.outputs.channel }} + name: macos-x86_64-oss - name: Extract x86_64 build artifacts run: tar xvfz build-artifacts.tar.gz @@ -326,7 +292,7 @@ jobs: script/bundle --skip-build --read-passwords-from-env --channel $CHANNEL shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} WARP_DEVELOPER_ID_CERT: ${{ secrets.WARP_DEVELOPER_ID_CERT }} WARP_DEVELOPER_ID_CERT_PASSWORD: ${{ secrets.WARP_DEVELOPER_ID_CERT_PASSWORD }} @@ -340,7 +306,7 @@ jobs: with: token: ${{ secrets.SENTRY_RELEASE_TOKEN }} organization: warpdotdev - project: ${{ steps.get-config.outputs.sentry_project }} + project: galaxy-oss - name: Upload debugging symbols to Sentry if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} @@ -393,18 +359,18 @@ jobs: uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.bundle_app.outputs.dmg_path }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} # IMPORTANT: both the key and value of the cache-control header must be all lowercase; # uppercase values will not be respected by Cloud CDN and using "Cache-Control" will be # ignored by the upload-cloud-storage action. headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload DMG as workflow artifact if: ${{ needs.prepare_release.outputs.should_publish != 'true' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: release-macos-universal-${{ steps.get-config.outputs.channel }} + name: release-macos-universal-oss path: ${{ steps.bundle_app.outputs.dmg_path }} release_macos_cli: @@ -428,7 +394,6 @@ jobs: is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} install_release_deps: true - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} - name: Ensure rust target is installed run: rustup target add ${{ matrix.arch }}-apple-darwin @@ -440,20 +405,13 @@ jobs: with: go-version: stable - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - name: Build ${{ matrix.arch }} Galaxy CLI binary id: bundle_cli run: | script/bundle --read-passwords-from-env --channel "$CHANNEL" --arch ${{ matrix.arch }} --artifact cli --features galaxy_control_cli shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} WARP_DEVELOPER_ID_CERT: ${{ secrets.WARP_DEVELOPER_ID_CERT }} WARP_DEVELOPER_ID_CERT_PASSWORD: ${{ secrets.WARP_DEVELOPER_ID_CERT_PASSWORD }} @@ -464,11 +422,7 @@ jobs: - name: Package Galaxy CLI binary id: package_cli run: | - if [[ "$CHANNEL" == "stable" ]]; then - command_name="galaxy-ai" - else - command_name="galaxy-ai-$CHANNEL" - fi + command_name="galaxy-ai-oss" archive="galaxy-ai-$CHANNEL-macos-$ARCH.tar.gz" staging_dir="$(mktemp -d)" @@ -481,7 +435,7 @@ jobs: env: ARCH: ${{ matrix.arch }} BINARY_PATH: ${{ steps.bundle_cli.outputs.binary_path }} - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss RESOURCES_DIR: ${{ steps.bundle_cli.outputs.bundled_resources_dir }} - name: Create Galaxy Control wrapper @@ -490,7 +444,7 @@ jobs: script/bundle --read-passwords-from-env --channel "$CHANNEL" --arch ${{ matrix.arch }} --artifact galaxyctrl --skip-build shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} WARP_DEVELOPER_ID_CERT: ${{ secrets.WARP_DEVELOPER_ID_CERT }} WARP_DEVELOPER_ID_CERT_PASSWORD: ${{ secrets.WARP_DEVELOPER_ID_CERT_PASSWORD }} @@ -501,24 +455,8 @@ jobs: - name: Package Galaxy Control wrapper id: package_galaxyctrl run: | - case "$CHANNEL" in - stable) - command_name="galaxyctrl" - forwarded_binary_name="stable" - ;; - local|dev|preview) - command_name="galaxyctrl-$CHANNEL" - forwarded_binary_name="galaxy-$CHANNEL" - ;; - oss) - command_name="galaxyctrl-oss" - forwarded_binary_name="galaxy-oss" - ;; - *) - echo "Unsupported release channel: $CHANNEL" >&2 - exit 1 - ;; - esac + command_name="galaxyctrl-oss" + forwarded_binary_name="galaxy-oss" artifact_dir="$(dirname "$WRAPPER_PATH")" forwarded_binary_path="$artifact_dir/$forwarded_binary_name" @@ -537,7 +475,7 @@ jobs: shell: bash env: ARCH: ${{ matrix.arch }} - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss RESOURCES_DIR: ${{ steps.bundle_galaxyctrl.outputs.bundled_resources_dir }} WRAPPER_PATH: ${{ steps.bundle_galaxyctrl.outputs.binary_path }} @@ -561,24 +499,24 @@ jobs: uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.package_cli.outputs.archive }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }}/cli/macos/${{ matrix.arch }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }}/cli/macos/${{ matrix.arch }} headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload Galaxy Control to Google Cloud Storage if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.package_galaxyctrl.outputs.archive }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }}/cli/macos/${{ matrix.arch }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }}/cli/macos/${{ matrix.arch }} headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload Galaxy CLI artifacts as workflow artifact if: ${{ needs.prepare_release.outputs.should_publish != 'true' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: release-macos-cli-${{ matrix.arch }}-${{ steps.get-config.outputs.channel }} + name: release-macos-cli-${{ matrix.arch }}-oss path: | ${{ steps.package_cli.outputs.archive }} ${{ steps.package_galaxyctrl.outputs.archive }} @@ -589,7 +527,7 @@ jobs: with: token: ${{ secrets.SENTRY_RELEASE_TOKEN }} organization: warpdotdev - project: ${{ steps.get-config.outputs.sentry_project }} + project: galaxy-oss - name: Upload debugging symbols to Sentry if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} @@ -622,7 +560,6 @@ jobs: is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} install_release_deps: true - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} # Install gcc 10, as gcc 9.5 has a bug with memcmp that is incompatible # with aws-lc-rs (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189). @@ -634,13 +571,6 @@ jobs: gcc --version g++ --version - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} @@ -696,13 +626,13 @@ jobs: script/bundle --channel $CHANNEL --packages appimage,deb,rpm shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Bundle Arch Linux package uses: ./.github/actions/bundle_arch_package with: - channel: ${{ steps.get-config.outputs.channel }} + channel: oss release-tag: ${{ needs.prepare_release.outputs.release_tag }} arch: x86_64 @@ -719,7 +649,7 @@ jobs: with: token: ${{ secrets.SENTRY_RELEASE_TOKEN }} organization: warpdotdev - project: ${{ steps.get-config.outputs.sentry_project }} + project: galaxy-oss - name: Upload debugging symbols to Sentry if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} @@ -746,18 +676,18 @@ jobs: # Only upload the files from within `packages_dir`, don't include the # (parent) folder itself. parent: false - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} # IMPORTANT: both the key and value of the cache-control header must be all lowercase; # uppercase values will not be respected by Cloud CDN and using "Cache-Control" will be # ignored by the upload-cloud-storage action. headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload packages as workflow artifact if: ${{ needs.prepare_release.outputs.should_publish != 'true' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: release-linux-x86_64-${{ steps.get-config.outputs.channel }} + name: release-linux-x86_64-oss path: ${{ steps.bundle_app.outputs.packages_dir }} release_linux_cli_x86: @@ -779,7 +709,6 @@ jobs: is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} install_release_deps: true - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} # Install gcc 10, as gcc 9.5 has a bug with memcmp that is incompatible # with aws-lc-rs (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189). @@ -791,13 +720,6 @@ jobs: gcc --version g++ --version - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} @@ -850,17 +772,13 @@ jobs: script/bundle --channel "$CHANNEL" --artifact cli --packages deb,rpm --features galaxy_control_cli shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Package Galaxy CLI tar.gz id: package_cli run: | - if [[ "$CHANNEL" == "stable" ]]; then - command_name="galaxy-ai" - else - command_name="galaxy-ai-$CHANNEL" - fi + command_name="galaxy-ai-oss" archive="galaxy-ai-$CHANNEL-linux-x86_64.tar.gz" staging_dir="$(mktemp -d)" @@ -872,7 +790,7 @@ jobs: shell: bash env: BINARY_PATH: ${{ steps.bundle_cli.outputs.executable_path }} - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss RESOURCES_DIR: ${{ steps.bundle_cli.outputs.bundled_resources_dir }} - name: Create Galaxy Control wrapper @@ -881,30 +799,14 @@ jobs: script/bundle --channel "$CHANNEL" --artifact galaxyctrl --packages none --skip-build shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Package Galaxy Control tar.gz id: package_galaxyctrl run: | - case "$CHANNEL" in - stable) - command_name="galaxyctrl" - forwarded_binary_name="stable" - ;; - local|dev|preview) - command_name="galaxyctrl-$CHANNEL" - forwarded_binary_name="galaxy-$CHANNEL" - ;; - oss) - command_name="galaxyctrl-oss" - forwarded_binary_name="galaxy-oss" - ;; - *) - echo "Unsupported release channel: $CHANNEL" >&2 - exit 1 - ;; - esac + command_name="galaxyctrl-oss" + forwarded_binary_name="galaxy-oss" artifact_dir="$(dirname "$WRAPPER_PATH")" forwarded_binary_path="$artifact_dir/$forwarded_binary_name" @@ -922,14 +824,14 @@ jobs: echo "archive=$archive" >> "$GITHUB_OUTPUT" shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss RESOURCES_DIR: ${{ steps.bundle_galaxyctrl.outputs.bundled_resources_dir }} WRAPPER_PATH: ${{ steps.bundle_galaxyctrl.outputs.executable_path }} - name: Bundle Arch Linux CLI package uses: ./.github/actions/bundle_arch_package with: - channel: ${{ steps.get-config.outputs.channel }} + channel: oss release-tag: ${{ needs.prepare_release.outputs.release_tag }} arch: x86_64 artifact: cli @@ -947,7 +849,7 @@ jobs: with: token: ${{ secrets.SENTRY_RELEASE_TOKEN }} organization: warpdotdev - project: ${{ steps.get-config.outputs.sentry_project }} + project: galaxy-oss - name: Upload debugging symbols to Sentry if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} @@ -974,12 +876,12 @@ jobs: # Only upload the files from within `packages_dir`, don't include the # (parent) folder itself. parent: false - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} # IMPORTANT: both the key and value of the cache-control header must be all lowercase; # uppercase values will not be respected by Cloud CDN and using "Cache-Control" will be # ignored by the upload-cloud-storage action. headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Add Galaxy CLI tar.gz files to GitHub release assets if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} @@ -996,24 +898,24 @@ jobs: uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.package_cli.outputs.archive }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }}/cli/linux/x86_64 + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }}/cli/linux/x86_64 headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload Galaxy Control tar.gz to Google Cloud Storage if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.package_galaxyctrl.outputs.archive }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }}/cli/linux/x86_64 + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }}/cli/linux/x86_64 headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload Galaxy CLI packages as workflow artifact if: ${{ needs.prepare_release.outputs.should_publish != 'true' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: release-linux-cli-x86_64-${{ steps.get-config.outputs.channel }} + name: release-linux-cli-x86_64-oss path: | ${{ steps.bundle_cli.outputs.packages_dir }} ${{ steps.package_cli.outputs.archive }} @@ -1042,7 +944,6 @@ jobs: is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} install_release_deps: true - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} # Install gcc 10, as gcc 9.5 has a bug with memcmp that is incompatible # with aws-lc-rs (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189). @@ -1065,13 +966,6 @@ jobs: fi shell: bash - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} @@ -1092,7 +986,7 @@ jobs: script/bundle --channel $CHANNEL --packages appimage shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Package binaries @@ -1112,7 +1006,7 @@ jobs: - name: Archive build files uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: built-arm64-linux-${{steps.get-config.outputs.channel}} + name: built-arm64-linux-oss retention-days: 1 path: binaries.tar.gz @@ -1131,7 +1025,6 @@ jobs: is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} install_release_deps: true - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} # Install gcc 10, as gcc 9.5 has a bug with memcmp that is incompatible # with aws-lc-rs (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189). @@ -1143,13 +1036,6 @@ jobs: gcc --version g++ --version - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} @@ -1168,7 +1054,7 @@ jobs: script/bundle --channel "$CHANNEL" --artifact cli --packages none --arch aarch64 --features galaxy_control_cli shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Package binaries @@ -1188,7 +1074,7 @@ jobs: - name: Archive build files uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: built-arm64-linux-cli-${{steps.get-config.outputs.channel}} + name: built-arm64-linux-cli-oss retention-days: 1 path: binaries-cli.tar.gz @@ -1210,13 +1096,6 @@ jobs: with: ref: ${{ needs.prepare_release.outputs.release_branch }} - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093 # v3.0.0 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} @@ -1227,7 +1106,7 @@ jobs: with: token: ${{ secrets.SENTRY_RELEASE_TOKEN }} organization: warpdotdev - project: ${{ steps.get-config.outputs.sentry_project }} + project: galaxy-oss # Install gcc 10, as gcc 9.5 has a bug with memcmp that is incompatible # with aws-lc-rs (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95189). @@ -1297,7 +1176,7 @@ jobs: - name: Download app build artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: built-arm64-linux-${{steps.get-config.outputs.channel}} + name: built-arm64-linux-oss - name: Unpackage app binaries id: unpackage_app_binaries @@ -1313,13 +1192,13 @@ jobs: script/bundle --channel $CHANNEL --skip-build --packages deb,rpm --arch aarch64 shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Bundle Arch Linux app package uses: ./.github/actions/bundle_arch_package with: - channel: ${{ steps.get-config.outputs.channel }} + channel: oss release-tag: ${{ needs.prepare_release.outputs.release_tag }} arch: aarch64 @@ -1337,7 +1216,7 @@ jobs: - name: Download CLI build artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: built-arm64-linux-cli-${{steps.get-config.outputs.channel}} + name: built-arm64-linux-cli-oss - name: Unpackage CLI binaries id: unpackage_cli_binaries @@ -1351,17 +1230,13 @@ jobs: script/bundle --channel $CHANNEL --skip-build --arch aarch64 --packages deb,rpm --artifact cli shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Package Galaxy CLI tar.gz id: package_cli run: | - if [[ "$CHANNEL" == "stable" ]]; then - command_name="galaxy-ai" - else - command_name="galaxy-ai-$CHANNEL" - fi + command_name="galaxy-ai-oss" archive="galaxy-ai-$CHANNEL-linux-aarch64.tar.gz" staging_dir="$(mktemp -d)" @@ -1373,7 +1248,7 @@ jobs: shell: bash env: BINARY_PATH: ${{ steps.bundle_cli.outputs.executable_path }} - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss RESOURCES_DIR: ${{ steps.bundle_cli.outputs.bundled_resources_dir }} - name: Create Galaxy Control wrapper @@ -1382,30 +1257,14 @@ jobs: script/bundle --channel "$CHANNEL" --skip-build --arch aarch64 --packages none --artifact galaxyctrl shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Package Galaxy Control tar.gz id: package_galaxyctrl run: | - case "$CHANNEL" in - stable) - command_name="galaxyctrl" - forwarded_binary_name="stable" - ;; - local|dev|preview) - command_name="galaxyctrl-$CHANNEL" - forwarded_binary_name="galaxy-$CHANNEL" - ;; - oss) - command_name="galaxyctrl-oss" - forwarded_binary_name="galaxy-oss" - ;; - *) - echo "Unsupported release channel: $CHANNEL" >&2 - exit 1 - ;; - esac + command_name="galaxyctrl-oss" + forwarded_binary_name="galaxy-oss" artifact_dir="$(dirname "$WRAPPER_PATH")" forwarded_binary_path="$artifact_dir/$forwarded_binary_name" @@ -1423,14 +1282,14 @@ jobs: echo "archive=$archive" >> "$GITHUB_OUTPUT" shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss RESOURCES_DIR: ${{ steps.bundle_galaxyctrl.outputs.bundled_resources_dir }} WRAPPER_PATH: ${{ steps.bundle_galaxyctrl.outputs.executable_path }} - name: Bundle Arch Linux CLI package uses: ./.github/actions/bundle_arch_package with: - channel: ${{ steps.get-config.outputs.channel }} + channel: oss release-tag: ${{ needs.prepare_release.outputs.release_tag }} arch: aarch64 artifact: cli @@ -1487,12 +1346,12 @@ jobs: with: path: ${{ steps.bundle_app.outputs.packages_dir }} parent: false - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} # IMPORTANT: both the key and value of the cache-control header must be all lowercase; # uppercase values will not be respected by Cloud CDN and using "Cache-Control" will be # ignored by the upload-cloud-storage action. headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload CLI packages to Google Cloud Storage uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 @@ -1500,36 +1359,36 @@ jobs: with: path: ${{ steps.bundle_cli.outputs.packages_dir }} parent: false - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} # IMPORTANT: both the key and value of the cache-control header must be all lowercase; # uppercase values will not be respected by Cloud CDN and using "Cache-Control" will be # ignored by the upload-cloud-storage action. headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload Galaxy CLI tar.gz to Google Cloud Storage if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.package_cli.outputs.archive }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }}/cli/linux/aarch64 + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }}/cli/linux/aarch64 headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload Galaxy Control tar.gz to Google Cloud Storage if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.package_galaxyctrl.outputs.archive }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }}/cli/linux/aarch64 + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }}/cli/linux/aarch64 headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload packages as workflow artifact if: ${{ needs.prepare_release.outputs.should_publish != 'true' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: release-linux-arm64-${{ steps.get-config.outputs.channel }} + name: release-linux-arm64-oss path: | ${{ steps.bundle_app.outputs.packages_dir }} ${{ steps.package_cli.outputs.archive }} @@ -1549,14 +1408,6 @@ jobs: target_os: wasm is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} - - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - name: Bundle app id: bundle_app @@ -1564,7 +1415,7 @@ jobs: script/wasm/bundle --channel $CHANNEL shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Brotli compress app bundle @@ -1583,7 +1434,7 @@ jobs: with: token: ${{ secrets.SENTRY_RELEASE_TOKEN }} organization: warpdotdev - project: ${{ steps.get-config.outputs.sentry_project }} + project: galaxy-oss - name: Upload debugging symbols to Sentry if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} @@ -1616,12 +1467,12 @@ jobs: # (parent) folder itself. gzip: false parent: false - destination: ${{ steps.get-config.outputs.web_gcs_bucket_prefix }}-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} # IMPORTANT: both the key and value of the cache-control header must be all lowercase; # uppercase values will not be respected by Cloud CDN and using "Cache-Control" will be # ignored by the upload-cloud-storage action. headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable content-encoding: br - name: Upload assets to Google Cloud Storage @@ -1632,7 +1483,7 @@ jobs: parent: false # All asset filenames contain the file hash for cashing purposes, so we store them all in # one directory so they can be cached across releases. - destination: ${{ steps.get-config.outputs.web_gcs_bucket_prefix }}-static-assets/ + destination: warp-static-assets/ # IMPORTANT: both the key and value of the cache-control header must be all lowercase; # uppercase values will not be respected by Cloud CDN and using "Cache-Control" will be # ignored by the upload-cloud-storage action. @@ -1646,7 +1497,7 @@ jobs: if: ${{ needs.prepare_release.outputs.should_publish != 'true' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: release-web-${{ steps.get-config.outputs.channel }} + name: release-web-oss path: ${{ steps.bundle_app.outputs.packages_dir }} release_windows: @@ -1676,26 +1527,18 @@ jobs: is_self_hosted: false ref: ${{ needs.prepare_release.outputs.release_branch }} install_release_deps: true - ssh_key: ${{ secrets.WARP_CHANNEL_CONFIG_ACCESS_SSH_KEY }} - name: Add arm64 target if: ${{ matrix.arch == 'arm64' }} run: rustup target add aarch64-pc-windows-msvc shell: bash - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - name: Build binary id: build_binary run: script/bundle -Channel $CHANNEL -skip_build_installer --arch ${{ matrix.arch }} shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} - name: Sign the executables with Azure Trusted Signing @@ -1748,7 +1591,7 @@ jobs: run: script/bundle -Channel $CHANNEL -skip_build_binary --arch ${{ matrix.arch }} shell: bash env: - CHANNEL: ${{ steps.get-config.outputs.channel }} + CHANNEL: oss GIT_RELEASE_TAG: ${{ needs.prepare_release.outputs.release_tag }} AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} @@ -1761,7 +1604,7 @@ jobs: with: token: ${{ secrets.SENTRY_RELEASE_TOKEN }} organization: warpdotdev - project: ${{ steps.get-config.outputs.sentry_project }} + project: galaxy-oss - name: Upload binary to Sentry if: ${{ needs.prepare_release.outputs.should_publish == 'true' }} @@ -1798,18 +1641,18 @@ jobs: uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: ${{ steps.bundle_app.outputs.installer_path }} - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} # IMPORTANT: both the key and value of the cache-control header must be all lowercase; # uppercase values will not be respected by Cloud CDN and using "Cache-Control" will be # ignored by the upload-cloud-storage action. headers: |- - cache-control: ${{ steps.get-config.outputs.gcs_cache_control_value }} + cache-control: public, max-age=604800, immutable - name: Upload installer as workflow artifact if: ${{ needs.prepare_release.outputs.should_publish != 'true' }} uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: - name: release-windows-${{ matrix.arch }}-${{ steps.get-config.outputs.channel }} + name: release-windows-${{ matrix.arch }}-oss path: ${{ steps.bundle_app.outputs.installer_path }} send_slack_notif_if_unsuccessful: @@ -1850,7 +1693,7 @@ jobs: if [[ ${{ needs.release_linux_cli_x86.result }} != 'success' ]]; then FAILED+=("Linux CLI x86_64") fi - if [[ ${{ needs.release_web.result }} != 'success' && ${{ inputs.channel }} != 'preview' ]]; then + if [[ ${{ needs.release_web.result }} != 'success' ]]; then FAILED+=("WASM") fi if [[ ${{ needs.release_windows.result }} != 'success' ]]; then @@ -1869,7 +1712,7 @@ jobs: channel-id: "#oncall-client" # Follows https://api.slack.com/reference/surfaces/formatting#mentioning-users. # S06N82RS7FA is the user group ID for @oncall-client-eng. - slack-message: "Failed to create ${{ steps.failed_releases.outputs.failed }} release artifacts for ${{ inputs.channel }}. See https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}. cc: " + slack-message: "Failed to create ${{ steps.failed_releases.outputs.failed }} release artifacts for oss. See https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}. cc: " env: SLACK_BOT_TOKEN: ${{ secrets.ACTION_MONITORING_SLACK }} @@ -1895,23 +1738,12 @@ jobs: # in order to generate the changelog. fetch-depth: 0 - - name: Get channel configuration - id: get-config - uses: ./.github/actions/get_channel_config/ - with: - config_file: ${{ env.CONFIG_FILE }} - channel: ${{ inputs.channel }} - - # Stable releases use the Oz changelog-draft agent for higher-quality, - # human-reviewable output. Non-stable channels (dev/preview/beta) use the - # legacy generate-changelog action to avoid spending Oz agent tokens on - # daily dev cuts and preview RCs. - - name: Generate changelog via Oz (stable only) - if: inputs.channel == 'stable' + # Generate the OSS changelog using the reviewable Oz workflow. + - name: Generate changelog via Oz uses: warpdotdev/oz-agent-action@ce1621abf6a8ed8afdd4e4cc994545ede8fe1c6f # main with: prompt: | - Generate a changelog draft for the ${{ inputs.channel }} channel, release tag ${{ needs.prepare_release.outputs.release_tag }}. + Generate a changelog draft for the Galaxy OSS release, release tag ${{ needs.prepare_release.outputs.release_tag }}. Output directory: ${{ runner.temp }}/changelog-draft @@ -1924,8 +1756,7 @@ jobs: You are running in a GitHub Actions workflow. The repo is checked out at the default branch (HEAD) with full history. Use the release_tag input as the git range endpoint — do NOT check out the release tag. `gh` is authenticated. Do not commit, push, or create PRs. warp_api_key: ${{ secrets.WARP_API_KEY }} share: team - - name: Upload raw Markdown changelog artifact (stable only) - if: inputs.channel == 'stable' + - name: Upload raw Markdown changelog artifact id: upload_changelog_draft_markdown uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 with: @@ -1933,60 +1764,28 @@ jobs: path: ${{ runner.temp }}/changelog-draft/changelog-draft.md if-no-files-found: error - - name: Convert draft JSON to release format (stable only) - if: inputs.channel == 'stable' + - name: Convert draft JSON to release format shell: bash run: | python3 .agents/skills/changelog-draft/scripts/convert_to_release_json.py \ --input "${{ runner.temp }}/changelog-draft/changelog-draft.json" \ --output "${{ runner.temp }}/changelog-draft/changelog-release.json" - - name: Obtain a GitHub App Installation Access Token (non-stable only) - if: inputs.channel != 'stable' - id: github_app_auth - run: | - TOKEN="$(npx obtain-github-app-installation-access-token ci ${{ secrets.GH_APP_CREDENTIALS_TOKEN }})" - echo "::add-mask::$TOKEN" - echo "token=$TOKEN" >> $GITHUB_OUTPUT - - - name: Generate changelog via legacy action (non-stable only) - if: inputs.channel != 'stable' - id: legacy_changelog - uses: warpdotdev/generate-changelog@70f534c1e030dafb45046ae57e4aa4d43a2f5c84 # main - with: - channel: ${{ inputs.channel }} - github_auth_token: ${{ steps.github_app_auth.outputs.token }} - version: ${{ needs.prepare_release.outputs.release_tag }} - - name: Load changelog into step output id: generate_changelog shell: bash - env: - LEGACY_CHANGELOG: ${{ steps.legacy_changelog.outputs.changelog }} run: | - # Bridge step: picks whichever generator ran for this channel and - # re-emits the changelog as outputs.changelog so downstream Slack/GCS - # steps work unchanged. - if [[ "${{ inputs.channel }}" == "stable" ]]; then - CHANGELOG_FILE="${{ runner.temp }}/changelog-draft/changelog-release.json" - if [ ! -f "$CHANGELOG_FILE" ]; then - echo "::error::changelog-release.json not found at $CHANGELOG_FILE" - exit 1 - fi - jq empty "$CHANGELOG_FILE" - { - echo "changelog<> $GITHUB_OUTPUT - else - echo "$LEGACY_CHANGELOG" | jq empty - { - echo "changelog<> $GITHUB_OUTPUT + CHANGELOG_FILE="${{ runner.temp }}/changelog-draft/changelog-release.json" + if [ ! -f "$CHANGELOG_FILE" ]; then + echo "::error::changelog-release.json not found at $CHANGELOG_FILE" + exit 1 fi + jq empty "$CHANGELOG_FILE" + { + echo "changelog<> "$GITHUB_OUTPUT" - name: Build Slack changelog payload id: build_slack_payload @@ -2023,7 +1822,7 @@ jobs: # in Cloud Storage.) continue-on-error: true with: - channel-id: ${{ steps.get-config.outputs.changelog_slack_channel }} + channel-id: "#release" payload: ${{ steps.build_slack_payload.outputs.payload }} env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_CHANGELOG_BOT }} @@ -2060,4 +1859,4 @@ jobs: uses: google-github-actions/upload-cloud-storage@e95a15f226403ed658d3e65f40205649f342ba2c # v1 with: path: changelog.json - destination: warp-releases/${{ steps.get-config.outputs.channel }}/${{ needs.prepare_release.outputs.release_tag }} + destination: warp-releases/oss/${{ needs.prepare_release.outputs.release_tag }} diff --git a/.github/workflows/cut_new_release_candidate.yml b/.github/workflows/cut_new_release_candidate.yml index d670044c..30bc168b 100644 --- a/.github/workflows/cut_new_release_candidate.yml +++ b/.github/workflows/cut_new_release_candidate.yml @@ -1,42 +1,29 @@ -# A workflow to cut a new release candidate (i.e.: .stable_01) on the current -# release branch. -# -# The channel will be automatically determined from the branch name (i.e.: when -# run on a stable_release/* branch, it will assume it is building a new "stable" -# channel candidate). +# A workflow to cut a Galaxy OSS release candidate on the OSS release branch. name: Cut New Release Candidate on: workflow_dispatch: jobs: - compute_channel: - name: Compute release channel + verify_release_branch: + name: Verify OSS release branch runs-on: ubuntu-latest - outputs: - channel: ${{ steps.compute-channel.outputs.channel }} steps: - - name: "Compute release channel" - id: compute-channel + - name: Verify branch run: | - # Check whether the current branch name starts with "some_release/", - # and if so, extract the value of "some" into the CHANNEL variable, - # discarding the rest of the branch name. - CHANNEL="$(echo $GITHUB_REF_NAME | sed -r 's|^(\w+)_release/.*$|\1|')" - # If the sed expression doesn't match the input, it will write out the - # input, unmodified. - if [[ $CHANNEL == $GITHUB_REF_NAME ]]; then - echo "::error::Can only create new release candidates on a release branch" && exit 1 - fi - echo "channel=$CHANNEL" >> $GITHUB_OUTPUT + case "$GITHUB_REF_NAME" in + oss_release/*) ;; + *) + echo "::error::Can only create OSS release candidates on an oss_release/* branch" + exit 1 + ;; + esac shell: bash create_release_candidate: - name: Create Release Candidate + name: Create OSS Release Candidate uses: ./.github/workflows/create_release.yml - needs: compute_channel - with: - channel: ${{ needs.compute_channel.outputs.channel }} + needs: verify_release_branch secrets: inherit update_channel_versions: diff --git a/.github/workflows/cut_new_releases.yml b/.github/workflows/cut_new_releases.yml index 65a115ce..6716f2be 100644 --- a/.github/workflows/cut_new_releases.yml +++ b/.github/workflows/cut_new_releases.yml @@ -1,8 +1,4 @@ -# A workflow to cut new releases (i.e.: .stable_00) for various release -# channels. -# -# Supports cutting releases for nightly release channels, weekly release -# channels, or all release channels. Releases run in parallel where able. +# A workflow to cut the Galaxy OSS release. name: Cut New Releases on: @@ -11,72 +7,21 @@ on: - cron: "0 8 * * *" workflow_dispatch: - inputs: - targets: - type: choice - description: Which releases to build. Nightly = dev; Weekly = preview/stable. - options: - - nightly - - weekly - - all - -env: - CONFIG_FILE: ".github/workflows/release_configurations.json" - # The day of the week when the weekly release should be cut. This is a value - # from 1-7, with 1 representing Monday, 2 representing Tuesday, etc. - WEEKLY_RELEASE_DAY: 3 # Cut weekly builds on Wednesdays. jobs: - get_config: - name: Get release configuration + verify_master: + name: Verify master branch runs-on: ubuntu-latest - env: - SCHEDULE: ${{ github.event.schedule }} - TARGETS: ${{ inputs.targets }} - outputs: - channels: ${{ steps.get-config.outputs.channels }} steps: - name: Check for master branch run: | - [ $GITHUB_REF == "refs/heads/master" ] || (echo "::error::Can only cut new releases on the master branch" && exit 1) - shell: bash - - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - - id: get-config - run: | - # Check to see if this was auto-run as a cron job. If so, set the - # value of TARGETS based on whether the current day of the week - # is when we build weekly releases (in addition to nightly ones). - if [[ ! -z "$SCHEDULE" ]]; then - if [[ "$(date +%u)" == "$WEEKLY_RELEASE_DAY" ]]; then - TARGETS="all" - else - TARGETS="nightly" - fi - fi - - echo ::echo::on - if [[ "$TARGETS" == "all" ]]; then - TARGETS="$(jq -rc '[.channels[] | .type] | unique' $CONFIG_FILE)" - else - TARGETS="[\"$TARGETS\"]" - fi - export CHANNELS="$(jq -rc '[.channels[] | select(.type | inside($ENV.TARGETS)) | .channel]' $CONFIG_FILE)" - echo "channels=$CHANNELS" >> $GITHUB_OUTPUT - # CHANNELS_INCLUDE_AUTOPUSH=$(jq -rc '[.channels[] | select(.channel | inside($ENV.CHANNELS)) | .is_autopush] | any' $CONFIG_FILE) - # echo "channels-include-autopush=$CHANNELS_INCLUDE_AUTOPUSH" >> $GITHUB_OUTPUT - echo ::echo::off + [ "$GITHUB_REF" = "refs/heads/master" ] || (echo "::error::Can only cut new releases on the master branch" && exit 1) shell: bash create_release: - name: Create Release + name: Create OSS Release uses: ./.github/workflows/create_release.yml - needs: get_config - strategy: - fail-fast: false - matrix: - channel: ${{ fromJSON(needs.get_config.outputs.channels) }} - with: - channel: ${{ matrix.channel }} + needs: verify_master secrets: inherit update_channel_versions: diff --git a/.github/workflows/delete_release.yml b/.github/workflows/delete_release.yml index 6c0cf43b..87dece04 100644 --- a/.github/workflows/delete_release.yml +++ b/.github/workflows/delete_release.yml @@ -1,12 +1,11 @@ # A workflow to delete (soft-delete) a release branch by renaming it. # # The branch will be renamed from its original name to deleted/{original_name}. -# For example, stable_release/v0.2025.01.01.00.00 becomes -# deleted/stable_release/v0.2025.01.01.00.00. +# For example, oss_release/v0.2025.01.01.00.00 becomes +# deleted/oss_release/v0.2025.01.01.00.00. # # This workflow will fail if: -# - The branch doesn't start with a release channel prefix -# (i.e.: stable_release/, preview_release/, or dev_release/) +# - The branch doesn't start with the oss_release/ prefix # - The release has an entry in channel_versions.json (i.e., it's deployed) name: Delete Release @@ -14,7 +13,7 @@ on: workflow_dispatch: inputs: branch: - description: 'The release branch to delete (e.g., stable_release/v0.2025.01.01.00.00.stable)' + description: 'The OSS release branch to delete (e.g., oss_release/v0.2025.01.01.00.00.oss)' required: true type: string confirmation: @@ -41,15 +40,15 @@ jobs: run: | BRANCH_NAME="${{ inputs.branch }}" - # Validate branch is a release branch and extract the channel - if [[ ! "$BRANCH_NAME" =~ ^(stable|preview|dev)_release/ ]]; then - echo "::error::Branch '$BRANCH_NAME' is not a release branch." && exit 1 + # Validate that this is an OSS release branch. + if [[ ! "$BRANCH_NAME" =~ ^oss_release/ ]]; then + echo "::error::Branch '$BRANCH_NAME' is not an OSS release branch." && exit 1 fi - CHANNEL="${BASH_REMATCH[1]}" + CHANNEL="oss" # Extract the version base from the branch name - # e.g., "stable_release/v0.2025.01.26.12.30.stable" -> "v0.2025.01.26.12.30.stable" - VERSION_BASE="$(echo $BRANCH_NAME | sed -r 's|^\w+_release/(.*)$|\1|')" + # e.g., "oss_release/v0.2025.01.26.12.30.oss" -> "v0.2025.01.26.12.30.oss" + VERSION_BASE="$(echo "$BRANCH_NAME" | sed -r 's|^oss_release/(.*)$|\1|')" echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT echo "new_branch_name=deleted/$BRANCH_NAME" >> $GITHUB_OUTPUT diff --git a/.github/workflows/release_configurations.json b/.github/workflows/release_configurations.json deleted file mode 100644 index c756eb09..00000000 --- a/.github/workflows/release_configurations.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "documentation": "See the README.md file in this directory.", - "channels": [ - { - "channel": "dev", - "type": "nightly", - "is_prerelease": true, - "is_autopush": true, - "release_base_name": "Dev Release", - "release_body_text": "Nightly Galaxy Dev release", - "sentry_project": "warp-client-dev", - "sentry_environment": "dev_release", - "changelog_slack_channel": "#dev-beta-changelogs", - "gcs_cache_control_value": "private, max-age=604800, immutable", - "web_gcs_bucket_prefix": "warp-server-staging" - }, - { - "channel": "preview", - "type": "weekly", - "is_prerelease": false, - "is_autopush": false, - "release_base_name": "Preview Release", - "release_body_text": "Galaxy Preview release", - "sentry_project": "warp-client-beta-stable", - "sentry_environment": "preview_release", - "changelog_slack_channel": "#dev-beta-changelogs", - "gcs_cache_control_value": "public, max-age=604800, immutable", - "web_gcs_bucket_prefix": "warp" - }, - { - "channel": "stable", - "type": "weekly", - "is_prerelease": false, - "is_autopush": false, - "release_base_name": "Stable Release", - "release_body_text": "Galaxy Stable release", - "sentry_project": "warp-client-beta-stable", - "sentry_environment": "stable_release", - "changelog_slack_channel": "#release", - "gcs_cache_control_value": "public, max-age=604800, immutable", - "web_gcs_bucket_prefix": "warp" - } - ] -} diff --git a/.vscode/launch.json b/.vscode/launch.json index 30320e68..1feaaf7b 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,11 +14,11 @@ { "type": "lldb", "request": "launch", - "name": "Debug executable 'warp'", + "name": "Debug executable 'galaxy-oss'", "cargo": { - "args": ["build", "--bin=warp"], + "args": ["build", "--bin=galaxy-oss"], "filter": { - "name": "warp", + "name": "galaxy-oss", "kind": "bin" } }, @@ -29,9 +29,9 @@ { "type": "lldb", "request": "launch", - "name": "Debug MacOS executable", - "preLaunchTask": "build_warplocal", - "program": "${workspaceFolder}/target/debug/bundle/osx/WarpLocal.app/Contents/MacOS/warp", + "name": "Debug macOS Galaxy OSS executable", + "preLaunchTask": "build_galaxyoss", + "program": "${workspaceFolder}/target/debug/bundle/osx/Galaxy.app/Contents/MacOS/galaxy-oss", "args": [], "cwd": "${workspaceFolder}", "sourceLanguages": ["rust"] @@ -39,11 +39,11 @@ { "type": "lldb", "request": "launch", - "name": "Debug executable 'warp' with fast_dev", + "name": "Debug executable 'galaxy-oss' with fast_dev", "cargo": { - "args": ["build", "--bin=warp", "--features=fast_dev"], + "args": ["build", "--bin=galaxy-oss", "--features=fast_dev"], "filter": { - "name": "warp", + "name": "galaxy-oss", "kind": "bin" } }, @@ -54,37 +54,12 @@ { "type": "lldb", "request": "launch", - "name": "Debug executable 'warp' with with_local_server", - "cargo": { - "args": ["build", "--bin=warp", "--features=with_local_server"], - "filter": { - "name": "warp", - "kind": "bin" - } - }, - "args": [], - "cwd": "${workspaceFolder}", - "sourceLanguages": ["rust"] - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug MacOS executable local session sharing server", - "preLaunchTask": "build_warplocal_localsessionsharing", - "program": "${workspaceFolder}/target/debug/bundle/osx/WarpLocal.app/Contents/MacOS/warp", - "args": [], - "cwd": "${workspaceFolder}", - "sourceLanguages": ["rust"] - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug MacOS executable with fast_dev", + "name": "Debug macOS Galaxy OSS executable with fast_dev", "env": { "RUST_BACKTRACE": "1" }, - "preLaunchTask": "build_warplocal_fastdev", - "program": "${workspaceFolder}/target/debug/bundle/osx/WarpLocal.app/Contents/MacOS/warp", + "preLaunchTask": "build_galaxyoss_fastdev", + "program": "${workspaceFolder}/target/debug/bundle/osx/Galaxy.app/Contents/MacOS/galaxy-oss", "args": [], "cwd": "${workspaceFolder}", "sourceLanguages": ["rust"] @@ -92,21 +67,11 @@ { "type": "lldb", "request": "launch", - "name": "Debug MacOS executable with fast_dev + local session sharing server", - "preLaunchTask": "build_warplocal_fastdev_localsessionsharing", - "program": "${workspaceFolder}/target/debug/bundle/osx/WarpLocal.app/Contents/MacOS/warp", - "args": [], - "cwd": "${workspaceFolder}", - "sourceLanguages": ["rust"] - }, - { - "type": "lldb", - "request": "launch", - "name": "Debug unit tests in executable 'warp'", + "name": "Debug unit tests in executable 'galaxy-oss'", "cargo": { - "args": ["test", "--no-run", "--bin=warp", "--package=warp"], + "args": ["test", "--no-run", "--bin=galaxy-oss", "--package=galaxy"], "filter": { - "name": "warp", + "name": "galaxy-oss", "kind": "bin" } }, @@ -119,7 +84,7 @@ "request": "launch", "name": "Debug integration tests in executable 'integration'", "cargo": { - "args": ["build", "--bin=integration", "--package=warp"], + "args": ["build", "--bin=integration", "--package=integration"], "env": { "WARPUI_USE_REAL_DISPLAY_IN_INTEGRATION_TESTS": "1" }, diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 0b28168d..3caeba8b 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -24,22 +24,12 @@ { "type": "shell", "command": "./script/run --dont-open", - "label": "build_warplocal" + "label": "build_galaxyoss" }, { "type": "shell", "command": "./script/run --dont-open --features fast_dev", - "label": "build_warplocal_fastdev" - }, - { - "type": "shell", - "command": "./script/run --dont-open --features fast_dev,with_local_session_sharing_server", - "label": "build_warplocal_fastdev_localsessionsharing" - }, - { - "type": "shell", - "command": "./script/run --dont-open --features with_local_session_sharing_server", - "label": "build_warplocal_localsessionsharing" + "label": "build_galaxyoss_fastdev" } // TODO: If adding more configs that just add feature flags, consider argument passing from launch.json to tasks.json ] diff --git a/Cargo.lock b/Cargo.lock index 266ee73d..866d9b67 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5958,7 +5958,6 @@ dependencies = [ "warp-command-signatures", "warp-workflows", "warp_assets", - "warp_channel_config", "warp_multi_agent_api", "warp_search_core", "warp_server_auth", @@ -16992,15 +16991,6 @@ dependencies = [ "rust-embed 8.12.0", ] -[[package]] -name = "warp_channel_config" -version = "0.0.0" -dependencies = [ - "command", - "galaxy_core", - "serde_json", -] - [[package]] name = "warp_multi_agent_api" version = "0.0.0" @@ -17083,7 +17073,6 @@ dependencies = [ "string-offset", "sum_tree", "vec1", - "warp_channel_config", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index fe1dfbf9..0f2de452 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -81,7 +81,6 @@ virtual-fs = { path = "crates/virtual_fs" } voice_input = { path = "crates/voice_input" } galaxy = { path = "app" } warp_assets = { path = "crates/warp_assets" } -warp_channel_config = { path = "crates/warp_channel_config" } galaxy_cli = { path = "crates/galaxy_cli" } galaxy_completer = { path = "crates/galaxy_completer" } galaxy_core = { path = "crates/galaxy_core" } diff --git a/app/Cargo.toml b/app/Cargo.toml index 4c744edf..48363f14 100644 --- a/app/Cargo.toml +++ b/app/Cargo.toml @@ -13,9 +13,8 @@ license.workspace = true name = "galaxy" path = "src/lib.rs" -# We define separate targets for each channel (stable, preview, dev) so that we can -# bundle with its own icon, app name, and channel-specific configuration (such as -# flag overrides). Otherwise these binaries are exactly identical to our main binary. +# The OSS target is the shipped desktop application. Its identity and production +# configuration are defined in app/src/bin/oss.rs. [[bin]] name = "galaxy-oss" @@ -205,7 +204,6 @@ vte.workspace = true walkdir.workspace = true warp-workflows.workspace = true warp_assets.workspace = true -warp_channel_config.workspace = true galaxy_completer.workspace = true galaxy_core.workspace = true galaxy_agent_core.workspace = true @@ -951,7 +949,7 @@ prompt_cache_expiry_warning = [] [package.metadata.bundle.bin.galaxy-oss] category = "public.app-category.developer-tools" copyright = "© 2026, Samsung Electronics Co., Ltd." -identifier = "samsung.galaxy.GalaxyOss" +identifier = "com.galaxy.GalaxyOss" name = "Galaxy" resources = ["assets/onboarding"] icon = ["channels/oss/icon/no-padding/512x512.png", "channels/oss/icon/no-padding/icon.ico"] diff --git a/app/DockTilePlugin/Info.plist b/app/DockTilePlugin/Info.plist index c91c76f3..108daf6f 100644 --- a/app/DockTilePlugin/Info.plist +++ b/app/DockTilePlugin/Info.plist @@ -3,7 +3,7 @@ CFBundleIdentifier - samsung.galaxy.GalaxyDockTilePlugin + com.galaxy.GalaxyDockTilePlugin CFBundleExecutable GalaxyDockTilePlugin CFBundleName diff --git a/app/build.rs b/app/build.rs index 335ca9ca..1806f92f 100644 --- a/app/build.rs +++ b/app/build.rs @@ -352,13 +352,7 @@ fn embed_resource_file(target_dir: &Path) { let version = env::var("GIT_RELEASE_TAG").unwrap_or("v0".to_owned()); let app_name = env::var("GALAXY_APP_NAME").unwrap_or("Galaxy".to_owned()); - let bin_name = env::var("CARGO_BIN_NAME").unwrap_or("local".to_owned()); - - let icon_path = Path::new("channels") - .join(bin_name) - .join("icon") - .join("no-padding") - .join("icon.ico"); + let icon_path = Path::new("channels/oss/icon/no-padding/icon.ico"); fs::copy(icon_path, target_dir.join("icon.ico")) .unwrap_or_else(|err| panic!("Could not copy icon: {err:#}")); diff --git a/app/channels/dev/dev.galaxy.GalaxyDev.desktop b/app/channels/dev/dev.galaxy.GalaxyDev.desktop deleted file mode 100644 index 9261cd8f..00000000 --- a/app/channels/dev/dev.galaxy.GalaxyDev.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=GalaxyDev -GenericName=TerminalEmulator - -Exec=galaxy-terminal-dev %U -StartupWMClass=dev.galaxy.GalaxyDev - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.galaxy.GalaxyDev - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for galaxydev:// URLs. -MimeType=x-scheme-handler/galaxydev; diff --git a/app/channels/dev/dev.warp.WarpDev.desktop b/app/channels/dev/dev.warp.WarpDev.desktop deleted file mode 100644 index 23d89670..00000000 --- a/app/channels/dev/dev.warp.WarpDev.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=WarpDev -GenericName=TerminalEmulator - -Exec=warp-terminal-dev %U -StartupWMClass=dev.warp.WarpDev - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.warp.WarpDev - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for warpdev:// URLs. -MimeType=x-scheme-handler/warpdev; diff --git a/app/channels/dev/icon/AppIcon.icon/Assets/Glyph.svg b/app/channels/dev/icon/AppIcon.icon/Assets/Glyph.svg deleted file mode 100644 index 62f06bc6..00000000 --- a/app/channels/dev/icon/AppIcon.icon/Assets/Glyph.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/channels/dev/icon/AppIcon.icon/Assets/Guidelines.svg b/app/channels/dev/icon/AppIcon.icon/Assets/Guidelines.svg deleted file mode 100644 index 7b0774c3..00000000 --- a/app/channels/dev/icon/AppIcon.icon/Assets/Guidelines.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/app/channels/dev/icon/AppIcon.icon/Assets/PLACE HERE.png b/app/channels/dev/icon/AppIcon.icon/Assets/PLACE HERE.png deleted file mode 100644 index 7e639f0c..00000000 Binary files a/app/channels/dev/icon/AppIcon.icon/Assets/PLACE HERE.png and /dev/null differ diff --git a/app/channels/dev/icon/AppIcon.icon/icon.json b/app/channels/dev/icon/AppIcon.icon/icon.json deleted file mode 100644 index 0a53fb34..00000000 --- a/app/channels/dev/icon/AppIcon.icon/icon.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "fill" : "system-dark", - "groups" : [ - { - "layers" : [ - { - "fill-specializations" : [ - { - "value" : "none" - }, - { - "appearance" : "dark", - "value" : "none" - } - ], - "image-name" : "Glyph.svg", - "name" : "Glyph" - }, - { - "glass" : false, - "image-name" : "Guidelines.svg", - "name" : "Guidelines" - }, - { - "fill" : "none", - "image-name" : "PLACE HERE.png", - "name" : "PLACE HERE" - } - ], - "shadow" : { - "kind" : "neutral", - "opacity" : 0.5 - }, - "translucency" : { - "enabled" : true, - "value" : 0.5 - } - } - ], - "supported-platforms" : { - "circles" : [ - "watchOS" - ], - "squares" : "shared" - } -} \ No newline at end of file diff --git a/app/channels/dev/icon/no-padding/128x128.png b/app/channels/dev/icon/no-padding/128x128.png deleted file mode 100644 index 622d6579..00000000 Binary files a/app/channels/dev/icon/no-padding/128x128.png and /dev/null differ diff --git a/app/channels/dev/icon/no-padding/16x16.png b/app/channels/dev/icon/no-padding/16x16.png deleted file mode 100644 index b2669eee..00000000 Binary files a/app/channels/dev/icon/no-padding/16x16.png and /dev/null differ diff --git a/app/channels/dev/icon/no-padding/256x256.png b/app/channels/dev/icon/no-padding/256x256.png deleted file mode 100644 index d6b33153..00000000 Binary files a/app/channels/dev/icon/no-padding/256x256.png and /dev/null differ diff --git a/app/channels/dev/icon/no-padding/32x32.png b/app/channels/dev/icon/no-padding/32x32.png deleted file mode 100644 index 4d7c1d76..00000000 Binary files a/app/channels/dev/icon/no-padding/32x32.png and /dev/null differ diff --git a/app/channels/dev/icon/no-padding/48x48.png b/app/channels/dev/icon/no-padding/48x48.png deleted file mode 100644 index f280a8ea..00000000 Binary files a/app/channels/dev/icon/no-padding/48x48.png and /dev/null differ diff --git a/app/channels/dev/icon/no-padding/512x512.png b/app/channels/dev/icon/no-padding/512x512.png deleted file mode 100644 index 6dbc3837..00000000 Binary files a/app/channels/dev/icon/no-padding/512x512.png and /dev/null differ diff --git a/app/channels/dev/icon/no-padding/64x64.png b/app/channels/dev/icon/no-padding/64x64.png deleted file mode 100644 index d467bb86..00000000 Binary files a/app/channels/dev/icon/no-padding/64x64.png and /dev/null differ diff --git a/app/channels/dev/icon/no-padding/icon.ico b/app/channels/dev/icon/no-padding/icon.ico deleted file mode 100644 index b3cb30fa..00000000 Binary files a/app/channels/dev/icon/no-padding/icon.ico and /dev/null differ diff --git a/app/channels/local/dev.galaxy.GalaxyLocal.desktop b/app/channels/local/dev.galaxy.GalaxyLocal.desktop deleted file mode 100644 index e2f2ff11..00000000 --- a/app/channels/local/dev.galaxy.GalaxyLocal.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=GalaxyLocal -GenericName=TerminalEmulator - -Exec=galaxy-terminal-local %U -StartupWMClass=dev.galaxy.GalaxyLocal - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.galaxy.GalaxyLocal - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for galaxylocal:// URLs. -MimeType=x-scheme-handler/galaxylocal; diff --git a/app/channels/local/dev.warp.WarpLocal.desktop b/app/channels/local/dev.warp.WarpLocal.desktop deleted file mode 100644 index 0c888bb8..00000000 --- a/app/channels/local/dev.warp.WarpLocal.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=WarpLocal -GenericName=TerminalEmulator - -Exec=warp-terminal-local %U -StartupWMClass=dev.warp.WarpLocal - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.warp.WarpLocal - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for warplocal:// URLs. -MimeType=x-scheme-handler/warplocal; diff --git a/app/channels/local/icon/AppIcon.icon/Assets/warp-glyph 3.svg b/app/channels/local/icon/AppIcon.icon/Assets/warp-glyph 3.svg deleted file mode 100644 index c1486267..00000000 --- a/app/channels/local/icon/AppIcon.icon/Assets/warp-glyph 3.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/channels/local/icon/AppIcon.icon/icon.json b/app/channels/local/icon/AppIcon.icon/icon.json deleted file mode 100644 index a4ef8938..00000000 --- a/app/channels/local/icon/AppIcon.icon/icon.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "fill-specializations" : [ - { - "value" : { - "linear-gradient" : [ - "gray:0.19068,1.00000", - "gray:0.08158,1.00000" - ] - } - }, - { - "appearance" : "dark", - "value" : { - "linear-gradient" : [ - "gray:0.08342,1.00000", - "gray:0.00000,1.00000" - ] - } - } - ], - "groups" : [ - { - "layers" : [ - { - "blend-mode" : "normal", - "glass" : true, - "image-name" : "warp-glyph 3.svg", - "name" : "warp-glyph 3" - } - ], - "shadow" : { - "kind" : "neutral", - "opacity" : 0.5 - }, - "translucency" : { - "enabled" : true, - "value" : 0.5 - } - } - ], - "supported-platforms" : { - "circles" : [ - "watchOS" - ], - "squares" : "shared" - } -} \ No newline at end of file diff --git a/app/channels/local/icon/no-padding/512x512.png b/app/channels/local/icon/no-padding/512x512.png deleted file mode 100644 index 6dbc3837..00000000 Binary files a/app/channels/local/icon/no-padding/512x512.png and /dev/null differ diff --git a/app/channels/local/icon/no-padding/icon.ico b/app/channels/local/icon/no-padding/icon.ico deleted file mode 100644 index 5f41a63f..00000000 Binary files a/app/channels/local/icon/no-padding/icon.ico and /dev/null differ diff --git a/app/channels/oss/dev.galaxy.GalaxyOss.desktop b/app/channels/oss/com.galaxy.GalaxyOss.desktop similarity index 87% rename from app/channels/oss/dev.galaxy.GalaxyOss.desktop rename to app/channels/oss/com.galaxy.GalaxyOss.desktop index 9b61d06c..f3d1f669 100644 --- a/app/channels/oss/dev.galaxy.GalaxyOss.desktop +++ b/app/channels/oss/com.galaxy.GalaxyOss.desktop @@ -8,11 +8,11 @@ Name=GalaxyOss GenericName=TerminalEmulator Exec=galaxy-oss %U -StartupWMClass=dev.galaxy.GalaxyOss +StartupWMClass=com.galaxy.GalaxyOss Keywords=shell;prompt;command;commandline;cmd; -Icon=dev.galaxy.GalaxyOss +Icon=com.galaxy.GalaxyOss Categories=System;TerminalEmulator; diff --git a/app/channels/oss/dev.warp.WarpOss.desktop b/app/channels/oss/dev.warp.WarpOss.desktop deleted file mode 100644 index f4d30b21..00000000 --- a/app/channels/oss/dev.warp.WarpOss.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=WarpOss -GenericName=TerminalEmulator - -Exec=warp-terminal-oss %U -StartupWMClass=dev.warp.WarpOss - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.warp.WarpOss - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for warposs:// URLs. -MimeType=x-scheme-handler/warposs; diff --git a/app/channels/preview/dev.galaxy.GalaxyPreview.desktop b/app/channels/preview/dev.galaxy.GalaxyPreview.desktop deleted file mode 100644 index f3175ea7..00000000 --- a/app/channels/preview/dev.galaxy.GalaxyPreview.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=GalaxyPreview -GenericName=TerminalEmulator - -Exec=galaxy-terminal-preview %U -StartupWMClass=dev.galaxy.GalaxyPreview - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.galaxy.GalaxyPreview - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for galaxypreview:// URLs. -MimeType=x-scheme-handler/galaxypreview; diff --git a/app/channels/preview/dev.warp.WarpPreview.desktop b/app/channels/preview/dev.warp.WarpPreview.desktop deleted file mode 100644 index b027f7f0..00000000 --- a/app/channels/preview/dev.warp.WarpPreview.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=WarpPreview -GenericName=TerminalEmulator - -Exec=warp-terminal-preview %U -StartupWMClass=dev.warp.WarpPreview - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.warp.WarpPreview - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for warppreview:// URLs. -MimeType=x-scheme-handler/warppreview; diff --git a/app/channels/preview/icon/AppIcon.icon/Assets/Preview.png b/app/channels/preview/icon/AppIcon.icon/Assets/Preview.png deleted file mode 100644 index c7f5957e..00000000 Binary files a/app/channels/preview/icon/AppIcon.icon/Assets/Preview.png and /dev/null differ diff --git a/app/channels/preview/icon/AppIcon.icon/icon.json b/app/channels/preview/icon/AppIcon.icon/icon.json deleted file mode 100644 index e11e8390..00000000 --- a/app/channels/preview/icon/AppIcon.icon/icon.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "fill" : { - "automatic-gradient" : "extended-srgb:0.00000,0.53333,1.00000,1.00000" - }, - "groups" : [ - { - "layers" : [ - { - "image-name" : "Preview.png", - "name" : "Preview" - } - ], - "shadow" : { - "kind" : "neutral", - "opacity" : 0.5 - }, - "translucency" : { - "enabled" : true, - "value" : 0.5 - } - } - ], - "supported-platforms" : { - "circles" : [ - "watchOS" - ], - "squares" : "shared" - } -} \ No newline at end of file diff --git a/app/channels/preview/icon/no-padding/128x128.png b/app/channels/preview/icon/no-padding/128x128.png deleted file mode 100644 index 01e73dbb..00000000 Binary files a/app/channels/preview/icon/no-padding/128x128.png and /dev/null differ diff --git a/app/channels/preview/icon/no-padding/16x16.png b/app/channels/preview/icon/no-padding/16x16.png deleted file mode 100644 index 2e31689d..00000000 Binary files a/app/channels/preview/icon/no-padding/16x16.png and /dev/null differ diff --git a/app/channels/preview/icon/no-padding/256x256.png b/app/channels/preview/icon/no-padding/256x256.png deleted file mode 100644 index d6b33153..00000000 Binary files a/app/channels/preview/icon/no-padding/256x256.png and /dev/null differ diff --git a/app/channels/preview/icon/no-padding/32x32.png b/app/channels/preview/icon/no-padding/32x32.png deleted file mode 100644 index 4f257635..00000000 Binary files a/app/channels/preview/icon/no-padding/32x32.png and /dev/null differ diff --git a/app/channels/preview/icon/no-padding/48x48.png b/app/channels/preview/icon/no-padding/48x48.png deleted file mode 100644 index e744ca4e..00000000 Binary files a/app/channels/preview/icon/no-padding/48x48.png and /dev/null differ diff --git a/app/channels/preview/icon/no-padding/512x512.png b/app/channels/preview/icon/no-padding/512x512.png deleted file mode 100644 index 6dbc3837..00000000 Binary files a/app/channels/preview/icon/no-padding/512x512.png and /dev/null differ diff --git a/app/channels/preview/icon/no-padding/64x64.png b/app/channels/preview/icon/no-padding/64x64.png deleted file mode 100644 index a838dd38..00000000 Binary files a/app/channels/preview/icon/no-padding/64x64.png and /dev/null differ diff --git a/app/channels/preview/icon/no-padding/icon.ico b/app/channels/preview/icon/no-padding/icon.ico deleted file mode 100644 index 5ecba2f5..00000000 Binary files a/app/channels/preview/icon/no-padding/icon.ico and /dev/null differ diff --git a/app/channels/stable/dev.galaxy.Galaxy.desktop b/app/channels/stable/dev.galaxy.Galaxy.desktop deleted file mode 100644 index 83397f88..00000000 --- a/app/channels/stable/dev.galaxy.Galaxy.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=Galaxy -GenericName=TerminalEmulator - -Exec=galaxy-terminal %U -StartupWMClass=dev.galaxy.Galaxy - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.galaxy.Galaxy - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for galaxy:// URLs. -MimeType=x-scheme-handler/galaxy; diff --git a/app/channels/stable/dev.warp.Warp.desktop b/app/channels/stable/dev.warp.Warp.desktop deleted file mode 100644 index ef30db8d..00000000 --- a/app/channels/stable/dev.warp.Warp.desktop +++ /dev/null @@ -1,23 +0,0 @@ -[Desktop Entry] -# The version of the desktop entry spec this conforms to. -Version=1.0 - -Type=Application - -Name=Warp -GenericName=TerminalEmulator - -Exec=warp-terminal %U -StartupWMClass=dev.warp.Warp - -Keywords=shell;prompt;command;commandline;cmd; - -Icon=dev.warp.Warp - -Categories=System;TerminalEmulator; - -# Don't run this application within a terminal. -Terminal=false - -# Register ourselves as the handler for warp:// URLs. -MimeType=x-scheme-handler/warp; diff --git a/app/channels/stable/icon/AppIcon.icon/Assets/4-2.png b/app/channels/stable/icon/AppIcon.icon/Assets/4-2.png deleted file mode 100644 index e1b428b2..00000000 Binary files a/app/channels/stable/icon/AppIcon.icon/Assets/4-2.png and /dev/null differ diff --git a/app/channels/stable/icon/AppIcon.icon/Assets/Glyph (1).svg b/app/channels/stable/icon/AppIcon.icon/Assets/Glyph (1).svg deleted file mode 100644 index 34b8f829..00000000 --- a/app/channels/stable/icon/AppIcon.icon/Assets/Glyph (1).svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/channels/stable/icon/AppIcon.icon/icon.json b/app/channels/stable/icon/AppIcon.icon/icon.json deleted file mode 100644 index 6933153d..00000000 --- a/app/channels/stable/icon/AppIcon.icon/icon.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "fill" : { - "automatic-gradient" : "extended-srgb:0.00000,0.53333,1.00000,1.00000" - }, - "groups" : [ - { - "blend-mode" : "normal", - "hidden" : false, - "layers" : [ - { - "blend-mode" : "multiply", - "fill" : "none", - "glass" : false, - "image-name" : "Glyph (1).svg", - "name" : "Glyph (1)", - "opacity" : 1 - }, - { - "blend-mode" : "overlay", - "fill" : "none", - "glass" : false, - "hidden" : false, - "image-name" : "4-2.png", - "name" : "4-2", - "opacity" : 1 - } - ], - "lighting" : "individual", - "opacity" : 1, - "shadow" : { - "kind" : "neutral", - "opacity" : 0.5 - }, - "specular" : true, - "translucency" : { - "enabled" : true, - "value" : 0.5 - } - } - ], - "supported-platforms" : { - "circles" : [ - "watchOS" - ], - "squares" : "shared" - } -} \ No newline at end of file diff --git a/app/channels/stable/icon/no-padding/128x128.png b/app/channels/stable/icon/no-padding/128x128.png deleted file mode 100644 index 26de9d0f..00000000 Binary files a/app/channels/stable/icon/no-padding/128x128.png and /dev/null differ diff --git a/app/channels/stable/icon/no-padding/16x16.png b/app/channels/stable/icon/no-padding/16x16.png deleted file mode 100644 index 8f37df7e..00000000 Binary files a/app/channels/stable/icon/no-padding/16x16.png and /dev/null differ diff --git a/app/channels/stable/icon/no-padding/256x256.png b/app/channels/stable/icon/no-padding/256x256.png deleted file mode 100644 index d6b33153..00000000 Binary files a/app/channels/stable/icon/no-padding/256x256.png and /dev/null differ diff --git a/app/channels/stable/icon/no-padding/32x32.png b/app/channels/stable/icon/no-padding/32x32.png deleted file mode 100644 index c0e064cf..00000000 Binary files a/app/channels/stable/icon/no-padding/32x32.png and /dev/null differ diff --git a/app/channels/stable/icon/no-padding/48x48.png b/app/channels/stable/icon/no-padding/48x48.png deleted file mode 100644 index 629f0b7d..00000000 Binary files a/app/channels/stable/icon/no-padding/48x48.png and /dev/null differ diff --git a/app/channels/stable/icon/no-padding/512x512.png b/app/channels/stable/icon/no-padding/512x512.png deleted file mode 100644 index 6dbc3837..00000000 Binary files a/app/channels/stable/icon/no-padding/512x512.png and /dev/null differ diff --git a/app/channels/stable/icon/no-padding/64x64.png b/app/channels/stable/icon/no-padding/64x64.png deleted file mode 100644 index e80aeb0d..00000000 Binary files a/app/channels/stable/icon/no-padding/64x64.png and /dev/null differ diff --git a/app/channels/stable/icon/no-padding/icon.ico b/app/channels/stable/icon/no-padding/icon.ico deleted file mode 100644 index 972f4e28..00000000 Binary files a/app/channels/stable/icon/no-padding/icon.ico and /dev/null differ diff --git a/app/examples/generate_default_settings.rs b/app/examples/generate_default_settings.rs index ab33462a..ad3f34d4 100644 --- a/app/examples/generate_default_settings.rs +++ b/app/examples/generate_default_settings.rs @@ -8,7 +8,7 @@ //! per-generator registration list to keep in sync. //! //! Usage: -//! cargo run --example generate_default_settings -- [--channel dev|preview|stable] +//! cargo run --example generate_default_settings -- [--channel oss] //! //! Example: //! cargo run --example generate_default_settings -- ./default_settings.toml @@ -38,11 +38,9 @@ fn active_flags_for_channel(channel: &str) -> HashSet { let mut flags = HashSet::new(); let flag_lists: &[&[FeatureFlag]] = match channel { - "stable" => &[RELEASE_FLAGS], - "preview" => &[RELEASE_FLAGS, PREVIEW_FLAGS], - "dev" => &[RELEASE_FLAGS, PREVIEW_FLAGS, DOGFOOD_FLAGS, DEBUG_FLAGS], + "oss" | "integration" => &[RELEASE_FLAGS, PREVIEW_FLAGS, DOGFOOD_FLAGS, DEBUG_FLAGS], other => { - eprintln!("Unknown channel '{other}', defaulting to dev"); + eprintln!("Unknown channel '{other}', defaulting to oss"); &[RELEASE_FLAGS, PREVIEW_FLAGS, DOGFOOD_FLAGS, DEBUG_FLAGS] } }; @@ -61,7 +59,7 @@ fn main() { let args: Vec = std::env::args().collect(); - let mut channel = "dev"; + let mut channel = "oss"; let mut output_path: Option = None; let mut i = 1; while i < args.len() { @@ -84,7 +82,7 @@ fn main() { } let Some(output_path) = output_path else { - eprintln!("Usage: generate_default_settings [--channel dev|preview|stable] "); + eprintln!("Usage: generate_default_settings [--channel oss] "); std::process::exit(1); }; diff --git a/app/src/bin/generate_settings_schema.rs b/app/src/bin/generate_settings_schema.rs index 31d36d41..872e0e2b 100644 --- a/app/src/bin/generate_settings_schema.rs +++ b/app/src/bin/generate_settings_schema.rs @@ -2,7 +2,7 @@ //! //! Usage: //! ``` -//! cargo run --bin generate_settings_schema -- [--channel dev|preview|stable] [output_path] +//! cargo run --bin generate_settings_schema -- [output_path] //! ``` use std::io::Write; @@ -19,7 +19,7 @@ fn main() { ensure_settings_linked(); let args: Vec = std::env::args().collect(); - let mut channel = "dev"; + let mut channel = "oss"; let mut output_path: Option<&str> = None; let mut index = 1; diff --git a/app/src/bin/oss.rs b/app/src/bin/oss.rs index 11ff1834..badb51d2 100644 --- a/app/src/bin/oss.rs +++ b/app/src/bin/oss.rs @@ -12,7 +12,7 @@ fn main() -> Result<()> { let mut state = ChannelState::new( Channel::Oss, ChannelConfig { - app_id: AppId::new("com", "galaxy", "Galaxy"), + app_id: AppId::new("com", "galaxy", "GalaxyOss"), logfile_name: "galaxy.log".into(), server_config: WarpServerConfig::disabled(), oz_config: OzConfig::production(), @@ -68,7 +68,7 @@ embed_plist::embed_info_plist_bytes!(r#" UIDesignRequiresCompatibility CFBundleURLTypes - CFBundleURLNameGalaxyCFBundleURLSchemesgalaxy + CFBundleURLNameGalaxyCFBundleURLSchemesgalaxyoss NSHumanReadableCopyright © 2026, Galaxy Project NSDockTilePlugIn diff --git a/app/src/settings/schema_export.rs b/app/src/settings/schema_export.rs index 72a9c878..1a39c50e 100644 --- a/app/src/settings/schema_export.rs +++ b/app/src/settings/schema_export.rs @@ -64,11 +64,9 @@ fn active_flags_for_channel(channel: &str) -> HashSet { let mut flags = HashSet::new(); let flag_lists: &[&[FeatureFlag]] = match channel { - "stable" => &[RELEASE_FLAGS], - "preview" => &[RELEASE_FLAGS, PREVIEW_FLAGS], - "dev" => &[RELEASE_FLAGS, PREVIEW_FLAGS, DOGFOOD_FLAGS, DEBUG_FLAGS], + "oss" | "integration" => &[RELEASE_FLAGS, PREVIEW_FLAGS, DOGFOOD_FLAGS, DEBUG_FLAGS], other => { - log::warn!("Unknown settings schema channel '{other}', defaulting to dev"); + log::warn!("Unknown settings schema channel '{other}', defaulting to oss"); &[RELEASE_FLAGS, PREVIEW_FLAGS, DOGFOOD_FLAGS, DEBUG_FLAGS] } }; @@ -190,9 +188,8 @@ pub fn generate_settings_schema(channel: &str) -> (String, usize) { fn runtime_schema_channel() -> &'static str { match ChannelState::channel() { - Channel::Stable => "stable", - Channel::Preview => "preview", - Channel::Dev | Channel::Local | Channel::Oss | Channel::Integration => "dev", + Channel::Stable | Channel::Preview | Channel::Dev | Channel::Local | Channel::Oss => "oss", + Channel::Integration => "integration", } } diff --git a/app/src/util/file/external_editor/mac.rs b/app/src/util/file/external_editor/mac.rs index a9d978b5..f199c393 100644 --- a/app/src/util/file/external_editor/mac.rs +++ b/app/src/util/file/external_editor/mac.rs @@ -3,7 +3,6 @@ use std::path::Path; use command::r#async::Command; use galaxy_core::channel::ChannelState; -use galaxy_core::AppId; use galaxyui::ApplicationBundleInfo; use instant::Instant; use objc2::rc::{autoreleasepool, Retained}; @@ -347,7 +346,7 @@ pub fn open_file_path_with_line_and_col( if let Some(bundle_id) = bundle_id.as_deref() { let current = ChannelState::app_id().to_string(); if bundle_id != current - && is_warp_bundle(bundle_id) + && is_galaxy_bundle(bundle_id) && open_with_bundle(¤t, full_path) { return; @@ -357,10 +356,8 @@ pub fn open_file_path_with_line_and_col( ctx.open_file_path(full_path); } -fn is_warp_bundle(bundle_id: &str) -> bool { - AppId::parse(bundle_id) - .map(|id| id.qualifier() == "dev" && id.organization() == "warp") - .unwrap_or(false) +fn is_galaxy_bundle(bundle_id: &str) -> bool { + bundle_id == "com.galaxy.GalaxyOss" } fn open_with_bundle(bundle_id: &str, path: &Path) -> bool { diff --git a/app/src/util/file/external_editor/mac_tests.rs b/app/src/util/file/external_editor/mac_tests.rs index 51d8d824..801036cd 100644 --- a/app/src/util/file/external_editor/mac_tests.rs +++ b/app/src/util/file/external_editor/mac_tests.rs @@ -1,18 +1,15 @@ -use super::is_warp_bundle; +use super::is_galaxy_bundle; #[test] -fn is_warp_bundle_recognises_warp_channels() { - assert!(is_warp_bundle("dev.warp.Warp")); - assert!(is_warp_bundle("dev.warp.WarpDev")); - assert!(is_warp_bundle("dev.warp.WarpPreview")); - assert!(is_warp_bundle("dev.warp.WarpOss")); +fn is_galaxy_bundle_recognises_oss() { + assert!(is_galaxy_bundle("com.galaxy.GalaxyOss")); } #[test] -fn is_warp_bundle_rejects_other_apps() { - assert!(!is_warp_bundle("com.microsoft.VSCode")); - assert!(!is_warp_bundle("com.apple.TextEdit")); - assert!(!is_warp_bundle("dev.zed.Zed")); - assert!(!is_warp_bundle("invalid")); - assert!(!is_warp_bundle("")); +fn is_galaxy_bundle_rejects_other_apps() { + assert!(!is_galaxy_bundle("com.microsoft.VSCode")); + assert!(!is_galaxy_bundle("com.apple.TextEdit")); + assert!(!is_galaxy_bundle("dev.warp.WarpOss")); + assert!(!is_galaxy_bundle("invalid")); + assert!(!is_galaxy_bundle("")); } diff --git a/crates/galaxy_core/src/channel/state.rs b/crates/galaxy_core/src/channel/state.rs index e03f91bc..c2135ae0 100644 --- a/crates/galaxy_core/src/channel/state.rs +++ b/crates/galaxy_core/src/channel/state.rs @@ -37,7 +37,7 @@ pub struct ChannelState { impl ChannelState { pub fn init() -> Self { let channel = Channel::Oss; - let app_id = AppId::new("samsung", "galaxy", "GalaxyOss"); + let app_id = AppId::new("com", "galaxy", "GalaxyOss"); Self { channel, additional_features: Default::default(), diff --git a/crates/warp_channel_config/Cargo.toml b/crates/warp_channel_config/Cargo.toml deleted file mode 100644 index 4f482860..00000000 --- a/crates/warp_channel_config/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "warp_channel_config" -edition = "2021" -description = "Loads per-channel ChannelConfig for Warp's channel binaries" -authors.workspace = true -publish.workspace = true -license.workspace = true - -[dependencies] -command.workspace = true -serde_json.workspace = true -warp_core.workspace = true diff --git a/crates/warp_channel_config/src/lib.rs b/crates/warp_channel_config/src/lib.rs deleted file mode 100644 index a75e48fb..00000000 --- a/crates/warp_channel_config/src/lib.rs +++ /dev/null @@ -1,113 +0,0 @@ -//! Loads a per-channel [`ChannelConfig`] for Warp's channel binaries. -//! -//! For non-bundled builds the internal `warp-channel-config` generator is -//! invoked at runtime; for `release_bundle` builds the config is embedded at -//! compile time via the consuming crate's build script. Shared by the GUI app -//! binaries and the `warp_tui` binaries so the loading logic lives in one place. -//! -//! The `release_bundle` cfg inside [`load_config!`] is evaluated in the -//! *consuming* crate, so each binary crate opts into embedding by defining its -//! own `release_bundle` feature (and generating `_config.json` into its -//! `OUT_DIR` from a build script). -use warp_core::channel::ChannelConfig; - -/// The name of the config generator binary, expected to be on PATH. -const CONFIG_BIN_NAME: &str = "warp-channel-config"; - -#[macro_export] -#[cfg(windows)] -macro_rules! path_concat { - ($path:expr, $file:expr) => { - concat!($path, "\\", $file) - }; -} -#[macro_export] -#[cfg(not(windows))] -macro_rules! path_concat { - ($path:expr, $file:expr) => { - concat!($path, "/", $file) - }; -} - -/// Loads the [`ChannelConfig`] for the given channel name. -/// -/// In `release_bundle` builds the config is embedded at compile time (the -/// consuming crate's build script must generate `_config.json` into -/// `OUT_DIR`); otherwise the `warp-channel-config` generator is invoked at -/// runtime. -#[macro_export] -macro_rules! load_config { - ($channel:expr) => {{ - #[cfg(feature = "release_bundle")] - { - $crate::load_config_from_embedded(include_str!($crate::path_concat!( - env!("OUT_DIR"), - concat!($channel, "_config.json") - ))) - } - - #[cfg(not(feature = "release_bundle"))] - { - $crate::load_config_from_generator($channel) - } - }}; -} - -/// Invokes the config generator binary at runtime and deserializes its JSON -/// output into a [`ChannelConfig`]. -pub fn load_config_from_generator(channel: &str) -> ChannelConfig { - let target_family = if cfg!(target_family = "wasm") { - "wasm" - } else { - "native" - }; - - let target_os = if cfg!(target_os = "macos") { - "macos" - } else if cfg!(target_os = "windows") { - "windows" - } else { - "linux" - }; - - let output = command::blocking::Command::new(CONFIG_BIN_NAME) - .arg("--channel") - .arg(channel) - .arg("--target-family") - .arg(target_family) - .arg("--target-os") - .arg(target_os) - .output() - .unwrap_or_else(|err| { - if err.kind() == std::io::ErrorKind::NotFound { - panic!( - "\n\n'{CONFIG_BIN_NAME}' was not found on PATH.\n\n\ - To build internal channels, run:\n\ - \n\ - \x20 ./script/install_channel_config\n\n" - ) - } - panic!("Failed to execute '{CONFIG_BIN_NAME}': {err}") - }); - - if !output.status.success() { - let stderr = String::from_utf8_lossy(&output.stderr); - panic!("Config generator failed for channel '{channel}':\n{stderr}"); - } - - serde_json::from_slice(&output.stdout).unwrap_or_else(|err| { - let stdout = String::from_utf8_lossy(&output.stdout); - panic!( - "Failed to parse config generator output for channel '{channel}': {err}\nOutput:\n{stdout}" - ) - }) -} - -/// Deserializes a [`ChannelConfig`] from a JSON string embedded at compile time. -/// -/// Used to load channel configuration in release bundles, where configuration -/// is embedded at compile time instead of being generated at runtime. -pub fn load_config_from_embedded(json: &str) -> ChannelConfig { - serde_json::from_str(json) - .unwrap_or_else(|err| panic!("Failed to parse embedded channel config: {err}")) -} diff --git a/crates/warp_tui/Cargo.toml b/crates/warp_tui/Cargo.toml index 3d20c358..ffbea8bb 100644 --- a/crates/warp_tui/Cargo.toml +++ b/crates/warp_tui/Cargo.toml @@ -8,30 +8,11 @@ license.workspace = true autobins = false default-run = "warp-tui-oss" -# One binary per channel, mirroring the GUI app's `app/src/bin/*` layout. The -# OSS bin is the `default-run` so bare `cargo run -p warp_tui` builds without -# the internal `warp-channel-config` generator; `./script/run-tui` selects the -# local bin when the generator is available. +# The OSS binary is the only shipped TUI target. [[bin]] name = "warp-tui-oss" path = "src/bin/oss.rs" -[[bin]] -name = "warp-tui" -path = "src/bin/local.rs" - -[[bin]] -name = "warp-tui-dev" -path = "src/bin/dev.rs" - -[[bin]] -name = "warp-tui-preview" -path = "src/bin/preview.rs" - -[[bin]] -name = "warp-tui-stable" -path = "src/bin/stable.rs" - [dependencies] anyhow.workspace = true log.workspace = true @@ -43,7 +24,6 @@ string-offset.workspace = true sum_tree.workspace = true vec1.workspace = true warp = { workspace = true, features = ["tui"] } -warp_channel_config.workspace = true warp_core.workspace = true warp_editor.workspace = true warp_terminal.workspace = true @@ -64,8 +44,4 @@ name = "tui_input_demo" required-features = [] [features] -# Declared so the `warp_channel_config::load_config!` macro's -# `cfg(feature = "release_bundle")` branch is a known cfg in this crate. Today it -# stays off and the local bin uses the runtime generator; wiring the embedded -# config path (a `build.rs`) is phase 2 of the channel setup. release_bundle = ["warp/release_bundle"] diff --git a/crates/warp_tui/build.rs b/crates/warp_tui/build.rs deleted file mode 100644 index 9949a5fa..00000000 --- a/crates/warp_tui/build.rs +++ /dev/null @@ -1,85 +0,0 @@ -//! Build script for the `warp_tui` channel binaries. -//! -//! When the `release_bundle` feature is enabled and the internal -//! `warp-channel-config` generator is on PATH, this embeds each channel's config -//! JSON into `OUT_DIR` so the per-channel bins can `include_str!` it via -//! `warp_channel_config::load_config!`. Mirrors the equivalent logic in -//! `app/build.rs`. For non-bundled builds the config is loaded at runtime, so -//! there is nothing to embed. -//! -//! `std::process::Command` is fine in a build script (unlike the shipped binary, -//! where it could flash a console on Windows). -#![allow(clippy::disallowed_types)] - -use std::path::Path; -use std::process::Command; -use std::{env, fs}; - -fn main() { - println!("cargo:rerun-if-changed=build.rs"); - println!("cargo:rerun-if-env-changed=CARGO_CFG_TARGET_OS"); - - let target_os = env::var("CARGO_CFG_TARGET_OS").expect("CARGO_CFG_TARGET_OS must be set"); - - generate_channel_config_if_needed(&target_os); -} - -/// If the `release_bundle` feature is enabled and `warp-channel-config` is -/// available on PATH, invoke the config generator and write each channel's JSON -/// to `OUT_DIR` so it can be embedded via `include_str!` in the binary entry -/// points. -fn generate_channel_config_if_needed(target_os: &str) { - if env::var("CARGO_FEATURE_RELEASE_BUNDLE").is_err() { - // For non-bundled builds, config is loaded at runtime — nothing to embed. - return; - } - - let config_bin = "warp-channel-config"; - - // If the generator is not on PATH we can't embed configs. This is expected - // for external contributors building Warp OSS. - if Command::new(config_bin) - .arg("--help") - .stdout(std::process::Stdio::null()) - .stderr(std::process::Stdio::null()) - .status() - .is_err() - { - return; - } - - // Only tracked for bundled builds, where they affect the embedded config. - println!("cargo:rerun-if-env-changed=WITH_LOCAL_SERVER"); - println!("cargo:rerun-if-env-changed=WITH_LOCAL_SESSION_SHARING_SERVER"); - println!("cargo:rerun-if-env-changed=WITH_SANDBOX_TELEMETRY"); - println!("cargo:rerun-if-env-changed=SERVER_ROOT_URL"); - println!("cargo:rerun-if-env-changed=WS_SERVER_URL"); - - let out_dir = env::var("OUT_DIR").expect("OUT_DIR must be set"); - - // Generate config for every internal channel the TUI ships; each binary's - // `include_str!` picks up its own file. - for channel in ["local", "dev", "stable", "preview"] { - let output = Command::new(config_bin) - .arg("--channel") - .arg(channel) - .arg("--target-family") - .arg("native") - .arg("--target-os") - .arg(target_os) - .output() - .unwrap_or_else(|err| { - panic!("Failed to execute config generator at '{config_bin}': {err}") - }); - - if !output.status.success() { - let stderr = String::from_utf8_lossy(&output.stderr); - panic!("Config generator failed for channel '{channel}':\n{stderr}"); - } - - let config_path = Path::new(&out_dir).join(format!("{channel}_config.json")); - fs::write(&config_path, &output.stdout).unwrap_or_else(|err| { - panic!("Failed to write config to {}: {err}", config_path.display()) - }); - } -} diff --git a/crates/warp_tui/src/bin/dev.rs b/crates/warp_tui/src/bin/dev.rs deleted file mode 100644 index 0b9ea7a6..00000000 --- a/crates/warp_tui/src/bin/dev.rs +++ /dev/null @@ -1,19 +0,0 @@ -//! Dev-channel `warp-tui` binary (internal nightly builds). -//! -//! Mirrors `app/src/bin/dev.rs`: loads the internal `dev` channel config and -//! layers the dev feature flags, then hands off to the shared TUI entry point. - -use anyhow::Result; -use warp_core::channel::{Channel, ChannelState}; -use warp_core::features; - -fn main() -> Result<()> { - ChannelState::set( - ChannelState::new(Channel::Dev, warp_channel_config::load_config!("dev")) - .with_additional_features(features::DEBUG_FLAGS) - .with_additional_features(features::DOGFOOD_FLAGS) - .with_additional_features(features::PREVIEW_FLAGS), - ); - - warp_tui::run() -} diff --git a/crates/warp_tui/src/bin/local.rs b/crates/warp_tui/src/bin/local.rs deleted file mode 100644 index 9554b54d..00000000 --- a/crates/warp_tui/src/bin/local.rs +++ /dev/null @@ -1,23 +0,0 @@ -//! Local-channel `warp-tui` binary (internal dev builds). -//! -//! Mirrors `app/src/bin/local.rs`: loads the internal `local` channel config -//! (via the `warp-channel-config` generator) and layers the dev feature flags, -//! then hands off to the shared TUI entry point. Run it through -//! `./script/run-tui`, which installs the generator first; running it directly -//! without `warp-channel-config` on PATH will panic with install instructions. - -use anyhow::Result; -use warp_core::channel::{Channel, ChannelState}; -use warp_core::features; - -fn main() -> Result<()> { - ChannelState::set( - ChannelState::new(Channel::Local, warp_channel_config::load_config!("local")) - .with_additional_features(features::DEBUG_FLAGS) - .with_additional_features(features::DOGFOOD_FLAGS) - .with_additional_features(features::PREVIEW_FLAGS) - .with_additional_features(features::LOCAL_FLAGS), - ); - - warp_tui::run() -} diff --git a/crates/warp_tui/src/bin/oss.rs b/crates/warp_tui/src/bin/oss.rs index e04fc75e..f21f7052 100644 --- a/crates/warp_tui/src/bin/oss.rs +++ b/crates/warp_tui/src/bin/oss.rs @@ -1,10 +1,9 @@ //! OSS-channel `warp-tui` binary and `default-run` target. //! -//! This is what bare `cargo run -p warp_tui` builds, so it hand-builds a -//! production config and needs no internal `warp-channel-config` generator -//! (mirrors `app/src/bin/oss.rs`). It is a console application (no GUI window, -//! no app bundle), so unlike the GUI binaries it sets no `windows_subsystem` -//! attribute and embeds no `Info.plist`. +//! This is what bare `cargo run -p warp_tui` builds, so it hand-builds an +//! OSS production config (mirroring `app/src/bin/oss.rs`). It is a console +//! application (no GUI window, no app bundle), so unlike the GUI binaries it +//! sets no `windows_subsystem` attribute and embeds no `Info.plist`. use anyhow::Result; use warp_core::channel::{Channel, ChannelConfig, ChannelState, OzConfig, WarpServerConfig}; @@ -14,7 +13,7 @@ fn main() -> Result<()> { let mut state = ChannelState::new( Channel::Oss, ChannelConfig { - app_id: AppId::new("dev", "warp", "WarpTui"), + app_id: AppId::new("com", "galaxy", "GalaxyOss"), logfile_name: "warp-tui.log".into(), server_config: WarpServerConfig::disabled(), oz_config: OzConfig::production(), diff --git a/crates/warp_tui/src/bin/preview.rs b/crates/warp_tui/src/bin/preview.rs deleted file mode 100644 index a84cd3a7..00000000 --- a/crates/warp_tui/src/bin/preview.rs +++ /dev/null @@ -1,22 +0,0 @@ -//! Preview-channel `warp-tui` binary. -//! -//! Mirrors `app/src/bin/preview.rs`: loads the `preview` channel config and -//! enables the preview feature flags (plus forced login), then hands off to the -//! shared TUI entry point. - -use anyhow::Result; -use warp_core::channel::{Channel, ChannelState}; -use warp_core::features; - -fn main() -> Result<()> { - ChannelState::set( - ChannelState::new( - Channel::Preview, - warp_channel_config::load_config!("preview"), - ) - .with_additional_features(features::PREVIEW_FLAGS) - .with_additional_features(&[features::FeatureFlag::ForceLogin]), - ); - - warp_tui::run() -} diff --git a/crates/warp_tui/src/bin/stable.rs b/crates/warp_tui/src/bin/stable.rs deleted file mode 100644 index 46e0ed49..00000000 --- a/crates/warp_tui/src/bin/stable.rs +++ /dev/null @@ -1,16 +0,0 @@ -//! Stable-channel `warp-tui` binary. -//! -//! Mirrors `app/src/bin/stable.rs`: loads the `stable` channel config with no -//! additional feature flags, then hands off to the shared TUI entry point. - -use anyhow::Result; -use warp_core::channel::{Channel, ChannelState}; - -fn main() -> Result<()> { - ChannelState::set(ChannelState::new( - Channel::Stable, - warp_channel_config::load_config!("stable"), - )); - - warp_tui::run() -} diff --git a/flake.nix b/flake.nix index 2dc81648..7b101b14 100644 --- a/flake.nix +++ b/flake.nix @@ -154,7 +154,7 @@ "-p" "warp" "--bin" - "warp-oss" + "galaxy-oss" "--bin" "generate_settings_schema" ]; @@ -175,13 +175,13 @@ let installDir = "$out/opt/warpdotdev/warp-terminal-experimental"; resourcesDir = "${installDir}/resources"; - releaseChannel = "stable"; + releaseChannel = "oss"; libraryPath = lib.makeLibraryPath linuxRuntimeLibraries; executablePath = lib.makeBinPath (with pkgs; [ xdg-utils ]); in '' - install -Dm755 "$out/bin/warp-oss" "${installDir}/warp-oss" - rm -f "$out/bin/warp-oss" + install -Dm755 "$out/bin/galaxy-oss" "${installDir}/galaxy-oss" + rm -f "$out/bin/galaxy-oss" patchShebangs \ ./script/prepare_bundled_resources \ @@ -204,30 +204,30 @@ install -Dm644 LICENSE-AGPL "$out/share/licenses/warp-terminal-experimental/LICENSE-AGPL" install -Dm644 LICENSE-MIT "$out/share/licenses/warp-terminal-experimental/LICENSE-MIT" - install -Dm644 app/channels/oss/dev.warp.WarpOss.desktop \ - "$out/share/applications/dev.warp.WarpOss.desktop" - substituteInPlace "$out/share/applications/dev.warp.WarpOss.desktop" \ - --replace-fail "Exec=warp-terminal-oss %U" "Exec=warp-terminal-experimental %U" + install -Dm644 app/channels/oss/com.galaxy.GalaxyOss.desktop \ + "$out/share/applications/com.galaxy.GalaxyOss.desktop" + substituteInPlace "$out/share/applications/com.galaxy.GalaxyOss.desktop" \ + --replace-fail "Exec=galaxy-oss %U" "Exec=warp-terminal-experimental %U" for size in 16x16 32x32 64x64 128x128 256x256 512x512; do icon="app/channels/oss/icon/no-padding/$size.png" if [ -f "$icon" ]; then install -Dm644 "$icon" \ - "$out/share/icons/hicolor/$size/apps/dev.warp.WarpOss.png" + "$out/share/icons/hicolor/$size/apps/com.galaxy.GalaxyOss.png" fi done - wrapProgram "${installDir}/warp-oss" \ + wrapProgram "${installDir}/galaxy-oss" \ --prefix LD_LIBRARY_PATH : "${libraryPath}" \ --prefix PATH : "${executablePath}" mkdir -p "$out/bin" - ln -s "${installDir}/warp-oss" "$out/bin/warp-oss" - ln -s "${installDir}/warp-oss" "$out/bin/warp-terminal-experimental" + ln -s "${installDir}/galaxy-oss" "$out/bin/galaxy-oss" + ln -s "${installDir}/galaxy-oss" "$out/bin/galaxy-terminal-experimental" ''; postFixup = lib.optionalString pkgs.stdenv.isLinux '' - wrapped="/opt/warpdotdev/warp-terminal-experimental/.warp-oss-wrapped" + wrapped="/opt/warpdotdev/warp-terminal-experimental/.galaxy-oss-wrapped" if [ -e "$out$wrapped" ] && ! patchelf --print-needed "$out$wrapped" | grep -q '^libfontconfig\.so\.1$'; then patchelf --add-needed libfontconfig.so.1 "$out$wrapped" fi diff --git a/script/compile_icon b/script/compile_icon index b3f90f12..f4c55759 100755 --- a/script/compile_icon +++ b/script/compile_icon @@ -3,36 +3,36 @@ # Compile a .icon bundle using actool and update the app's Info.plist # to support macOS Sequoia's icon tinting feature. # -# Usage: compile_icon -# channel: The release channel (e.g., stable) -# app_bundle_path: Path to the .app bundle (e.g., Warp.app) +# Usage: compile_icon oss +# app_bundle_path: Path to the Galaxy.app bundle set -e if [ "$#" -ne 2 ]; then - echo "Usage: compile_icon " + echo "Usage: compile_icon oss " exit 1 fi CHANNEL="$1" APP_BUNDLE_PATH="$2" +if [[ "$CHANNEL" != "oss" ]]; then + echo "Error: only the oss release channel is supported" >&2 + exit 1 +fi + # Determine the repository root directory REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ICON_BUNDLE_PATH="$REPO_ROOT/app/channels/$CHANNEL/icon/AppIcon.icon" -# Only compile if the .icon bundle exists for this channel. +# Only compile the OSS .icon bundle. if [[ ! -d "$ICON_BUNDLE_PATH" ]]; then - if [[ "$CHANNEL" = "oss" ]]; then - echo "Warning: no .icon bundle found for $CHANNEL channel at $ICON_BUNDLE_PATH; skipping adaptive icon compilation." >&2 - exit 0 - fi echo "Error: .icon bundle not found at $ICON_BUNDLE_PATH" >&2 exit 1 fi -echo "Compiling .icon bundle for $CHANNEL channel" +echo "Compiling Galaxy OSS .icon bundle" BUNDLED_RESOURCES_DIR="$APP_BUNDLE_PATH/Contents/Resources" PARTIAL_INFO_PLIST="$(dirname "$APP_BUNDLE_PATH")/partial-icon-info.plist" diff --git a/script/copy_conditional_skills b/script/copy_conditional_skills index fe9ca538..f2232da6 100755 --- a/script/copy_conditional_skills +++ b/script/copy_conditional_skills @@ -6,14 +6,10 @@ # copy_conditional_skills # # Arguments: -# channel: Release channel (local, dev, preview, stable). +# channel: Release channel (oss or integration). # gated_skills_src: Path to resources/channel-gated-skills/. # dest_skills_dir: Destination skills directory (e.g. .../bundled/skills/). # -# Gating is progressive: earlier gates include all skills from later gates. -# For example, a dogfood build includes skills from both dogfood/ and -# preview/. The stable channel has no gate — stable-ready skills belong -# in resources/bundled/skills/ (the always-bundled directory). set -e @@ -26,83 +22,18 @@ CHANNEL="$1" GATED_SKILLS_SRC="$2" DEST_SKILLS_DIR="$3" -# Gate labels ordered from most-inclusive to least-inclusive. -# A channel's gate includes all gates at or after its position. -GATE_ORDER=("dogfood" "preview") - if [ ! -d "$GATED_SKILLS_SRC" ]; then exit 0 fi -# Error out if a stable/ gate directory exists — stable skills should live -# in the always-bundled resources/bundled/skills/ directory instead. -if [ -d "$GATED_SKILLS_SRC/stable" ]; then - echo "Error: found a 'stable/' directory in $GATED_SKILLS_SRC." >&2 - echo "The stable channel does not use gated skills. Move stable-ready skills to resources/bundled/skills/ (the always-bundled directory) instead." >&2 - exit 1 -fi - -# Map the release channel to its gate label. +# OSS and integration bundles have no gated skills. case "$CHANNEL" in - local|dev) GATE="dogfood" ;; - preview) GATE="preview" ;; - *) + oss|integration) echo " Channel '$CHANNEL' has no gated skills, skipping" exit 0 ;; + *) + echo "Error: unsupported release channel '$CHANNEL'" >&2 + exit 1 + ;; esac - -# Build the set of included gates (progressive: this gate and all after it). -INCLUDED_GATES=() -FOUND=false -for g in "${GATE_ORDER[@]}"; do - if [ "$g" = "$GATE" ]; then - FOUND=true - fi - if [ "$FOUND" = true ]; then - INCLUDED_GATES+=("$g") - fi -done - -# Helper: check if a value is in the included gates list. -is_included() { - local needle="$1" - for g in "${INCLUDED_GATES[@]}"; do - if [ "$g" = "$needle" ]; then - return 0 - fi - done - return 1 -} - -# Iterate over gate directories and copy matching skills. -for gate_dir in "$GATED_SKILLS_SRC"/*/; do - # Skip if the glob didn't match anything. - [ -d "$gate_dir" ] || continue - - gate_name="$(basename "$gate_dir")" - - if ! is_included "$gate_name"; then - # List the skills that would have been included for the skip message. - skills="" - for skill_dir in "$gate_dir"/*/; do - [ -d "$skill_dir" ] || continue - if [ -n "$skills" ]; then - skills="$skills, " - fi - skills="$skills$(basename "$skill_dir")" - done - echo " Skipping gate '$gate_name' (channel '$CHANNEL') — would include: $skills" - continue - fi - - for skill_dir in "$gate_dir"/*/; do - [ -d "$skill_dir" ] || continue - - skill_name="$(basename "$skill_dir")" - dest="$DEST_SKILLS_DIR/$skill_name" - echo " Copying gated skill: $skill_name (gate: $gate_name)" - mkdir -p "$dest" - cp -R "$skill_dir"/. "$dest"/ - done -done diff --git a/script/install_cargo_build_deps b/script/install_cargo_build_deps index 2414a58e..d33e00d1 100755 --- a/script/install_cargo_build_deps +++ b/script/install_cargo_build_deps @@ -14,10 +14,6 @@ if [ "${GITHUB_ACTIONS}" != "true" ]; then cargo binstall --force -y diesel_cli fi -# Install the internal channel config binary. This will fail gracefully for -# external contributors who don't have access to the private configuration. -"$PWD"/script/install_channel_config || echo "Skipping internal channel config installation (no repo access)." - if [ "$(uname -s)" = "Darwin" ]; then "$PWD"/script/macos/install_build_deps fi diff --git a/script/install_channel_config b/script/install_channel_config deleted file mode 100755 index b6636f00..00000000 --- a/script/install_channel_config +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash -# -# Installs the warp_channel_config binary at a pinned revision. -# -# This script acts as a lockfile: the REVISION variable pins the exact version -# of the config binary to the code that reads its output. Update REVISION when -# the config binary changes. -# -# Usage: -# ./script/install_channel_config # install if not already at pinned rev -# ./script/install_channel_config --force # force reinstall - -REPO="ssh://git@github.com/warpdotdev/warp-channel-config.git" -REVISION="97a199b5bba11af9c7d3bd43dfb3669316d1f0f8" -BIN_NAME="warp-channel-config" - -# Check for repo access before attempting to `cargo install` the binary. -if ! git ls-remote --exit-code "${REPO}" HEAD >/dev/null 2>&1; then - echo "Cannot access ${REPO} (no SSH access?). Skipping install." - exit 1 -fi - -FORCE_FLAG="" -if [ "${1:-}" = "--force" ]; then - FORCE_FLAG="--force" -fi - -cargo install ${FORCE_FLAG} --git "${REPO}" --rev "${REVISION}" --bin "${BIN_NAME}" diff --git a/script/linux/bundle b/script/linux/bundle index 2b25dc86..92036372 100755 --- a/script/linux/bundle +++ b/script/linux/bundle @@ -17,8 +17,8 @@ cleanup() { # Run cleanup() when the script terminates (whether it succeeded or failed). trap cleanup EXIT -# By default we build dev bundles. -RELEASE_CHANNEL="dev" +# Build the OSS bundle. +RELEASE_CHANNEL="oss" FEATURES="release_bundle" EXTRA_FEATURES="" PACKAGES=( appimage ) @@ -140,21 +140,10 @@ DIST_DIR="$CARGO_TARGET_OUTPUT_ROOT/dist" if [[ $DEBUG = true ]]; then CARGO_PROFILE="dev" -elif [[ $RELEASE_CHANNEL = "local" || $RELEASE_CHANNEL = "dev" ]]; then - # For dev bundles, we want to enable debug assertions to - # catch violations that would otherwise silently pass in - # a normal release build (e.g. in stable). - if [[ "$ARTIFACT" == "cli" || "$ARTIFACT" == "galaxyctrl" ]]; then - CARGO_PROFILE="release-cli-debug_assertions" - else - CARGO_PROFILE="release-lto-debug_assertions" - fi +elif [[ "$ARTIFACT" == "cli" || "$ARTIFACT" == "galaxyctrl" ]]; then + CARGO_PROFILE="release-cli" else - if [[ "$ARTIFACT" == "cli" || "$ARTIFACT" == "galaxyctrl" ]]; then - CARGO_PROFILE="release-cli" - else - CARGO_PROFILE="release-lto" - fi + CARGO_PROFILE="release-lto" fi if [[ "$CARGO_PROFILE" == "dev" ]]; then @@ -168,54 +157,20 @@ fi OUT_DIR="$CARGO_TARGET_OUTPUT_DIR/bundle/linux" mkdir -p "$OUT_DIR" -# Update parameters based on the target release channel. -# -# APP_NAME here must match the value used in Rust as the -# application name; see app/src/channel.rs. -# -# GALAXY_BIN is the name of the binary produced by cargo; -# BINARY_NAME is the desired name of the binary in the final package. -if [[ $RELEASE_CHANNEL = "local" ]]; then - GALAXY_BIN="galaxy-local" - BINARY_NAME="galaxy-local" - APP_NAME="GalaxyLocal" - FEATURES="$FEATURES,agent_mode_debug" - export HANDLE_MARKDOWN=1 -elif [[ $RELEASE_CHANNEL = "dev" ]]; then - GALAXY_BIN="galaxy-dev" - BINARY_NAME="galaxy-dev" - APP_NAME="GalaxyDev" - FEATURES="$FEATURES,agent_mode_debug" - # Enable heap usage tracking & profiling using jemalloc through pprof. - FEATURES="$FEATURES,jemalloc_pprof,heap_usage_tracking" - export HANDLE_MARKDOWN=1 -elif [[ $RELEASE_CHANNEL = "preview" ]]; then - GALAXY_BIN="galaxy-preview" - BINARY_NAME="galaxy-preview" - APP_NAME="GalaxyPreview" - FEATURES="$FEATURES,preview_channel" - # Enable heap usage tracking & profiling using jemalloc through pprof. - FEATURES="$FEATURES,jemalloc_pprof,heap_usage_tracking" -elif [[ $RELEASE_CHANNEL = "stable" ]]; then - GALAXY_BIN="stable" - BINARY_NAME="galaxy" - APP_NAME="Galaxy" -elif [[ $RELEASE_CHANNEL = "oss" ]]; then - GALAXY_BIN="galaxy-oss" - BINARY_NAME="galaxy-oss" - APP_NAME="GalaxyOss" +if [[ "$RELEASE_CHANNEL" != "oss" ]]; then + echo "Error: only the oss release channel is supported" >&2 + exit 1 fi +# OSS is the only supported release channel. +GALAXY_BIN="galaxy-oss" +BINARY_NAME="galaxy-oss" +APP_NAME="GalaxyOss" + # Artifact-specific binary naming if [[ "$ARTIFACT" == "cli" ]]; then # Keep packaged CLI names aligned with `Channel::cli_command_name`. - case "$RELEASE_CHANNEL" in - stable) BINARY_NAME="galaxy-ai" ;; - preview) BINARY_NAME="galaxy-ai-preview" ;; - dev) BINARY_NAME="galaxy-ai-dev" ;; - local) BINARY_NAME="galaxy-ai-local" ;; - oss) BINARY_NAME="galaxy-ai-oss" ;; - esac + BINARY_NAME="galaxy-ai-oss" elif [[ "$ARTIFACT" == "galaxyctrl" ]]; then BINARY_NAME="galaxyctrl" PACKAGES=() @@ -235,7 +190,7 @@ if [[ -n "$EXTRA_FEATURES" ]]; then FEATURES="$FEATURES,$EXTRA_FEATURES" fi -BUNDLE_ID="dev.galaxy.$APP_NAME" +BUNDLE_ID="com.galaxy.GalaxyOss" EXECUTABLE_PATH="$CARGO_TARGET_OUTPUT_DIR/$GALAXY_BIN" DEBUG_EXECUTABLE_PATH="$EXECUTABLE_PATH.debug" @@ -261,15 +216,8 @@ if [[ "$BUILD" == "true" ]]; then cp "$EXECUTABLE_PATH" "$DEBUG_EXECUTABLE_PATH" echo "Stripping debug symbols from '$EXECUTABLE_PATH'" - if [[ $RELEASE_CHANNEL = "dev" ]]; then - # For dev builds, only strip debug symbols, as we want to keep some - # symbols for profiling purposes. - "${WARP_MUSL_STRIP:-strip}" --strip-debug "$EXECUTABLE_PATH" - else - # For production builds, strip all symbols, to keep the binary size - # smaller. - "${WARP_MUSL_STRIP:-strip}" --strip-all "$EXECUTABLE_PATH" - fi + # Strip all symbols to keep the shipped OSS binary small. + "${WARP_MUSL_STRIP:-strip}" --strip-all "$EXECUTABLE_PATH" else echo 'Skipping `cargo build` step due to --skip-build argument' fi diff --git a/script/linux/bundle_appimage b/script/linux/bundle_appimage index 5b4fa6fe..98dd579f 100755 --- a/script/linux/bundle_appimage +++ b/script/linux/bundle_appimage @@ -7,8 +7,8 @@ # - DIST_DIR: A temporary directory we can use for staging files as we build the package. # - OUT_DIR: The directory into which we should place the final package. # - CARGO_TARGET_OUTPUT_DIR: The cargo target directory containing build output. -# - RELEASE_CHANNEL: The release channel we're bundling (e.g.: "dev"). -# - BUNDLE_ID: The app ID for the bundle (e.g.: "dev.galaxy.GalaxyDev"). +# - RELEASE_CHANNEL: The release channel we're bundling ("oss"). +# - BUNDLE_ID: The app ID for the bundle ("com.galaxy.GalaxyOss"). # - EXECUTABLE_PATH: The path to the compiled executable we want to install. # - BINARY_NAME: The name that the compiled executable should have on the target machine. # - APPIMAGE_NAME: The name of the AppImage file to produce. diff --git a/script/linux/bundle_arch b/script/linux/bundle_arch index 0b99b9e1..5b840268 100755 --- a/script/linux/bundle_arch +++ b/script/linux/bundle_arch @@ -7,8 +7,8 @@ # - DIST_DIR: A temporary directory we can use for staging files as we build the package. # - OUT_DIR: The directory into which we should place the final package. # - CARGO_TARGET_OUTPUT_DIR: The cargo target directory containing build output. -# - RELEASE_CHANNEL: The release channel we're bundling (e.g.: "dev"). -# - BUNDLE_ID: The app ID for the bundle (e.g.: "dev.galaxy.GalaxyDev"). +# - RELEASE_CHANNEL: The release channel we're bundling ("oss"). +# - BUNDLE_ID: The app ID for the bundle ("com.galaxy.GalaxyOss"). # - EXECUTABLE_PATH: The path to the compiled executable we want to install. # - BINARY_NAME: The name that the compiled executable should have on the target machine. # - ARTIFACT: Which artifact to build: app or cli. diff --git a/script/linux/bundle_deb b/script/linux/bundle_deb index 2a6ed5e9..ae4ae4ef 100755 --- a/script/linux/bundle_deb +++ b/script/linux/bundle_deb @@ -7,8 +7,8 @@ # - DIST_DIR: A temporary directory we can use for staging files as we build the package. # - OUT_DIR: The directory into which we should place the final package. # - CARGO_TARGET_OUTPUT_DIR: The cargo target directory containing build output. -# - RELEASE_CHANNEL: The release channel we're bundling (e.g.: "dev"). -# - BUNDLE_ID: The app ID for the bundle (e.g.: "dev.galaxy.GalaxyDev"). +# - RELEASE_CHANNEL: The release channel we're bundling ("oss"). +# - BUNDLE_ID: The app ID for the bundle ("com.galaxy.GalaxyOss"). # - EXECUTABLE_PATH: The path to the compiled executable we want to install. # - BINARY_NAME: The name that the compiled executable should have on the target machine. # - ARTIFACT: Which artifact to build: app or cli. @@ -18,15 +18,6 @@ set -e source "$WORKSPACE_ROOT_DIR/script/linux/package_metadata" TEMPLATE_DIR="$WORKSPACE_ROOT_DIR/resources/linux/debian/$ARTIFACT" -# Add a simple test to make sure we're generating the appropriate repository -# name for the stable channel. -if [ "$RELEASE_CHANNEL" = "stable" ]; then - if [ "$REPO_NAME" != "warpdotdev" ]; then - echo "::error ::Unexpected repo name for $RELEASE_CHANNEL channel: $REPO_NAME (expected \"warpdotdev\")" - exit 1 - fi -fi - BUILD_ARCH="${BUILD_ARCH:-$(uname -m)}" if [ "$BUILD_ARCH" = "aarch64" ]; then ARCH="arm64" diff --git a/script/linux/bundle_install b/script/linux/bundle_install index abbc345f..ddda6026 100755 --- a/script/linux/bundle_install +++ b/script/linux/bundle_install @@ -8,8 +8,8 @@ # - WORKSPACE_ROOT_DIR: The root directory of the Cargo workspace. # - CARGO_TARGET_OUTPUT_DIR: The cargo target directory containing build output. # - OPT_DIR: The absolute path to our install directory (under /opt) on the target machine. -# - RELEASE_CHANNEL: The release channel we're bundling (e.g.: "dev"). -# - BUNDLE_ID: The app ID for the bundle (e.g.: "dev.galaxy.GalaxyDev"). +# - RELEASE_CHANNEL: The release channel we're bundling ("oss"). +# - BUNDLE_ID: The app ID for the bundle ("com.galaxy.GalaxyOss"). # - EXECUTABLE_PATH: The path to the compiled executable we want to install. # - BINARY_NAME: The name that the compiled executable should have on the target machine. # - ARTIFACT: Which artifact to build: app or cli. @@ -52,9 +52,9 @@ EOF "${TARGET_DIR}/usr/bin/$GALAXY_AI_COMMAND_NAME" \ "${TARGET_DIR}/usr/bin/$GALAXY_CONTROL_COMMAND_NAME" - install -Dm644 "$WORKSPACE_ROOT_DIR/app/channels/$RELEASE_CHANNEL/$BUNDLE_ID.desktop" "${TARGET_DIR}/usr/share/applications/$BUNDLE_ID.desktop" + install -Dm644 "$WORKSPACE_ROOT_DIR/app/channels/oss/$BUNDLE_ID.desktop" "${TARGET_DIR}/usr/share/applications/$BUNDLE_ID.desktop" for size in 16x16 32x32 64x64 128x128 256x256 512x512; do - src_path="$WORKSPACE_ROOT_DIR/app/channels/$RELEASE_CHANNEL/icon/no-padding/$size.png" + src_path="$WORKSPACE_ROOT_DIR/app/channels/oss/icon/no-padding/$size.png" if [[ -f "$src_path" ]]; then install -Dm644 "$src_path" "${TARGET_DIR}/usr/share/icons/hicolor/$size/apps/$BUNDLE_ID.png" fi diff --git a/script/linux/bundle_rpm b/script/linux/bundle_rpm index 3b453bd7..20e42fc9 100755 --- a/script/linux/bundle_rpm +++ b/script/linux/bundle_rpm @@ -7,8 +7,8 @@ # - DIST_DIR: A temporary directory we can use for staging files as we build the package. # - OUT_DIR: The directory into which we should place the final package. # - CARGO_TARGET_OUTPUT_DIR: The cargo target directory containing build output. -# - RELEASE_CHANNEL: The release channel we're bundling (e.g.: "dev"). -# - BUNDLE_ID: The app ID for the bundle (e.g.: "dev.galaxy.GalaxyDev"). +# - RELEASE_CHANNEL: The release channel we're bundling ("oss"). +# - BUNDLE_ID: The app ID for the bundle ("com.galaxy.GalaxyOss"). # - EXECUTABLE_PATH: The path to the compiled executable we want to install. # - BINARY_NAME: The name that the compiled executable should have on the target machine. # - ARTIFACT: Which artifact to build: app or cli. diff --git a/script/linux/linuxdeploy-plugin-warp b/script/linux/linuxdeploy-plugin-warp index 1717f117..34aa6115 100755 --- a/script/linux/linuxdeploy-plugin-warp +++ b/script/linux/linuxdeploy-plugin-warp @@ -12,8 +12,8 @@ # as installing a .deb or .rpm package. # # Required environment variables: -# WARP_BINARY_NAME: Name of the binary (e.g. "galaxy-dev"). -# WARP_PACKAGE_NAME: Package directory name (e.g. "galaxy-terminal-dev"). +# WARP_BINARY_NAME: Name of the binary (e.g. "galaxy-oss"). +# WARP_PACKAGE_NAME: Package directory name (e.g. "galaxy-oss"). # WARP_BUNDLED_RESOURCES_DIR: Path to the staged resources directory to copy. set -e diff --git a/script/linux/package_metadata b/script/linux/package_metadata index 5099c441..5e4a5fc0 100644 --- a/script/linux/package_metadata +++ b/script/linux/package_metadata @@ -3,32 +3,19 @@ # Derives Linux package metadata from Galaxy's release channel and artifact. # This file is sourced by the individual package builders. -case "$RELEASE_CHANNEL" in - stable) - CHANNEL_SUFFIX="" - ;; - local|dev|preview|oss) - CHANNEL_SUFFIX="-$RELEASE_CHANNEL" - ;; - *) - echo "::error ::Unknown RELEASE_CHANNEL: $RELEASE_CHANNEL" >&2 - return 1 - ;; -esac +if [[ "$RELEASE_CHANNEL" != "oss" ]]; then + echo "::error ::Only the oss release channel is supported" >&2 + return 1 +fi + +CHANNEL_SUFFIX="-oss" GALAXY_AI_COMMAND_NAME="galaxy-ai$CHANNEL_SUFFIX" GALAXY_CONTROL_COMMAND_NAME="galaxyctrl$CHANNEL_SUFFIX" case "$ARTIFACT" in app) - # The OSS desktop entry invokes the Cargo binary directly. Other channels - # expose the traditional `*-terminal` launcher independently of the Cargo - # binary name. - if [[ "$RELEASE_CHANNEL" == "oss" ]]; then - PACKAGE_NAME="galaxy-oss" - else - PACKAGE_NAME="galaxy-terminal$CHANNEL_SUFFIX" - fi + PACKAGE_NAME="galaxy-oss" ;; cli) PACKAGE_NAME="galaxy-ai$CHANNEL_SUFFIX" @@ -41,4 +28,4 @@ esac # Repository provisioning still uses the existing release infrastructure and # templates. This name is intentionally independent of Galaxy package names. -REPO_NAME="warpdotdev$CHANNEL_SUFFIX" +REPO_NAME="galaxy-oss" diff --git a/script/linux/test_bundle_galaxyctrl b/script/linux/test_bundle_galaxyctrl index ace8743c..6a5af044 100755 --- a/script/linux/test_bundle_galaxyctrl +++ b/script/linux/test_bundle_galaxyctrl @@ -49,16 +49,16 @@ PATH="$temp_dir/bin:$PATH" \ grep -qx -- '--features' "$temp_dir/cargo-args" grep -qx -- 'galaxy' "$temp_dir/cargo-args" -grep -qx -- 'galaxy-dev' "$temp_dir/cargo-args" -grep -qx -- 'release_bundle,agent_mode_debug,jemalloc_pprof,heap_usage_tracking,standalone,galaxy_control_cli,smoke_feature' "$temp_dir/cargo-args" +grep -qx -- 'galaxy-oss' "$temp_dir/cargo-args" +grep -qx -- 'release_bundle,standalone,galaxy_control_cli,smoke_feature' "$temp_dir/cargo-args" -profile_dir="$temp_dir/target/$target/release-cli-debug_assertions" +profile_dir="$temp_dir/target/$target/release-cli" mkdir -p "$profile_dir" -cat > "$profile_dir/galaxy-dev" <<'EOF' +cat > "$profile_dir/galaxy-oss" <<'EOF' #!/usr/bin/env bash printf '%s\n' "$@" > "$FORWARDED_ARGS_FILE" EOF -chmod +x "$profile_dir/galaxy-dev" +chmod +x "$profile_dir/galaxy-oss" PATH="$temp_dir/bin:$PATH" \ CARGO_TARGET_DIR="$temp_dir/target" \ diff --git a/script/linux/test_package_metadata b/script/linux/test_package_metadata index 47cf5de9..565bf0c4 100755 --- a/script/linux/test_package_metadata +++ b/script/linux/test_package_metadata @@ -19,32 +19,20 @@ assert_metadata() { [[ "$GALAXY_CONTROL_COMMAND_NAME" == "galaxyctrl$expected_suffix" ]] } -assert_metadata app stable "" galaxy-terminal -assert_metadata app local -local galaxy-terminal-local -assert_metadata app dev -dev galaxy-terminal-dev -assert_metadata app preview -preview galaxy-terminal-preview assert_metadata app oss -oss galaxy-oss - -assert_metadata cli stable "" galaxy-ai -assert_metadata cli local -local galaxy-ai-local -assert_metadata cli dev -dev galaxy-ai-dev -assert_metadata cli preview -preview galaxy-ai-preview assert_metadata cli oss -oss galaxy-ai-oss assert_desktop_launcher() { local channel="$1" local app_name="$2" local expected_launcher="$3" - local desktop_file="$workspace_root/app/channels/$channel/dev.galaxy.$app_name.desktop" + local desktop_file + desktop_file="$workspace_root/app/channels/oss/com.galaxy.$app_name.desktop" [[ -f "$desktop_file" ]] grep -qx -- "Exec=$expected_launcher %U" "$desktop_file" } -assert_desktop_launcher stable Galaxy galaxy-terminal -assert_desktop_launcher local GalaxyLocal galaxy-terminal-local -assert_desktop_launcher dev GalaxyDev galaxy-terminal-dev -assert_desktop_launcher preview GalaxyPreview galaxy-terminal-preview assert_desktop_launcher oss GalaxyOss galaxy-oss grep -qx -- 'Package: @@PACKAGE_NAME@@' \ @@ -68,7 +56,7 @@ stage_dir="$temp_dir/stage" mkdir -p \ "$fake_workspace/bin" \ "$fake_workspace/script/linux" \ - "$fake_workspace/app/channels/dev" \ + "$fake_workspace/app/channels/oss" \ "$stage_dir" ln -s \ "$workspace_root/script/linux/package_metadata" \ @@ -90,29 +78,29 @@ mkdir -p "$(dirname "${paths[1]}")" cp "${paths[0]}" "${paths[1]}" EOF chmod +x "$fake_workspace/bin/install" -cat > "$fake_workspace/app/channels/dev/dev.galaxy.GalaxyDev.desktop" <<'EOF' +cat > "$fake_workspace/app/channels/oss/com.galaxy.GalaxyOss.desktop" <<'EOF' [Desktop Entry] -Name=Galaxy Dev -Exec=galaxy-terminal-dev %U +Name=GalaxyOss +Exec=galaxy-oss %U EOF -cat > "$temp_dir/galaxy-dev" <<'EOF' +cat > "$temp_dir/galaxy-oss" <<'EOF' #!/usr/bin/env bash exit 0 EOF -chmod +x "$temp_dir/galaxy-dev" +chmod +x "$temp_dir/galaxy-oss" PATH="$fake_workspace/bin:$PATH" \ WORKSPACE_ROOT_DIR="$fake_workspace" \ - RELEASE_CHANNEL=dev \ + RELEASE_CHANNEL=oss \ ARTIFACT=app \ - BUNDLE_ID=dev.galaxy.GalaxyDev \ - EXECUTABLE_PATH="$temp_dir/galaxy-dev" \ - BINARY_NAME=galaxy-dev \ - OPT_DIR=/opt/warpdotdev/galaxy-terminal-dev \ - CARGO_PROFILE=dev \ + BUNDLE_ID=com.galaxy.GalaxyOss \ + EXECUTABLE_PATH="$temp_dir/galaxy-oss" \ + BINARY_NAME=galaxy-oss \ + OPT_DIR=/opt/warpdotdev/galaxy-oss \ + CARGO_PROFILE=release \ "$workspace_root/script/linux/bundle_install" "$stage_dir" -grep -Fq 'exec -a "$0" "/opt/warpdotdev/galaxy-terminal-dev/galaxy-dev" "$@"' \ - "$stage_dir/usr/bin/galaxy-ai-dev" -grep -Fq 'exec -a "$0" "/opt/warpdotdev/galaxy-terminal-dev/galaxy-dev" --galaxyctrl "$@"' \ - "$stage_dir/usr/bin/galaxyctrl-dev" +grep -Fq 'exec -a "$0" "/opt/warpdotdev/galaxy-oss/galaxy-oss" "$@"' \ + "$stage_dir/usr/bin/galaxy-ai-oss" +grep -Fq 'exec -a "$0" "/opt/warpdotdev/galaxy-oss/galaxy-oss" --galaxyctrl "$@"' \ + "$stage_dir/usr/bin/galaxyctrl-oss" diff --git a/script/macos/bundle b/script/macos/bundle index 6325fca9..50e38ac3 100755 --- a/script/macos/bundle +++ b/script/macos/bundle @@ -97,8 +97,8 @@ UNIVERSAL_BINARY=true BUILD_BINARY=true TARGET_ARCH="" DMG_NAME_SUFFIX="" -# By default we build dev bundles. -RELEASE_CHANNEL="dev" +# Build the OSS bundle. +RELEASE_CHANNEL="oss" FEATURES="release_bundle,cocoa_sentry,extern_plist" REGISTER_SERVICES=true DEBUG=false @@ -184,7 +184,7 @@ while (( "$#" )); do OPEN_AFTER_BUNDLE=true shift ;; - # Specify the release channel (local, dev, preview, stable, oss) + # Specify the release channel (oss) -c|--channel) if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then RELEASE_CHANNEL=$2 @@ -246,21 +246,10 @@ eval set -- "$PARAMS" # Infer a cargo profile from the bundle configuration. if [[ $DEBUG = true ]]; then CARGO_PROFILE="dev" -elif [[ $RELEASE_CHANNEL = "local" || $RELEASE_CHANNEL = "dev" ]]; then - # For dev bundles, we want to enable debug assertions to - # catch violations that would otherwise silently pass in - # a normal release build (e.g. in stable). - if [[ "$ARTIFACT" == "cli" || "$ARTIFACT" == "galaxyctrl" ]]; then - CARGO_PROFILE="release-cli-debug_assertions" - else - CARGO_PROFILE="release-lto-debug_assertions" - fi +elif [[ "$ARTIFACT" == "cli" || "$ARTIFACT" == "galaxyctrl" ]]; then + CARGO_PROFILE="release-cli" else - if [[ "$ARTIFACT" == "cli" || "$ARTIFACT" == "galaxyctrl" ]]; then - CARGO_PROFILE="release-cli" - else - CARGO_PROFILE="release-lto" - fi + CARGO_PROFILE="release-lto" fi TARGET_PROFILE_DIR="$CARGO_PROFILE" @@ -268,53 +257,13 @@ if [[ "$CARGO_PROFILE" == "dev" ]]; then TARGET_PROFILE_DIR="debug" fi -if [[ $RELEASE_CHANNEL = "local" ]]; then - WARP_BIN="galaxy-local" - BUNDLE_ID="com.samsung.Galaxy-Local" - WARP_APP_NAME="Galaxy Local" - WARP_SCHEME_NAME="galaxy" - FEATURES="$FEATURES,agent_mode_debug" - # For local builds, use different versions of our bundled frameworks (e.g.: - # Sentry). This needs to be exported so it can be referenced by - # app/build.rs later, while running `cargo bundle`. - export FRAMEWORK_OVERRIDE="dev" -elif [[ $RELEASE_CHANNEL = "dev" ]]; then - WARP_BIN="galaxy-dev" - BUNDLE_ID="com.samsung.Galaxy-Dev" - WARP_APP_NAME="Galaxy Dev" - WARP_SCHEME_NAME="galaxydev" - FEATURES="$FEATURES,agent_mode_debug" - # Enable heap usage tracking & profiling using jemalloc through pprof. - FEATURES="$FEATURES,jemalloc_pprof,heap_usage_tracking" - # For dev builds, use different versions of our bundled frameworks (e.g.: - # Sentry). This needs to be exported so it can be referenced by - # app/build.rs later, while running `cargo bundle`. - export FRAMEWORK_OVERRIDE="dev" - export HANDLE_MARKDOWN=1 -elif [[ $RELEASE_CHANNEL = "preview" ]]; then - WARP_BIN="galaxy-preview" - BUNDLE_ID="com.samsung.Galaxy-Preview" - WARP_APP_NAME="Galaxy Preview" - WARP_SCHEME_NAME="galaxypreview" - FEATURES="$FEATURES,preview_channel" - # Enable heap usage tracking & profiling using jemalloc through pprof. - FEATURES="$FEATURES,jemalloc_pprof,heap_usage_tracking" -elif [[ $RELEASE_CHANNEL = "stable" ]]; then - WARP_BIN="stable" - BUNDLE_ID="com.samsung.Galaxy" - WARP_APP_NAME="Galaxy" - WARP_SCHEME_NAME="galaxy" - # Enable heap usage tracking & profiling using jemalloc through pprof. - FEATURES="$FEATURES,jemalloc_pprof,heap_usage_tracking" -elif [[ $RELEASE_CHANNEL = "oss" ]]; then - WARP_BIN="galaxy-oss" - BUNDLE_ID="com.samsung.Galaxy" - WARP_APP_NAME="Galaxy" - WARP_SCHEME_NAME="galaxy" - # The OSS channel does not ship Sentry, so drop the cocoa_sentry feature - # (which would otherwise pull in the Sentry framework dependency). - FEATURES="release_bundle,extern_plist" -fi +WARP_BIN="galaxy-oss" +BUNDLE_ID="com.galaxy.GalaxyOss" +WARP_APP_NAME="Galaxy" +WARP_SCHEME_NAME="galaxyoss" +# The OSS channel does not ship Sentry, so drop the cocoa_sentry feature +# (which would otherwise pull in the Sentry framework dependency). +FEATURES="release_bundle,extern_plist" OUT_DIR="target/$TARGET_PROFILE_DIR/bundle/osx" DOCK_TILE_PLUGIN_NAME="GalaxyDockTilePlugin.docktileplugin" @@ -347,6 +296,11 @@ else fi fi +if [[ "$RELEASE_CHANNEL" != "oss" ]]; then + echo "Error: only the oss release channel is supported" >&2 + exit 1 +fi + # Set artifact-specific configuration. if [[ "$ARTIFACT" == cli ]]; then UNIVERSAL_BINARY=false @@ -539,15 +493,8 @@ if [[ "$ARTIFACT" == "app" ]]; then "$WORKSPACE_ROOT_DIR/script/prepare_bundled_pprof" "$HELPERS_DIR" fi - # Determine CLI wrapper script path based on release channel. Each channel's - # value here must match `Channel::cli_command_name` in the Rust source. - if [[ $RELEASE_CHANNEL = "stable" ]]; then - CLI_SCRIPT_PATH="$BUNDLED_RESOURCES_DIR/bin/galaxy-ai" - elif [[ $RELEASE_CHANNEL = "oss" ]]; then - CLI_SCRIPT_PATH="$BUNDLED_RESOURCES_DIR/bin/galaxy-ai-oss" - else - CLI_SCRIPT_PATH="$BUNDLED_RESOURCES_DIR/bin/galaxy-ai-$RELEASE_CHANNEL" - fi + # Keep this name aligned with `Channel::cli_command_name` in the Rust source. + CLI_SCRIPT_PATH="$BUNDLED_RESOURCES_DIR/bin/galaxy-ai-oss" echo "Creating Resources/bin directory and CLI wrapper script..." mkdir -p "$BUNDLED_RESOURCES_DIR/bin" @@ -565,14 +512,8 @@ EOF chmod +x "$CLI_SCRIPT_PATH" if [[ ",$FEATURES," =~ ",galaxy_control_cli," ]]; then - # Each value must match `Channel::galaxyctrl_command_name` in the Rust source. - if [[ $RELEASE_CHANNEL = "stable" ]]; then - GALAXYCTRL_COMMAND_NAME="galaxyctrl" - elif [[ $RELEASE_CHANNEL = "oss" ]]; then - GALAXYCTRL_COMMAND_NAME="galaxyctrl-oss" - else - GALAXYCTRL_COMMAND_NAME="galaxyctrl-$RELEASE_CHANNEL" - fi + # Keep this name aligned with `Channel::galaxyctrl_command_name` in the Rust source. + GALAXYCTRL_COMMAND_NAME="galaxyctrl-oss" GALAXYCTRL_SCRIPT_PATH="$BUNDLED_RESOURCES_DIR/bin/$GALAXYCTRL_COMMAND_NAME" echo "Creating galaxyctrl wrapper script at $GALAXYCTRL_SCRIPT_PATH..." "$WORKSPACE_ROOT_DIR/script/macos/create_galaxyctrl_wrapper" \ diff --git a/script/macos/run b/script/macos/run index 3d923c8e..fba909d1 100755 --- a/script/macos/run +++ b/script/macos/run @@ -4,11 +4,10 @@ # Galaxy as a real 'app' instead of a bare executable, so macOS can treat it # like a real signed app (custom URL schemes, user notifications, etc.). # -# This script is invoked by `./script/run`, which handles cross-platform -# setup (install_channel_config, binary name detection, feature-to-env-var -# mapping). The following env vars are expected to be set by the caller: -# WARP_BIN_NAME — "galaxy-local" or "galaxy-oss" -# WARP_CHANNEL — "local" or "oss" +# This script is invoked by `./script/run`; the caller supplies the OSS +# binary/channel values: +# WARP_BIN_NAME — "galaxy-oss" +# WARP_CHANNEL — "oss" # FEATURES — comma-separated cargo features (already normalized) # Must be called from the root directory of the Galaxy repository. @@ -29,20 +28,15 @@ if [ -z "$TARGET_DIR" ] || [ "$TARGET_DIR" = "null" ]; then TARGET_DIR="${REPO_ROOT}/target" fi -if [ "$WARP_CHANNEL" = "local" ]; then - WARP_APP_PATH="${TARGET_DIR}/debug/bundle/osx/Galaxy Local.app" - WARP_SCHEME_NAME="galaxylocal" -else - WARP_APP_PATH="${TARGET_DIR}/debug/bundle/osx/Galaxy.app" - WARP_SCHEME_NAME="galaxyoss" -fi +WARP_APP_PATH="${TARGET_DIR}/debug/bundle/osx/Galaxy.app" +WARP_SCHEME_NAME="galaxyoss" TARGET_PROFILE_DIR="debug" DONT_OPEN=false # Launches the binary with "open", meaning the Galaxy process is # launched by the MacOS application launcher instead of a shell session. # Note that since Galaxy isn't launched as a child process, using ctrl+c # won't kill the app (but will kill the tail process displaying output). -# tl;dr better simulates running Galaxy Local/OSS +# tl;dr better simulates running Galaxy OSS OPEN_WITH_LAUNCHD=false # Arguments to pass directly to Galaxy (specified after --) @@ -50,10 +44,6 @@ OPEN_WITH_LAUNCHD=false # an application doesn't make sense. WARP_ARGS=() -# Export this variable so it can be referenced by app/build.rs later when -# running `cargo bundle`. -export FRAMEWORK_OVERRIDE="dev" - PARAMS="" while (( "$#" )); do case "$1" in @@ -69,11 +59,7 @@ while (( "$#" )); do --release) echo "Detected release build, pointing at release bundle under ${TARGET_DIR}/release/bundle" TARGET_PROFILE_DIR="release" - if [ "$WARP_CHANNEL" = "local" ]; then - WARP_APP_PATH="${TARGET_DIR}/release/bundle/osx/Galaxy Local.app" - else - WARP_APP_PATH="${TARGET_DIR}/release/bundle/osx/Galaxy.app" - fi + WARP_APP_PATH="${TARGET_DIR}/release/bundle/osx/Galaxy.app" PARAMS="$PARAMS $1" shift ;; @@ -81,11 +67,7 @@ while (( "$#" )); do PROFILE="$2" TARGET_PROFILE_DIR="$PROFILE" shift 2 - if [ "$WARP_CHANNEL" = "local" ]; then - WARP_APP_PATH="${TARGET_DIR}/${PROFILE}/bundle/osx/Galaxy Local.app" - else - WARP_APP_PATH="${TARGET_DIR}/${PROFILE}/bundle/osx/Galaxy.app" - fi + WARP_APP_PATH="${TARGET_DIR}/${PROFILE}/bundle/osx/Galaxy.app" PARAMS="$PARAMS --profile $PROFILE" ;; --open_with_launchd) @@ -171,14 +153,7 @@ if [ "$DONT_OPEN" = false ] ; then if [ "$OPEN_WITH_LAUNCHD" = true ]; then echo "Launching with MacOS application launcher" PATH="" /usr/bin/open "$WARP_APP_PATH" - if [ "$WARP_CHANNEL" = "local" ]; then - LOG_FILE=~/Library/Logs/warp_local.log - elif [ "$WARP_CHANNEL" = "oss" ]; then - LOG_FILE=~/Library/Logs/warp-oss.log - else - echo "Warning: unrecognized WARP_CHANNEL '$WARP_CHANNEL', defaulting to OSS log path" >&2 - LOG_FILE=~/Library/Logs/warp-oss.log - fi + LOG_FILE=~/Library/Logs/warp-oss.log tail -F "$LOG_FILE" else echo "Opening app at $WARP_APP_PATH/Contents/MacOS/$WARP_BIN_NAME" diff --git a/script/macos/test_create_galaxyctrl_wrapper b/script/macos/test_create_galaxyctrl_wrapper index ca5dbb0d..ac68633d 100755 --- a/script/macos/test_create_galaxyctrl_wrapper +++ b/script/macos/test_create_galaxyctrl_wrapper @@ -6,10 +6,10 @@ workspace_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" temp_dir="$(mktemp -d)" trap 'rm -rf "$temp_dir"' EXIT -bundle_dir="$temp_dir/GalaxyDev.app/Contents" -wrapper_path="$bundle_dir/Resources/bin/galaxyctrl-dev" -binary_path="$bundle_dir/MacOS/galaxy-dev" -installed_path="$temp_dir/usr/local/bin/galaxyctrl-dev" +bundle_dir="$temp_dir/Galaxy.app/Contents" +wrapper_path="$bundle_dir/Resources/bin/galaxyctrl-oss" +binary_path="$bundle_dir/MacOS/galaxy-oss" +installed_path="$temp_dir/usr/local/bin/galaxyctrl-oss" forwarded_args_file="$temp_dir/forwarded-args" expected_args_file="$temp_dir/expected-args" @@ -22,7 +22,7 @@ chmod +x "$binary_path" "$workspace_root/script/macos/create_galaxyctrl_wrapper" \ "$wrapper_path" \ - "../../MacOS/galaxy-dev" + "../../MacOS/galaxy-oss" cat > "$expected_args_file" << 'EOF' --galaxyctrl diff --git a/script/prepare_bundled_resources b/script/prepare_bundled_resources index 1bba8730..a634ff8b 100755 --- a/script/prepare_bundled_resources +++ b/script/prepare_bundled_resources @@ -12,8 +12,8 @@ # destination_directory: The directory where resources should be installed. # Resources will be copied to subdirectories within # this path (e.g., $DEST_DIR/skills). -# channel: (Optional) Release channel (local, dev, preview, -# stable). Used to include channel-gated skills. +# channel: (Optional) Release channel. OSS has no gated skills; +# integration remains supported for test bundles. # cargo_profile: (Optional) Cargo build profile to use when # generating the settings schema. Reusing the same # profile as the main build avoids recompiling deps. @@ -86,10 +86,15 @@ if [ -n "$GIT_RELEASE_TAG" ]; then printf '{\n "warp_version": "%s"\n}\n' "$GIT_RELEASE_TAG" > "$VERSION_METADATA_PATH" fi -# Copy channel-gated skills matching the current release channel. +# OSS and integration bundles do not consume channel-gated skills. GATED_SRC="$REPO_ROOT/resources/channel-gated-skills" DEST_SKILLS="$DEST_DIR/bundled/skills" +if [ -n "$CHANNEL" ] && [[ "$CHANNEL" != "oss" && "$CHANNEL" != "integration" ]]; then + echo "Error: unsupported release channel '$CHANNEL'" >&2 + exit 1 +fi + if [ -n "$CHANNEL" ] && [ -d "$GATED_SRC" ]; then echo "Copying channel-gated skills for channel '$CHANNEL'..." "$SCRIPT_DIR/copy_conditional_skills" \ @@ -156,10 +161,7 @@ if [ "${SKIP_SETTINGS_SCHEMA:-}" != "1" ]; then if [ -n "$CARGO_PROFILE" ]; then SCHEMA_CMD+=(--profile "$CARGO_PROFILE") fi - SCHEMA_CMD+=(--manifest-path "$REPO_ROOT/Cargo.toml" --bin generate_settings_schema --) - if [ -n "$CHANNEL" ]; then - SCHEMA_CMD+=(--channel "$CHANNEL") - fi + SCHEMA_CMD+=(--manifest-path "$REPO_ROOT/Cargo.toml" --bin generate_settings_schema -- --channel oss) SCHEMA_CMD+=("$SCHEMA_OUTPUT") "${SCHEMA_CMD[@]}" diff --git a/script/run b/script/run index 411015a4..73cfe82c 100755 --- a/script/run +++ b/script/run @@ -6,10 +6,8 @@ # as a real `.app` bundle (with code signing, plist updates, etc.). On Linux # and Windows it invokes `cargo run` directly for the appropriate binary. # -# This script owns all cross-platform setup (running install_channel_config, -# detecting internal vs OSS builds, and mapping legacy `--features` entries -# to environment variables), so platform-specific scripts can assume those -# values are already provided via environment variables. +# This script owns all cross-platform setup and passes the OSS channel values +# to the platform-specific scripts. set -e @@ -23,17 +21,8 @@ INSTALL_COMMON_SKILLS=1 FORCE_COMMON_SKILLS=0 COMMON_SKILLS_TARGET="${WARP_COMMON_SKILLS_INSTALL_TARGET:-}" -./script/install_channel_config || echo "Skipping internal channel config installation (no repo access)." - - -# If warp_channel_config is on PATH, build the Local channel binary; otherwise build the OSS channel. -if command -v warp-channel-config &>/dev/null; then - WARP_BIN_NAME="galaxy-local" - WARP_CHANNEL="local" -else - WARP_BIN_NAME="galaxy-oss" - WARP_CHANNEL="oss" -fi +WARP_BIN_NAME="galaxy-oss" +WARP_CHANNEL="oss" # Shared argument parsing. macOS-specific flags (--dont-open, # --open_with_launchd, --generate-schema) are forwarded through MAC_ARGS and @@ -122,23 +111,6 @@ if [[ "$INSTALL_COMMON_SKILLS" -eq 1 ]]; then fi fi -# These cargo features were removed and replaced by environment variables read -# by warp-channel-config. Intercept them here so that existing --features -# invocations keep working. -for mapping in \ - "with_local_server:WITH_LOCAL_SERVER" \ - "with_local_session_sharing_server:WITH_LOCAL_SESSION_SHARING_SERVER" \ - "with_sandbox_telemetry:WITH_SANDBOX_TELEMETRY"; do - feature="${mapping%%:*}" - env_var="${mapping##*:}" - if [[ ",$FEATURES," =~ ,"$feature", ]]; then - export "$env_var"=1 - FEATURES="$(echo "$FEATURES" | sed "s/,$feature,/,/; s/^$feature,//; s/,$feature$//; s/^$feature$//")" - FEATURES="$(echo "$FEATURES" | sed 's/,,*/,/g; s/^,//; s/,$//')" - echo "Note: '$feature' is no longer a cargo feature; setting $env_var=1 instead." - fi -done - export FEATURES export WARP_BIN_NAME export WARP_CHANNEL diff --git a/script/run-tui b/script/run-tui index dd5f3256..a0645f1d 100755 --- a/script/run-tui +++ b/script/run-tui @@ -2,29 +2,18 @@ # # Run a local `warp_tui` build. # -# Selects the internal `local` channel when the `warp-channel-config` generator -# is available (mirroring `./script/run`), otherwise falls back to the OSS -# channel so contributors without repo access can still run the TUI. Unlike the -# GUI `./script/run`, the TUI is a console binary, so there is no `.app` bundle -# step — it just runs the appropriate `cargo` binary. +# Runs the OSS TUI binary. Unlike the GUI `./script/run`, the TUI is a +# console binary, so there is no `.app` bundle step. # -# Extra arguments are forwarded to `cargo run` (e.g. `--release`); use `--` to -# pass arguments through to the binary itself. +# Extra arguments are forwarded to `cargo run` (e.g. `--release`). set -e REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")"/.. && pwd)" cd "${REPO_ROOT}" -./script/install_channel_config || echo "Skipping internal channel config installation (no repo access)." - -if command -v warp-channel-config &>/dev/null; then - BIN="warp-tui" - CHANNEL="local" -else - BIN="warp-tui-oss" - CHANNEL="oss" -fi +BIN="warp-tui-oss" +CHANNEL="oss" echo "Running cargo run -p warp_tui --bin ${BIN} (channel: ${CHANNEL})" exec cargo run -p warp_tui --bin "${BIN}" "$@" diff --git a/script/test_galaxy_bundle_targets b/script/test_galaxy_bundle_targets index 3975bc96..258be8ba 100755 --- a/script/test_galaxy_bundle_targets +++ b/script/test_galaxy_bundle_targets @@ -19,17 +19,13 @@ assert_cargo_target() { grep -qx -- 'galaxy' "$args_file" grep -qx -- '--bin' "$args_file" grep -qx -- "$expected_bin" "$args_file" - if grep -Eqx -- 'warp|warp-oss|dev|preview' "$args_file"; then + if grep -Eqx -- 'warp|warp-oss|local|dev|preview|stable' "$args_file"; then echo "Found a removed Cargo package or binary target in $args_file" >&2 exit 1 fi } for channel_and_bin in \ - "local galaxy-local" \ - "dev galaxy-dev" \ - "preview galaxy-preview" \ - "stable stable" \ "oss galaxy-oss" do channel="${channel_and_bin%% *}" @@ -55,18 +51,14 @@ do done macos_bundle="$workspace_root/script/macos/bundle" -grep -Fq -- 'CLI_SCRIPT_PATH="$BUNDLED_RESOURCES_DIR/bin/galaxy-ai"' "$macos_bundle" grep -Fq -- 'CLI_SCRIPT_PATH="$BUNDLED_RESOURCES_DIR/bin/galaxy-ai-oss"' "$macos_bundle" -grep -Fq -- 'CLI_SCRIPT_PATH="$BUNDLED_RESOURCES_DIR/bin/galaxy-ai-$RELEASE_CHANNEL"' "$macos_bundle" if grep -Eq -- 'CLI_SCRIPT_PATH=.*(warp|oz)' "$macos_bundle"; then echo "Found a removed Warp/Oz CLI launcher in $macos_bundle" >&2 exit 1 fi windows_bundle="$workspace_root/script/windows/bundle.ps1" -for expected_bin in galaxy-local galaxy-dev galaxy-preview stable galaxy-oss; do - grep -Fq -- "\$GALAXY_BIN = '$expected_bin'" "$windows_bundle" -done +grep -Fq -- "\$GALAXY_BIN = 'galaxy-oss'" "$windows_bundle" grep -Fq -- 'cargo check -p galaxy' "$windows_bundle" grep -Fq -- 'cargo build -p galaxy' "$windows_bundle" if grep -Eq -- "cargo (check|build) -p warp|\\\$GALAXY_BIN = '(warp|warp-oss|dev|preview)'" "$windows_bundle"; then @@ -75,9 +67,8 @@ if grep -Eq -- "cargo (check|build) -p warp|\\\$GALAXY_BIN = '(warp|warp-oss|dev fi windows_installer="$workspace_root/script/windows/windows-installer.iss" -grep -Fq -- "AppId=galaxy-terminal-{#ReleaseChannel}" "$windows_installer" -grep -Fq -- "CmdScriptName := 'galaxy-ai.cmd'" "$windows_installer" -grep -Fq -- "CmdScriptName := 'galaxy-ai-{#ReleaseChannel}.cmd'" "$windows_installer" +grep -Fq -- "AppId=com.galaxy.GalaxyOss" "$windows_installer" +grep -Fq -- "CmdScriptName := 'galaxy-ai-oss.cmd'" "$windows_installer" grep -Fq -- 'set "GALAXY_CLI_MODE=1"' "$windows_installer" grep -Fq -- 'WizardSmallImageFile="installer-images\galaxy-logo.bmp"' "$windows_installer" grep -Fq -- 'WizardImageFile="installer-images\galaxy-banner.bmp"' "$windows_installer" diff --git a/script/wasm/bundle b/script/wasm/bundle index 2f07f691..ef549472 100755 --- a/script/wasm/bundle +++ b/script/wasm/bundle @@ -18,8 +18,8 @@ fi WORKSPACE_ROOT_DIR="$(pwd)" CARGO_TARGET_DIR="$WORKSPACE_ROOT_DIR/target/wasm32-unknown-unknown" -# By default we build dev bundles. -RELEASE_CHANNEL="dev" +# Build the OSS bundle. +RELEASE_CHANNEL="oss" FEATURES="release_bundle,gui" DEBUG=false @@ -84,11 +84,6 @@ eval set -- "$PARAMS" if [[ $DEBUG = true ]]; then CARGO_PROFILE="dev-wasm" -elif [[ $RELEASE_CHANNEL = "local" || $RELEASE_CHANNEL = "dev" ]]; then - # For dev bundles, we want to enable debug assertions to - # catch violations that would otherwise silently pass in - # a normal release build (e.g. in stable). - CARGO_PROFILE="release-wasm-debug_assertions" else CARGO_PROFILE="release-wasm" fi @@ -110,24 +105,14 @@ mkdir -p "$ASSET_TARGET_DIR" EXTRAS_DIR="$CARGO_TARGET_OUTPUT_DIR/bundle/extras" mkdir -p "$EXTRAS_DIR" -# Update parameters based on the target release channel. -# -# GALAXY_BIN is the name of the binary produced by cargo. -# N.B. The bundled outputs will always be galaxy.js and galaxy_bg.wasm. -if [[ $RELEASE_CHANNEL = "local" ]]; then - GALAXY_BIN="galaxy-local" - FEATURES="$FEATURES,remote_tty" -elif [[ $RELEASE_CHANNEL = "dev" ]]; then - GALAXY_BIN="galaxy-dev" -elif [[ $RELEASE_CHANNEL = "preview" ]]; then - GALAXY_BIN="galaxy-preview" - FEATURES="$FEATURES,preview_channel" -elif [[ $RELEASE_CHANNEL = "stable" ]]; then - GALAXY_BIN="stable" -elif [[ $RELEASE_CHANNEL = "oss" ]]; then - GALAXY_BIN="galaxy-oss" +if [[ "$RELEASE_CHANNEL" != "oss" ]]; then + echo "Error: only the oss release channel is supported" >&2 + exit 1 fi +# OSS is the only supported release channel. +GALAXY_BIN="galaxy-oss" + if [ -n "${FEATURES_OVERRIDE+x}" ]; then FEATURES="$FEATURES_OVERRIDE" fi diff --git a/script/wasm/run b/script/wasm/run index 6b177b99..49ebf411 100755 --- a/script/wasm/run +++ b/script/wasm/run @@ -8,7 +8,7 @@ WASM_BINDGEN_VERSION="$(cargo metadata --format-version 1 | jq -rc '.packages[] cargo install wasm-bindgen-cli --version "$WASM_BINDGEN_VERSION" # We source the bundle script so we can access its calculated $OUT_DIR. -source ./script/wasm/bundle --debug --no-split --channel local "$@" +source ./script/wasm/bundle --debug --no-split --channel oss "$@" BUNDLE_DIR="$(dirname "$OUT_DIR")" diff --git a/script/windows/README.md b/script/windows/README.md index f5042df9..8ea844fc 100644 --- a/script/windows/README.md +++ b/script/windows/README.md @@ -49,9 +49,9 @@ Usage: `iscc