When a user first launches Wave, we will read the updater config and
store the channel as a user setting for use on future launches. This
should ensure that if a user on a beta channel gets updated to a latest
release, they will still be subscribed to beta releases going forward.
If a user manually updates the user setting, it will be honored.
---------
Co-authored-by: sawka <mike@commandline.dev>
Updates the version.cjs script so that if the arguments are "none 0" and
a prerelease version is already set, it will be removed. This is
equivalent the behavior of "patch 0", but better aligns with the default
behavior of the Bump Version worklow.
## New release workflow
Build Helper will now automatically create a draft GitHub Release after
it finishes its builds. It will upload a copy of the build artifacts to
this release for easy access.
When a version is ready to be published, edit the GitHub Release and
publish it. This will trigger a workflow to publish the artifacts to our
releases feed.
## Moved artifacts scripts to Taskfile
The scripts formerly located at `scripts/artifacts` have been moved to
the Taskfile. They can now be found at `artifacts:*`.
## Moved releases readme to `RELEASES.md`
Updated the releases readme with step-by-step instructions and moved it
from `scripts/artifacts` to `RELEASES.md`
## Created new AWS identities for artifact upload and publishing
This narrows the scopes of the AWS identities used by the workflows to
upload and publish artifacts. The Build Helper workflow now only has
permission to put files into the artifacts bucket. The Publish Release
workflow only has permission to get files from the artifacts bucket and
put them into the releases bucket.
## New release flow
1. Run "Bump Version" workflow with the desired version bump and the
prerelease flag set to `true`. This will push a new version bump to the
target branch and create a new git tag.
- See below for more info on how the version bumping works.
2. A new "Build Helper" workflow run will kick off automatically for the
new tag. Once it is complete, test the new build locally by downloading
with the [download
script](https://github.com/wavetermdev/thenextwave/blob/main/scripts/artifacts/download-staged-artifact.sh).
3. Release the new build using the [publish
script](https://github.com/wavetermdev/thenextwave/blob/main/scripts/artifacts/publish-from-staging.sh).
This will trigger electron-updater to distribute the package to beta
users.
4. Run "Bump Version" again with a release bump (either `major`,
`minor`, or `patch`) and the prerelease flag set to `false`.
6. Release the new build to all channels using the [publish
script](https://github.com/wavetermdev/thenextwave/blob/main/scripts/artifacts/publish-from-staging.sh).
This will trigger electron-updater to distribute the package to all
users.
## Change Summary
Creates a new "Bump Version" workflow to manage versioning and tag
creation.
Build Helper is now automated.
### Version bumps
Updates the `version.cjs` script so that an argument can be passed to
trigger a version bump. Under the hood, this utilizes NPM's `semver`
package.
If arguments are present, the version will be bumped.
If only a single argument is given, the following are valid inputs:
- `none`: No-op.
- `patch`: Bumps the patch version.
- `minor`: Bumps the minor version.
- `major`: Bumps the major version.
- '1', 'true': Bumps the prerelease version.
If two arguments are given, the first argument must be either `none`,
`patch`, `minor`, or `major`. The second argument must be `1` or `true`
to bump the prerelease version.
### electron-builder
We are now using the release channels support in electron-builder. This
will automatically detect the channel being built based on the package
version to determine which channel update files need to be generated.
See
[here](https://www.electron.build/tutorials/release-using-channels.html)
for more information.
### Github Actions
#### Bump Version
This adds a new "Bump Version" workflow for managing versioning and
queuing new builds. When run, this workflow will bump the version,
create a new tag, and push the changes to the target branch. There is a
new dropdown when queuing the "Bump Version" workflow to select what
kind of version bump to perform. A bump must always be performed when
running a new build to ensure consistency.
I had to create a GitHub App to grant write permissions to our main
branch for the version bump commits. I've made a separate workflow file
to manage the version bump commits, which should help prevent tampering.
Thanks to using the GitHub API directly, I am able to make these commits
signed!
#### Build Helper
Build Helper is now triggered when new tags are created, rather than
being triggered automatically. This ensures we're always creating
artifacts from known checkpoints.
### Settings
Adds a new `autoupdate:channel` configuration to the settings file. If
unset, the default from the artifact will be used (should correspond to
the channel of the artifact when downloaded).
## Future Work
I want to add a release workflow that will automatically copy over the
corresponding version artifacts to the release bucket when a new GitHub
Release is created.
I also want to separate versions into separate subdirectories in the
release bucket so we can clean them up more-easily.
---------
Co-authored-by: wave-builder <builds@commandline.dev>
Co-authored-by: wave-builder[bot] <181805596+wave-builder[bot]@users.noreply.github.com>
This change adds
- performance improvements for ai chat
- new ai chat user interface
- open blank files with codeedit
- fix for userinput password modal
Refactored to be more flexible. Now, it has three types
- solid
- outline
- ghost
and subtypes
- green
- grey
- red
- yellow
It defaults to solid and green when no className is provided. It
concatenates defaults if custom classNames are provided.
[//]: # (dependabot-start)
⚠️ **Dependabot is rebasing this PR** ⚠️
Rebasing might not happen immediately, so don't worry if this takes some
time.
Note: if you make any changes to this PR yourself, they will take
precedence over the rebase.
---
[//]: # (dependabot-end)
Bumps the prod-dependencies group with 1 update:
[css-tree](https://github.com/csstree/csstree).
Updates `css-tree` from 2.3.1 to 3.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/csstree/csstree/releases">css-tree's
releases</a>.</em></p>
<blockquote>
<h2>3.0.0</h2>
<ul>
<li>Added support for the <a
href="https://drafts.csswg.org/css-contain-3/#container-rule"><code>@container</code></a>
at-rule</li>
<li>Added support for the <a
href="https://drafts.csswg.org/css-transitions-2/#defining-before-change-style"><code>@starting-style</code></a>
at-rule</li>
<li>Added support for the <a
href="https://drafts.csswg.org/css-cascade-6/#scoped-styles"><code>@scope</code></a>
at-rule</li>
<li>Added support for the <a
href="https://developer.mozilla.org/en-US/docs/Web/CSS/@position-try"><code>@position-try</code></a>
at-rule</li>
<li>Added support for the <a
href="https://drafts.csswg.org/css-cascade-5/#at-layer"><code>@layer</code></a>
at-rule</li>
<li>Added support for <code>layer</code>, <code>layer()</code> and
<code>supports()</code> in the <code>@media</code> at-rule (according to
<a href="https://drafts.csswg.org/css-cascade-5/#at-import"><code>the
@import rule</code></a> in Cascading and Inheritance 5)</li>
<li>Added <code>Layer</code> and <code>LayerList</code> node types</li>
<li>Added <code>TokenStream#lookupTypeNonSC()</code> method</li>
<li>Added <code><dashed-ident></code> to generic types</li>
<li>Bumped <code>mdn/data</code> to <code>2.10.0</code></li>
<li>Aligned <code><'font'></code> to <a
href="https://drafts.csswg.org/css-fonts-4/">CSS Fonts 4</a></li>
<li>Aligned <code><color></code> to <a
href="https://drafts.csswg.org/css-color-5/">CSS Color 5</a></li>
<li>Fixed initialization when <code>Object.prototype</code> is extended
or polluted (<a
href="https://redirect.github.com/csstree/csstree/issues/262">#262</a>)</li>
<li>Fixed <code>fork()</code> method to consider the
<code>generic</code> option when creating a Lexer instance (<a
href="https://redirect.github.com/csstree/csstree/issues/266">#266</a>)</li>
<li>Fixed crash on parse error when custom <code>line</code> or
<code>offset</code> is specified via options (<a
href="https://redirect.github.com/csstree/csstree/issues/251">#251</a>)</li>
<li>Fixed <code>speak</code> syntax patch (<a
href="https://redirect.github.com/csstree/csstree/issues/241">#241</a>)</li>
<li>Fixed <code>:lang()</code> to accept a list of
<code><ident></code> or <code><string></code> per <a
href="https://drafts.csswg.org/selectors/#the-lang-pseudo">spec</a> (<a
href="https://redirect.github.com/csstree/csstree/issues/265">#265</a>)</li>
<li>Fixed lexer matching for syntaxes referred to as
<code><'property'></code>, when the syntax has a top-level
<code>#</code>-multiplier (<a
href="https://redirect.github.com/csstree/csstree/issues/102">#102</a>)</li>
<li>Relaxed parsing of syntax definition to allow whitespaces in range
multiplier (<a
href="https://redirect.github.com/csstree/csstree/issues/270">#270</a>)</li>
<li>Changed <code>parseWithFallback()</code> to rollback
<code>tokenIndex</code> before calling a fallback</li>
<li>Changed <code>Block</code> to not include <code>{</code> and
<code>}</code></li>
<li>Changed <code>Atrule</code> and <code>Rule</code> to include
<code>{</code> and <code>}</code> for a block</li>
<li>Changed <code>Ratio</code> parsing:
<ul>
<li>Left and right parts contain nodes instead of strings</li>
<li>Both left and right parts of a ratio can now be any number;
validation of number range is no longer within the parser's scope.</li>
<li>Both parts can now be functions. Although not explicitly mentioned
in the specification, mathematical functions can replace numbers,
addressing potential use cases (<a
href="https://redirect.github.com/csstree/csstree/issues/162">#162</a>).</li>
<li>As per the <a
href="https://drafts.csswg.org/css-values-4/#ratios">CSS Values and
Units Level 4</a> specification, the right part of <code>Ratio</code>
can be omitted. While this can't be a parser output (which would produce
a <code>Number</code> node), it's feasible during <code>Ratio</code>
node construction or transformation.</li>
</ul>
</li>
<li>Changes to query-related at-rules:
<ul>
<li>Added new node types:
<ul>
<li><a
href="https://github.com/csstree/csstree/blob/HEAD/docs/ast.md#feature"><code>Feature</code></a>:
represents features like <code>(feature)</code> and <code>(feature:
value)</code>, fundamental for both <code>@media</code> and
<code>@container</code> at-rules</li>
<li><a
href="https://github.com/csstree/csstree/blob/HEAD/docs/ast.md#featurerange"><code>FeatureRange</code></a>:
represents <a
href="https://www.w3.org/TR/mediaqueries-4/#mq-range-context">features
in a range context</a></li>
<li><a
href="https://github.com/csstree/csstree/blob/HEAD/docs/ast.md#featurefunction"><code>FeatureFunction</code></a>:
represents functional features such as <code>@supports</code>'s
<code>selector()</code> or <code>@container</code>'s
<code>style()</code></li>
<li><a
href="https://github.com/csstree/csstree/blob/HEAD/docs/ast.md#condition"><code>Condition</code></a>:
used across all query-like at-rules, encapsulating queries with features
and the <code>not</code>, <code>and</code>, and <code>or</code>
operators</li>
<li><a
href="https://github.com/csstree/csstree/blob/HEAD/docs/ast.md#condition"><code>GeneralEnclosure</code></a>:
represents the <a
href="https://www.w3.org/TR/mediaqueries-4/#typedef-general-enclosed"><code><general-enclosed></code></a>
production, which caters to unparsed parentheses or functional
expressions</li>
</ul>
<blockquote>
<p>Note: All new nodes include a <code>kind</code> property to define
the at-rule type. Supported kinds are <code>media</code>,
<code>supports</code>, and <code>container</code></p>
</blockquote>
</li>
<li>Added support for functions for features and features in a range
context, e.g. <code>(width: calc(100cm / 6))</code></li>
<li>Added a <code>condition</code> value for the parser's context option
to parse queries. Use the <code>kind</code> option to specify the
condition type, e.g., <code>parse('...', { context: 'condition', kind:
'media' })</code></li>
<li>Introduced a <code>features</code> section in the syntax
configuration for defining functional features of at-rules. Expand
definitions using the <code>fork()</code> method. The current definition
is as follows:
<pre lang="js"><code>features: {
supports: { selector() { /* ... */ } },
container: { style() { /* ... */ } }
}
</code></pre>
</li>
<li>Changes for <code>@media</code> at-rule:
<ul>
<li>Enhanced prelude parsing for complex queries. Parentheses with
errors will be parsed as <code>GeneralEnclosed</code></li>
<li>Added support for features in a range context, e.g. <code>(width
> 100px)</code> or <code>(100px < height < 400px)</code></li>
<li>Transitioned from <code>MediaFeature</code> node type to the
<code>Feature</code> node type with <code>kind:
"media"</code></li>
<li>Changed <code>MediaQuery</code> node structure into the following
form:</li>
</ul>
</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/csstree/csstree/blob/master/CHANGELOG.md">css-tree's
changelog</a>.</em></p>
<blockquote>
<h2>3.0.0 (September 11, 2024)</h2>
<ul>
<li>Added support for the <a
href="https://drafts.csswg.org/css-contain-3/#container-rule"><code>@container</code></a>
at-rule</li>
<li>Added support for the <a
href="https://drafts.csswg.org/css-transitions-2/#defining-before-change-style"><code>@starting-style</code></a>
at-rule</li>
<li>Added support for the <a
href="https://drafts.csswg.org/css-cascade-6/#scoped-styles"><code>@scope</code></a>
at-rule</li>
<li>Added support for the <a
href="https://developer.mozilla.org/en-US/docs/Web/CSS/@position-try"><code>@position-try</code></a>
at-rule</li>
<li>Added support for the <a
href="https://drafts.csswg.org/css-cascade-5/#at-layer"><code>@layer</code></a>
at-rule</li>
<li>Added support for <code>layer</code>, <code>layer()</code> and
<code>supports()</code> in the <code>@media</code> at-rule (according to
<a href="https://drafts.csswg.org/css-cascade-5/#at-import"><code>the
@import rule</code></a> in Cascading and Inheritance 5)</li>
<li>Added <code>Layer</code> and <code>LayerList</code> node types</li>
<li>Added <code>TokenStream#lookupTypeNonSC()</code> method</li>
<li>Added <code><dashed-ident></code> to generic types</li>
<li>Bumped <code>mdn/data</code> to <code>2.10.0</code></li>
<li>Aligned <code><'font'></code> to <a
href="https://drafts.csswg.org/css-fonts-4/">CSS Fonts 4</a></li>
<li>Aligned <code><color></code> to <a
href="https://drafts.csswg.org/css-color-5/">CSS Color 5</a></li>
<li>Fixed initialization when <code>Object.prototype</code> is extended
or polluted (<a
href="https://redirect.github.com/csstree/csstree/issues/262">#262</a>)</li>
<li>Fixed <code>fork()</code> method to consider the
<code>generic</code> option when creating a Lexer instance (<a
href="https://redirect.github.com/csstree/csstree/issues/266">#266</a>)</li>
<li>Fixed crash on parse error when custom <code>line</code> or
<code>offset</code> is specified via options (<a
href="https://redirect.github.com/csstree/csstree/issues/251">#251</a>)</li>
<li>Fixed <code>speak</code> syntax patch (<a
href="https://redirect.github.com/csstree/csstree/issues/241">#241</a>)</li>
<li>Fixed <code>:lang()</code> to accept a list of
<code><ident></code> or <code><string></code> per <a
href="https://drafts.csswg.org/selectors/#the-lang-pseudo">spec</a> (<a
href="https://redirect.github.com/csstree/csstree/issues/265">#265</a>)</li>
<li>Fixed lexer matching for syntaxes referred to as
<code><'property'></code>, when the syntax has a top-level
<code>#</code>-multiplier (<a
href="https://redirect.github.com/csstree/csstree/issues/102">#102</a>)</li>
<li>Relaxed parsing of syntax definition to allow whitespaces in range
multiplier (<a
href="https://redirect.github.com/csstree/csstree/issues/270">#270</a>)</li>
<li>Changed <code>parseWithFallback()</code> to rollback
<code>tokenIndex</code> before calling a fallback</li>
<li>Changed <code>Block</code> to not include <code>{</code> and
<code>}</code></li>
<li>Changed <code>Atrule</code> and <code>Rule</code> to include
<code>{</code> and <code>}</code> for a block</li>
<li>Changed <code>Ratio</code> parsing:
<ul>
<li>Left and right parts contain nodes instead of strings</li>
<li>Both left and right parts of a ratio can now be any number;
validation of number range is no longer within the parser's scope.</li>
<li>Both parts can now be functions. Although not explicitly mentioned
in the specification, mathematical functions can replace numbers,
addressing potential use cases (<a
href="https://redirect.github.com/csstree/csstree/issues/162">#162</a>).</li>
<li>As per the <a
href="https://drafts.csswg.org/css-values-4/#ratios">CSS Values and
Units Level 4</a> specification, the right part of <code>Ratio</code>
can be omitted. While this can't be a parser output (which would produce
a <code>Number</code> node), it's feasible during <code>Ratio</code>
node construction or transformation.</li>
</ul>
</li>
<li>Changes to query-related at-rules:
<ul>
<li>
<p>Added new node types:</p>
<ul>
<li><a
href="https://github.com/csstree/csstree/blob/master/docs/ast.md#feature"><code>Feature</code></a>:
represents features like <code>(feature)</code> and <code>(feature:
value)</code>, fundamental for both <code>@media</code> and
<code>@container</code> at-rules</li>
<li><a
href="https://github.com/csstree/csstree/blob/master/docs/ast.md#featurerange"><code>FeatureRange</code></a>:
represents <a
href="https://www.w3.org/TR/mediaqueries-4/#mq-range-context">features
in a range context</a></li>
<li><a
href="https://github.com/csstree/csstree/blob/master/docs/ast.md#featurefunction"><code>FeatureFunction</code></a>:
represents functional features such as <code>@supports</code>'s
<code>selector()</code> or <code>@container</code>'s
<code>style()</code></li>
<li><a
href="https://github.com/csstree/csstree/blob/master/docs/ast.md#condition"><code>Condition</code></a>:
used across all query-like at-rules, encapsulating queries with features
and the <code>not</code>, <code>and</code>, and <code>or</code>
operators</li>
<li><a
href="https://github.com/csstree/csstree/blob/master/docs/ast.md#condition"><code>GeneralEnclosure</code></a>:
represents the <a
href="https://www.w3.org/TR/mediaqueries-4/#typedef-general-enclosed"><code><general-enclosed></code></a>
production, which caters to unparsed parentheses or functional
expressions</li>
</ul>
<blockquote>
<p>Note: All new nodes include a <code>kind</code> property to define
the at-rule type. Supported kinds are <code>media</code>,
<code>supports</code>, and <code>container</code>.</p>
</blockquote>
</li>
<li>
<p>Added support for functions for features and features in a range
context, e.g. <code>(width: calc(100cm / 6))</code></p>
</li>
<li>
<p>Added a <code>condition</code> value for the parser's context option
to parse queries. Use the <code>kind</code> option to specify the
condition type, e.g., <code>parse('...', { context: 'condition', kind:
'media' })</code>.</p>
</li>
<li>
<p>Introduced a <code>features</code> section in the syntax
configuration for defining functional features of at-rules. Expand
definitions using the <code>fork()</code> method. The current definition
is as follows:</p>
<pre lang="js"><code>features: {
supports: { selector() { /* ... */ } },
container: { style() { /* ... */ } }
}
</code></pre>
</li>
<li>
<p>Changes for <code>@media</code> at-rule:</p>
<ul>
<li>Enhanced prelude parsing for complex queries. Parentheses with
errors will be parsed as <code>GeneralEnclosed</code>.</li>
<li>Added support for features in a range context, e.g. <code>(width
> 100px)</code> or <code>(100px < height < 400px)</code></li>
</ul>
</li>
</ul>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9de5189fad"><code>9de5189</code></a>
3.0.0</li>
<li><a
href="336c67ecd9"><code>336c67e</code></a>
Remove wrongly added files</li>
<li><a
href="56f3788434"><code>56f3788</code></a>
Fix lint error</li>
<li><a
href="a9a63cbaaa"><code>a9a63cb</code></a>
Improve support for <a
href="https://github.com/position-try"><code>@position-try</code></a>
by adding allowed descriptors</li>
<li><a
href="66b312d6eb"><code>66b312d</code></a>
Update the year</li>
<li><a
href="049dc34abc"><code>049dc34</code></a>
Run unit tests on windows</li>
<li><a
href="41e70a638f"><code>41e70a6</code></a>
Fix bundling on windows</li>
<li><a
href="b8a97dd01c"><code>b8a97dd</code></a>
Try bundle on windows</li>
<li><a
href="cf8e828015"><code>cf8e828</code></a>
Align color to css-color-5 (fixes <a
href="https://redirect.github.com/csstree/csstree/issues/244">#244</a>)</li>
<li><a
href="94a5d77c56"><code>94a5d77</code></a>
Remove draft entry</li>
<li>Additional commits viewable in <a
href="https://github.com/csstree/csstree/compare/v2.3.1...v3.0.0">compare
view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=css-tree&package-manager=npm_and_yarn&previous-version=2.3.1&new-version=3.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
</details>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>