macOS has the E00 (left of `1`) and B00 (between `shift` and `z`) keys swapped.
Our layout display code, the floating 104-key picker assumes a different layout.
So for display purposes, when reading from macOS layouts, swap E00 and B00.
Together with the previous commit, this fixes#1014, and makes the Croatian
layout *almost* correct on Windows and Linux too, with only one symbol
mis-mapped. There's nothing we can do about that at the moment.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
Similarly how we treat `altR+caps?` as valid altR mapping, we need to treat
`shift+caps?`, `shift+cmd?`, and other combinations of `shift` and optional
modifiers as shift.
This addresses one part of #1014.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
We need to do the firmware update step later, after we finalized the Chrysalis
versions, otherwise there will be a mismatch.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
We can pick up altR-modified symbols from a few other keymaps, not just those
that have `altR` as the single modifier, but those that have `+caps?` too,
because caps is optional there.
This fixes#727.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
When we have a failing flash, one that fails at the bootloaderWait step, check
if the keyboard remained in normal mode.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
Adjust the documentation and the firmware update & release scripts to how we're
doing firmware releases going forward.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
For this to work, we need to change our workflow a little: instead of a static
`snapshot` tag, we have to use a SemVer-compatible tag, such as
`0.10.3-snapshot` - effectively the same version that is in `package.json` (sans
the build number).
To make this automatic, there's a new tool, `tools/snapshot-tag`, which strips
the build number from the version in `package.json`, if there's any. We use this
tool to figure out which tag to re-release during the snapshot workflow.
We also have to update README.md to point to the appropriate snapshot, so the
`tools/release/create-snapshot.sh` tool has been updated to take care of that,
too.
With the workflow changes, we can adjust the autoUpdater configuration to allow
pre-releases, and use the "snapshot" channel. Because we only enable this when
running a snapshot release, auto-upgrade *to* a snapshot release will only work
from a snapshot release. Upgrading from an earlier snapshot to a release is not
done either, because we're tied to a given channel.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
We still import cldr from the renderer process, for
`cldr.extractLanguageDisplayNames`, but that hopefully doesn't expect to be in a
node environment.
If it does, we'll have to push it (along with the cldr data) to the main process.
Fixes#924.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
The purpose of the tool is to comb through a bundled log (and eventually perhaps
a live log, too), and highlight where things went sideways, and perhaps how.
It requires a bundle made with a recent Chrysalis snapshot.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
Recent ImageMagick prevents us from piping from import to convert directly, so
use an intermediate file as a workaround.
Furthermore, the white border was removed, because it didn't play nice with our
new Keyboardio-orange header.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
The `usb` and `serialport` packages are finnicky, they break us easily. During
the release process, ask if the versions found are correct.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
The goal of this preinstall script is to add a build number to the package
version within our CI environment. Outside of CI, it should do nothing. However,
it was unconditionally overwriting `package.json`, with a version that has no
trailing newline.
That's an issue, because most editors will add one, so running `yarn install`
always removed that, ending up with the change making the git working directory
dirty.
As there is no reason to save the file when we're not running in the CI
environment, move the writing inside the if branch. We don't care if the working
tree becomes dirty in CI, it will be discarded anyway. Not running
unconditionally will stop newlines getting removed, and make development that
much less annoying.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
We delegated the release creation to the github actions workflow, so all we need
to do now is tag a release and push it.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
Instead of relying on electron-builder to do the right thing, do the release
process ourselves, step by step.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
This is a major restructuring of our GitHub Actions workflows. First of all, we
now have separate workflows for release and snapshot builds, as having them
separate makes it easier to control which one runs when. It also allows us to
fine tune a lot of things for the snapshot workflow, which runs much more often.
Another change is that we're now using a static tag (`snapshot`) for development
builds, rather than a versioned tag, and this tag - and the pre-release on
GitHub - will get remade on every run, to keep it up to date.
We also have the build number back for our snapshot builds again, something we
lost with the transition away from Travis.
Documentation and scripts have been appropriately updated.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
We should not require a version to be specified on the commandline, we can just
cut the -snapshot part and run with it. We can then automatically update both
package.json and NEWS.md.
We should also ask if we need to update the shipped firmware.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
Our Editor screen has been showing its age, and with this massive change, we
replace it entirely. We do so in one big commit, because it is a major rewrite,
splitting it up into smaller parts is not practical.
With the new Editor, we moved away from having a double toolbar at the top, and
a selector on the bottom: both were merged into a sidebar, with a number of
sections for keys and features. Many of those will show their contents in-line,
some of them, like the key picker, will pop up a dialog instead.
We also redesigned how our labels are displayed, and we now support different
host-side layouts, via the Unicode CLDR project. While there's work to be done
on the labeling front, the APIs to do so, and to work with keys and key groups,
are considerably more developer friendly.
Furthermore, layout sharing has been redesigned aswell: we now export and import
to and from files, and share the whole keymap, all layers included. At this
time, there's no per-layer sharing supported.
As a regression, layer copying and layer erasing is currently not implemented
for the new Editor.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
Rewrote the option parsing, now based on `getopts`, to make it easier to select
the branch to download from. Also add a way to select the branch, now that we
can do so easily.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
To make it easier to test branches, build and upload artifacts for them too. We
still do not want to do that for PRs, but for branches pushed to the repo, we
do.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
Travis has a Linux/arm64 environment, Chrysalis builds there fine, and works
well on arm64, too. As such, adjust our Travis config to build it, and the
artifact upload/download tools to support multiple architectures for Linux.
Fixes#524.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
Added a bit of verbosity to the script, so we have a clue what it is doing at
the moment, and where the downloaded file will be saved. Also fixed an issue
with the script trying to download the wrong thing, because it forgot to escape
`+` in the version - now it does that.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
To make it easier to keep the screenshot up-to-date, added a small script that
takes a screenshot of a running Chrysalis, adds drop shadow around it, and saves
it as `data/screenshot.png`. Assumes ImageMagick is installed, and that we're
running under XOrg.
While there, also update the screenshot, using the new tool.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
On a successful upload, redirect `Chrysalis/latest/Chrysalis.$EXTENSION` to the
current upload. This gives us a static URL that always points to the latest
artifact.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>
This adds a few new scripts to `package.json`, so that we can do `yarn run
build:$TRAVIS_OS_NAME`, and adds a Travis control file that builds Chrysalis on
all three platforms. Furthermore, when running under Travis, add some build
metadata to the version number (unless we're building a tag).
Artifacts are uploaded to S3.
Fixes#56.
Signed-off-by: Gergely Nagy <algernon@keyboard.io>