diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 229b09970..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,120 +0,0 @@ -name: Publish snapshot of master branch -on: - push: - branches: - - 'master' - -jobs: - release: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [macos-13, ubuntu-latest, windows-latest] - - steps: - - name: Check out Git repository - uses: actions/checkout@v3 - - - name: Install Node.js, NPM and Yarn - uses: actions/setup-node@v3 - with: - node-version: 16 - - - name: Set snapshot version - shell: bash - run: echo "PACKAGE_VERSION=`npm pkg get version|tr -d '\"'`" >> $GITHUB_ENV - - - name: Cancel job if the package version doesn't match "-snapshot$" - uses: andymckay/cancel-action@0.3 - # We only want to build master if we have a snapshot version - # ..otherwise, building main will clobber releases...sometimes - # due to a race condition. - if: ${{ !endsWith( env.PACKAGE_VERSION, '-snapshot') }} - - - name: Install windows certificates - if: matrix.os == 'windows-latest' - env: - CERT_FILE: ${{ secrets.WIN_CERT }} - shell: bash - run: | - echo "$CERT_FILE" > "./cert-b64.pfx" - certutil -decode "./cert-b64.pfx" "cert.pfx" - ls -al - - name: Install the Apple certificate and provisioning profile - if: matrix.os == 'macos-13' - env: - BUILD_CERTIFICATE_BASE64: ${{ secrets.mac_certs }} - P12_PASSWORD: ${{ secrets.mac_certs_password }} - KEYCHAIN_PASSWORD: ${{ secrets.mac_certs_password }} - run: | - # create variables - CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 - PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision - KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db - - # import certificate and provisioning profile from secrets - echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH - echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH - - # create temporary keychain - security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - security set-keychain-settings -lut 21600 $KEYCHAIN_PATH - security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - - # import certificate to keychain - security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - security list-keychain -d user -s $KEYCHAIN_PATH - - name: Install udev-dev - run: sudo apt update && sudo apt install libudev-dev - if: runner.os == 'Linux' - - name: Workaround a missing python dep - if: matrix.os == 'macos-13' - run: | - sudo -H pip install setuptools - - name: Set up yarn network timeout - run: yarn config set network-timeout 1000000 -g - - - name: Install Yarn dependencies - shell: bash - env: - YARN_GPG: no - GITHUB_RUN_NUMBER: ${{ github.run_number }} - run: yarn - - - name: Release (macos) - if: matrix.os == 'macos-13' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - run: | - yarn run make --arch=universal - - name: Release (non-macos) - shell: bash - if: matrix.os != 'macos-13' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - WINDOWS_CERTIFICATE_PASSWORD: ${{ secrets.win_cert_password }} - run: yarn run make - - name: Generate latest.yml upgrade files - shell: bash - run: | - find out - mkdir out/artifacts - find out/make/zip -name \*.zip -exec cp {} out/artifacts \; - find out/make -name \*.dmg -exec cp {} out/artifacts \; - find out/make -name \*.AppImage -exec cp {} out/artifacts \; - cd out/artifacts - # rename our artifacts to "-snapshot" - # for i in ./*.* ; do mv "$i" "${i/`npm pkg get version|tr -d '\"'`/snapshot}" ; done - node ../../tools/generate-latest.js - - name: Upload latest.yml upgrade files - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: out/artifacts/*.{zip,dmg,AppImage,yml} - tag: v${{ env.PACKAGE_VERSION }} - file_glob: true - prerelease: true - overwrite: true diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index 6a31341f5..000000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,107 +0,0 @@ -name: Publish tagged release -on: - push: - tags: - - 'v*' - -jobs: - release: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [macos-13, ubuntu-latest, windows-latest] - - steps: - - name: Check out Git repository - uses: actions/checkout@v3 - - - name: Install Node.js, NPM and Yarn - uses: actions/setup-node@v3 - with: - node-version: 16 - - - name: Set package version - shell: bash - run: echo "PACKAGE_VERSION=`npm pkg get version|tr -d '\"'`" >> $GITHUB_ENV - - - name: Cancel job if the package version matches "-snapshot$" - uses: andymckay/cancel-action@0.3 - # We only want to build master if we have a snapshot version - # ..otherwise, building main will clobber releases...sometimes - # due to a race condition. - if: ${{ endsWith( env.PACKAGE_VERSION, '-snapshot') }} - - - name: Install the Apple certificate and provisioning profile - if: matrix.os == 'macos-13' && startsWith(github.ref, 'refs/tags/') - env: - BUILD_CERTIFICATE_BASE64: ${{ secrets.mac_certs }} - P12_PASSWORD: ${{ secrets.mac_certs_password }} - KEYCHAIN_PASSWORD: ${{ secrets.mac_certs_password }} - run: | - # create variables - CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 - PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision - KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db - - # import certificate and provisioning profile from secrets - echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH - echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH - - # create temporary keychain - security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - security set-keychain-settings -lut 21600 $KEYCHAIN_PATH - security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH - - # import certificate to keychain - security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH - security list-keychain -d user -s $KEYCHAIN_PATH - - name: Install udev-dev - run: sudo apt update && sudo apt install libudev-dev - if: runner.os == 'Linux' - - name: Workaround a missing python dep - if: matrix.os == 'macos-13' - run: | - sudo -H pip install setuptools - - name: Set up yarn network timeout - run: yarn config set network-timeout 1000000 -g - - - name: Install Yarn dependencies - env: - YARN_GPG: no - GITHUB_RUN_NUMBER: ${{ github.run_number }} - run: yarn - - name: Release (macos) - if: matrix.os == 'macos-13' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - APPLE_ID: ${{ secrets.APPLE_ID }} - APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} - APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} - run: | - yarn run publish --arch=universal - - name: Release (non-macos) - if: matrix.os != 'macos-13' - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: yarn run publish - - name: Generate latest.yml upgrade files - shell: bash - run: | - find out - mkdir out/artifacts - find out/make/zip -name \*.zip -exec cp {} out/artifacts \; - find out/make -name \*.dmg -exec cp {} out/artifacts \; - find out/make -name \*.AppImage -exec cp {} out/artifacts \; - cd out/artifacts - node ../../tools/generate-latest.js - - - name: Upload latest.yml upgrade files - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: out/artifacts/*.yml* - tag: ${{ github.ref }} - overwrite: true - file_glob: true - diff --git a/.github/workflows/pull-requests.yml b/.github/workflows/pull-requests.yml deleted file mode 100644 index 43d619f61..000000000 --- a/.github/workflows/pull-requests.yml +++ /dev/null @@ -1,88 +0,0 @@ -name: Build & publish pull request artifacts - -on: - pull_request: - -jobs: - build: - runs-on: ${{ matrix.os }} - - strategy: - matrix: - os: [macos-13, ubuntu-latest, windows-latest] - - steps: - - name: Check out Git repository - uses: actions/checkout@v3 - - - name: Install Node.js, NPM and Yarn - uses: actions/setup-node@v3 - with: - node-version: 16 - - name: Install udev-dev - run: sudo apt update && sudo apt install libudev-dev - if: runner.os == 'Linux' - - name: Workaround a missing python dep - if: matrix.os == 'macos-13' - run: | - sudo -H pip install setuptools - - name: Set up yarn network timeout - run: yarn config set network-timeout 1000000 -g - - - name: Install Yarn dependencies - env: - YARN_GPG: no - GITHUB_RUN_NUMBER: ${{ github.run_number }} - run: yarn - - name: Release (macos) - if: matrix.os == 'macos-13' - env: - UNTRUSTED: 1 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - yarn run publish --arch=universal --dry-run - - name: Release (non-macos) - if: matrix.os != 'macos-13' - env: - UNTRUSTED: 1 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: yarn run publish --dry-run - - - - name: Upload artifacts - uses: actions/upload-artifact@v3 - with: - name: ${{ runner.os }}-artifact - path: | - out/make/**/Chrysalis-* - - publish: - if: github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' - needs: build - runs-on: ubuntu-latest - concurrency: - group: publish - - steps: - - name: Check out Git repository - uses: actions/checkout@v3 - - - name: Download artifacts - uses: actions/download-artifact@v3 - with: - path: artifacts - - - name: Comment PR - uses: thollander/actions-comment-pull-request@v2 - with: - comment_tag: artifacts - message: | - Build artifacts for this pull request are available! - - :warning: These are not official builds! - ---------------------------------------- - - The build artifacts are provided as-is, for testing and reviewing purposes. They contain code that has not been reviewed or audited by Chrysalis' developers. They are not endorsed by Keyboardio, they are not signed. Install and use them only if you know what you are doing. - - You can download the platform-specific build artifacts from GitHub for 90 days after the date of this message from the following URL: - https://github.com/keyboardio/Chrysalis/actions/runs/${{ github.run_id }}#artifacts diff --git a/README.md b/README.md index 60e98e99a..cc3ab2c41 100644 --- a/README.md +++ b/README.md @@ -1,139 +1,5 @@ -Chrysalis -========= +# Chrysalis (Desktop version) -![Chrysalis screenshot](data/screenshot.png) +** This is the old 'master' branch of Chrysalis. Development of this version of Chrysalis has been discontinued.** -## Downloads - -[![Latest production builds][badge:production]][build:prod] -[![Latest development builds][badge:development]][build:dev] - - [badge:development]: https://img.shields.io/github/v/release/keyboardio/chrysalis?include_prereleases&label=Development&style=for-the-badge - [badge:production]: https://img.shields.io/github/v/release/keyboardio/chrysalis?label=Production&style=for-the-badge - [build:prod]: https://github.com/keyboardio/Chrysalis/releases/latest - [build:dev]: https://github.com/keyboardio/Chrysalis/releases/tag/v0.13.3-snapshot - -## About - -Chrysalis is a graphical configurator for -[Kaleidoscope][kaleidoscope]-powered keyboards. While still under -development, it is already usable for a number of tasks. To try it, -you don't even need to flash `Kaleidoscope` beforehand, Chrysalis -can do that for you, as it ships with reasonable default firmware -for each supported board. - - [kaleidoscope]: https://github.com/keyboardio/Kaleidoscope - -The primary purpose of the application is to allow one to configure their -keyboard without having to compile or flash firmware, by storing the -configuration on the keyboard itself, in EEPROM. There are no external tools -required, just Chrysalis itself. - -## Features - -* **Layout editor** to edit the keymap on-the-fly, with the ability to copy one - layer to another, and to set a default one. -* **Colormap editor** to edit the per-key LED colormap on boards that support it. -* **Firmware upgrade** to upload either the default, Chrysalis-enabled firmware that ships with the application, or a [custom](#using-custom-firmware) one. - -## Supported Hardware - -Chrysalis supports the [Keyboardio Model01][hw:model01], the [Keyboardio -Model100][hw:model100] and the [Keyboardio Atreus][hw:kbio-atreus]. - -The original [Atreus][hw:atreus], the [ErgoDox EZ][hw:ergodox-ez] (and any other -keyboard wired like it), and the [SOFT/HRUF Splitography][hw:splitography] -keyboards are also supported, as long as they run suitable firmware. - - [hw:kbio-atreus]: https://shop.keyboard.io/collections/keyboardio-atreus - [hw:model100]: https://www.indiegogo.com/projects/the-keyboardio-model-100--4/ - [hw:model01]: https://shop.keyboard.io/ - [hw:ergodox-ez]: https://ergodox-ez.com/ - [hw:atreus]: https://atreus.technomancy.us/ - [hw:splitography]: https://softhruf.love/collections/writers/products/soft-hruf-erl - -## Supported operating systems - -Chrysalis is primarily developed under Linux and macOS, but we -target and test on recent releases of Windows as well. - -We generally support the most recent long-term-support releases of -Ubuntu and Fedora, as well as the current releases of macOS and -Windows 11. While we expect Chrysalis to work well on other recent -releases of macOS, Windows, and major Linux distributions, our -support resources are pretty limited and we may not be able to chase -down problems that we can't reproduce on a current operating system -release. - -The protocol Chrysalis uses to communicate with the keyboard requires USB serial -support, which is known to be problematic on Windows prior to Windows 10. - -Some Linux distributions package and build Chrysalis with changes -that cause it not to work correctly. If you're having trouble with -a vendor-packaged Chrysalis, we recommend that you try the latest -release distributed by the project. - -## Installation - -### From installer packages - -Choose whether to install the production release, or a development snapshot from -the links [above](#downloads), and from the release page, select the installer -appropriate for your operating system. - -### macOS Homebrew - -``` -brew update && brew upgrade -brew install --cask chrysalis -``` - -## Reporting issues - -Chrysalis is alpha quality software. There will be bugs, missing features and -non-obvious things. Reporting any and all of these help us make the software -better, please feel free to [open issues][issues] liberally! - - [issues]: https://github.com/keyboardio/Chrysalis/issues - -## Using custom firmware - -While Chrysalis comes bundled with supported firmware files, it also supports -custom firmware, as long as it has a few Kaleidoscope plugins enabled: -[FocusSerial][k:focus] to make it possible to communicate with the keyboard in -the first place, [EEPROM-Settings][k:eeprom-settings] to be able to store -configuration in EEPROM. The `FocusSerial` plugin provides multiple plugins, and -Chrysalis needs `Focus`, `FocusEEPROMCommand`, and `FocusSettingsCommand` all -enabled in the custom firmware's `KALEIDOSCOPE_INIT_PLUGINS()`. - -Additionally, for Chrysalis to be able to edit the keymap, the -[EEPROM-Keymap][k:eeprom-keymap] plugin is also required. Similarly, to -configure the colormap, the custom firmware will need to have the -[Colormap][k:colormap] plugin enabled. - - [k:focus]: https://kaleidoscope.readthedocs.io/en/latest/plugins/Kaleidoscope-FocusSerial.html - [k:eeprom-settings]: https://kaleidoscope.readthedocs.io/en/latest/plugins/Kaleidoscope-EEPROM-Settings.html - [k:eeprom-keymap]: https://kaleidoscope.readthedocs.io/en/latest/plugins/Kaleidoscope-EEPROM-Keymap.html - [k:colormap]: https://kaleidoscope.readthedocs.io/en/latest/plugins/Kaleidoscope-Colormap.html - -If none of the bundled firmwares suit you, and you wish to customise them, or -build one from scratch, you can do that, and doing so is fully supported! - -## Development - -To launch the development environment, simply type `yarn && yarn start`. To do a -production build, use `yarn run build:all`, or limit it to a particular OS: -`yarn run build:linux`, `yarn run build:mac` or `yarn run build:win`. See the -`scripts` section of `package.json` for more scripts. - -### Translations - -[![Translation status](https://hosted.weblate.org/widgets/chrysalis/-/svg-badge.svg)][weblate] - -We're using [Weblate][weblate] to manage and maintain translations. - - [weblate]: https://hosted.weblate.org/engage/chrysalis/ - -### Debugging - -There are sample debugging configurations provided in the `dev/sample` directory. There is also an example launch.json for VSCode under the `.vscode` directory under `dev/sample/.vscode/launch.json`. To debug the main process, you _may_ wish to launch from an IDE (without using the above in a terminal), configurations for VSCode are provided. +The current version of Chrysalis is the web-based version, which lives on the 'main' branch. To find the latest source code for the desktop version, please see the 'desktop' branch.