Skip to content

Comments

[pull] main from wavetermdev:main#26

Open
pull[bot] wants to merge 2440 commits intocode:mainfrom
wavetermdev:main
Open

[pull] main from wavetermdev:main#26
pull[bot] wants to merge 2440 commits intocode:mainfrom
wavetermdev:main

Conversation

@pull
Copy link

@pull pull bot commented Sep 22, 2024

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot added the ⤵️ pull label Sep 22, 2024
@sawka sawka deleted the branch code:main September 24, 2024 22:34
@sawka sawka deleted the main branch September 24, 2024 22:34
sawka and others added 27 commits November 3, 2025 14:56
always remove from reqmap in Finalize even if done flag is already set.
Removes the embedded Docusaurus build from the application. The help
view now always loads from https://docs.waveterm.dev/ instead of serving
a locally bundled copy. This eliminates package size constraints on
documentation content (e.g., videos) and removes unnecessary
build/packaging overhead.

**Backend changes:**
- Deleted `pkg/docsite` package entirely
- Removed docsite handler from `pkg/web/web.go`
- Simplified `emain/docsite.ts` to return constant URL instead of
probing for embedded docs

**Frontend changes:**
- Removed embedded URL translation logic from `helpview.tsx`
- Homepage URL now uses constant instead of IPC call

**Build configuration:**
- Removed `docsite:build:embedded` task and all references
- Removed `dist/docsite/**/*` from electron-builder asarUnpack
- Removed `build-embedded` script from docs package.json

Net result: -141 lines, +9 lines across 8 files.

<!-- START COPILOT CODING AGENT SUFFIX -->



<details>

<summary>Original prompt</summary>

> right now we build a docusaurus project to run both the online docs at
docs.waveterm.dev AND to embed into the application. but this limits
what we can show in the docs (especially large things like videos etc.)
> 
> the internal docs already fall back to the website when it cannot find
the embedded docs.
> 
> i'd like to update the build and packaging etc to no longer build the
embedded doc site. i'd also like to have the "help" view always render
the live doc site at https://docs.waveterm.dev.


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
adds a new secret store protected by electron's safeStorage API.
currently just hooked up to the CLI via a new wsh command: `wsh secret`.

will be used to power secrets in tsunami later (and for config +
connections)
…2529)

Bumps
[github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2)
from 1.89.1 to 1.90.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f4b68139280ee1873399b27d581ba128834c71c4"><code>f4b6813</code></a>
Release 2025-11-05</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/2d7b311712b2b340539374cfc37746105a24dfcc"><code>2d7b311</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/9e3111912844ec2dbc08e073867cdc81fc0524a7"><code>9e31119</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/aacca0a210fc819cfdbe4dbaea4e28fc66788a55"><code>aacca0a</code></a>
Release 2025-11-04</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f2f7085b91ff4a1f6bc7ec01b5c40898394bdab1"><code>f2f7085</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/98ac357edf60e930fc6ac1790b457ce63100406b"><code>98ac357</code></a>
Update endpoints model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/545573ffc380220953b0623eaf8ff033433a4d32"><code>545573f</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/0c4b1ae2386e80ece230041b4c19322880f5135a"><code>0c4b1ae</code></a>
upgrade to smithy-go v1.23.2 to track allocation improvements (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3222">#3222</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/bae1d689b9cdba0639a0c9e04f90041168a83ef1"><code>bae1d68</code></a>
Release 2025-11-03</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/67d7b9cb0251a852fa0b6a012e7317b353e54c6e"><code>67d7b9c</code></a>
Regenerated Clients</li>
<li>Additional commits viewable in <a
href="https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.89.1...service/s3/v1.90.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/service/s3&package-manager=go_modules&previous-version=1.89.1&new-version=1.90.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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.254.0 to 0.255.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.255.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.254.0...v0.255.0">0.255.0</a>
(2025-11-04)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3357">#3357</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/430bc4639d14b3c7969981603891163421883695">430bc46</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3359">#3359</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/0bcacee13f1bd305cf1e16bfb714fbe998b7fcb1">0bcacee</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3360">#3360</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c9cdcadebd1ac3e2de3c0146b3a1d6eb0956c3fc">c9cdcad</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3361">#3361</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/acdddcdc891d41f9ac22bcf031d53f9f17810637">acdddcd</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3362">#3362</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/040f8aaadedfcf6fb449937e734f3c57a3cfedd4">040f8aa</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3364">#3364</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8f13004c104b3620144017f36886ef3818878dad">8f13004</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3365">#3365</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/4ea8be06ce628f4af4949c6954e1342c0db8e76b">4ea8be0</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.254.0...v0.255.0">0.255.0</a>
(2025-11-04)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3357">#3357</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/430bc4639d14b3c7969981603891163421883695">430bc46</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3359">#3359</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/0bcacee13f1bd305cf1e16bfb714fbe998b7fcb1">0bcacee</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3360">#3360</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/c9cdcadebd1ac3e2de3c0146b3a1d6eb0956c3fc">c9cdcad</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3361">#3361</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/acdddcdc891d41f9ac22bcf031d53f9f17810637">acdddcd</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3362">#3362</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/040f8aaadedfcf6fb449937e734f3c57a3cfedd4">040f8aa</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3364">#3364</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8f13004c104b3620144017f36886ef3818878dad">8f13004</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3365">#3365</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/4ea8be06ce628f4af4949c6954e1342c0db8e76b">4ea8be0</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/d7491ba2192f77c16f3a76c381ace9ff568a5f46"><code>d7491ba</code></a>
chore(main): release 0.255.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3358">#3358</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/4ea8be06ce628f4af4949c6954e1342c0db8e76b"><code>4ea8be0</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3365">#3365</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/5d5029ab3bcc8e24c1f47e73335127732c8da81b"><code>5d5029a</code></a>
chore(all): update all to ab9386a (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3363">#3363</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/8f13004c104b3620144017f36886ef3818878dad"><code>8f13004</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3364">#3364</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/040f8aaadedfcf6fb449937e734f3c57a3cfedd4"><code>040f8aa</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3362">#3362</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/acdddcdc891d41f9ac22bcf031d53f9f17810637"><code>acdddcd</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3361">#3361</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/c9cdcadebd1ac3e2de3c0146b3a1d6eb0956c3fc"><code>c9cdcad</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3360">#3360</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/0bcacee13f1bd305cf1e16bfb714fbe998b7fcb1"><code>0bcacee</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3359">#3359</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/430bc4639d14b3c7969981603891163421883695"><code>430bc46</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3357">#3357</a>)</li>
<li>See full diff in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.254.0...v0.255.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.254.0&new-version=0.255.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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
## Summary

This PR includes three terminal input improvements that enhance the
experience when using interactive CLI tools and IME input:

1. **Shift+Enter newline support**: Enable Shift+Enter to insert
newlines by default
2. **Image paste support**: Allow pasting images by saving them as
temporary files and pasting the file path
3. **IME duplicate input fix**: Fix duplicate text when switching input
methods during composition

## Motivation

### Shift+Enter for newlines
Currently, pressing Shift+Enter in the terminal behaves the same as
Enter, making it difficult to input multi-line commands or text in
interactive CLI tools. This change enables Shift+Enter to insert
newlines by default, matching common terminal emulator behavior.

### Image paste support
Interactive AI tools like Claude Code support receiving images through
file paths, but Wave Terminal currently doesn't support pasting images.
This change implements image paste functionality similar to iTerm2's
behavior: when an image is pasted, it's saved to a temporary file and
the path is pasted into the terminal.

### IME duplicate input fix
When using Chinese/Japanese/Korean IME in the terminal, switching input
methods with Capslock during composition causes the composed text to be
sent twice, resulting in duplicate output (e.g., "你好" becomes "你好你好").
This issue severely impacts users who frequently switch between
languages.

## Changes

### Shift+Enter newline (`frontend/app/view/term/term-model.ts`)
- Change default `shiftenternewline` config from `false` to `true`
- Send standard newline character (`\n`) instead of escape sequence
(`\^[\n`)

### Image paste (`frontend/app/view/term/term-model.ts`,
`frontend/app/view/term/termwrap.ts`)
- Add `handlePaste()` method to intercept Cmd+Shift+V paste events
- Add `handleImagePasteBlob()` to save images to `/tmp` and paste the
file path
- Detect image data in clipboard using both
`ClipboardEvent.clipboardData` and Clipboard API
- Support both screenshot paste and file copy scenarios
- Add 5MB size limit for pasted images
- Temporary files are created with format:
`waveterm_paste_[timestamp].[ext]`

### IME duplicate input fix (`frontend/app/view/term/termwrap.ts`,
`frontend/app/view/term/term-model.ts`)

**IME Composition Handling:**
- Track composition state (isComposing, composingData, etc.) in TermWrap
- Register compositionstart/update/end event listeners on xterm.js
textarea
- Block all data sends during composition, only allow after
compositionend
- Prevents xterm.js from sending intermediate data during
compositionupdate phase

**Deduplication Logic:**
- Implement 50ms time window deduplication for both IME and paste
operations
- Track first send after composition, block duplicate sends from
Capslock switching
- Ensure Ctrl+Space and Fn switching work correctly (single send only)

**Edge Case Handling:**
- Add blur event handler to reset composition state on focus loss
- Add Escape key handling to cancel composition in progress

## Testing

### Shift+Enter
1. Open a terminal in Wave
2. Press Shift+Enter
3. Verify that a newline is inserted instead of executing the command

### Image paste
1. Take a screenshot and copy it to clipboard (or copy an image file in
Finder)
2. In a terminal running Claude Code, paste the image (Cmd+V or
Cmd+Shift+V)
3. Verify that the image path appears and Claude Code recognizes it

### IME Input Testing

**IME Input:**
- [x] macOS Zhuyin IME + Capslock switching - no duplicate output ✅
- [x] macOS Zhuyin IME + Ctrl+Space switching - normal single input ✅
- [x] macOS Zhuyin IME + Fn switching - normal single input ✅

**Regression Testing:**
- [x] English keyboard input - normal operation ✅
- [x] Shift+Enter multiline input - works correctly ✅
- [x] Text paste (Cmd+Shift+V) - no duplicates ✅
- [x] Image paste - works correctly ✅
- [x] Basic command execution (ls, echo, etc.) - normal ✅
- [x] Cmd+K clear terminal - works correctly ✅
- [x] Copy selected text (Cmd+Shift+C) - works correctly ✅

## Demo


https://github.com/user-attachments/assets/8341cdf9-6c57-413e-b940-89e50cc79ff0


https://github.com/user-attachments/assets/d3a6e72a-f488-45c1-ab58-88391639455a


https://github.com/user-attachments/assets/ac178abd-caf3-40bf-9ef7-7cc0567a32c3




All features have been tested successfully on macOS with Claude Code in
Wave Terminal.
Handle both types of paste data. Write utility functions to normalize
paste events to {text; image}[]. Fix duplication issue (call
preventDefault() early). Handle multiple image pasting (by adding a
slight delay). Convert Ctrl:Shift:v to use a *native paste* which allows
capturing of images!
Bumps the dev-dependencies-patch group with 6 updates:

| Package | From | To |
| --- | --- | --- |
|
[@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite)
| `4.1.16` | `4.1.17` |
|
[@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc)
| `4.2.0` | `4.2.1` |
|
[tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss)
| `4.1.16` | `4.1.17` |
|
[typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint)
| `8.46.2` | `8.46.3` |
|
[vite-plugin-image-optimizer](https://github.com/FatehAK/vite-plugin-image-optimizer)
| `2.0.2` | `2.0.3` |
|
[@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli)
| `4.1.16` | `4.1.17` |

Updates `@tailwindcss/vite` from 4.1.16 to 4.1.17
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/releases"><code>@​tailwindcss/vite</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v4.1.17</h2>
<h3>Fixed</h3>
<ul>
<li>Substitute <code>@variant</code> inside legacy JS APIs (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19263">#19263</a>)</li>
<li>Prevent occasional crash on Windows when loaded into a worker thread
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19242">#19242</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md"><code>@​tailwindcss/vite</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>[4.1.17] - 2025-11-06</h2>
<h3>Fixed</h3>
<ul>
<li>Substitute <code>@variant</code> inside legacy JS APIs (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19263">#19263</a>)</li>
<li>Prevent occasional crash on Windows when loaded into a worker thread
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19242">#19242</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tailwindlabs/tailwindcss/commit/e9c9c4f79db00a7a1dc7a3e2a13ced3b19f55555"><code>e9c9c4f</code></a>
Release v4.1.17 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite/issues/19272">#19272</a>)</li>
<li>See full diff in <a
href="https://github.com/tailwindlabs/tailwindcss/commits/v4.1.17/packages/@tailwindcss-vite">compare
view</a></li>
</ul>
</details>
<br />

Updates `@vitejs/plugin-react-swc` from 4.2.0 to 4.2.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite-plugin-react/releases"><code>@​vitejs/plugin-react-swc</code>'s
releases</a>.</em></p>
<blockquote>
<h2>plugin-react@4.2.1</h2>
<p>Remove generic parameter on <code>Plugin</code> to avoid type error
with Rollup 4/Vite 5 and <code>skipLibCheck: false</code>.</p>
<p>I expect very few people to currently use this feature, but if you
are extending the React plugin via <code>api</code> object, you can get
back the typing of the hook by importing
<code>ViteReactPluginApi</code>:</p>
<pre lang="ts"><code>import type { Plugin } from 'vite'
import type { ViteReactPluginApi } from '@vitejs/plugin-react'
<p>export const somePlugin: Plugin = {<br />
name: 'some-plugin',<br />
api: {<br />
reactBabel: (babelConfig) =&gt; {<br />
babelConfig.plugins.push('some-babel-plugin')<br />
},<br />
} satisfies ViteReactPluginApi,<br />
}<br />
</code></pre></p>
<h2>plugin-react-swc@4.2.1</h2>
<h3>Fix <code>@vitejs/plugin-react-swc/preamble</code> on build (<a
href="https://redirect.github.com/vitejs/vite-plugin-react/pull/962">#962</a>)</h3>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc/CHANGELOG.md"><code>@​vitejs/plugin-react-swc</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>4.2.1 (2025-11-05)</h2>
<h3>Fix <code>@vitejs/plugin-react-swc/preamble</code> on build (<a
href="https://redirect.github.com/vitejs/vite-plugin-react/pull/962">#962</a>)</h3>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/vitejs/vite-plugin-react/commits/v4.2.1/packages/plugin-react-swc">compare
view</a></li>
</ul>
</details>
<br />

Updates `tailwindcss` from 4.1.16 to 4.1.17
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/releases">tailwindcss's
releases</a>.</em></p>
<blockquote>
<h2>v4.1.17</h2>
<h3>Fixed</h3>
<ul>
<li>Substitute <code>@variant</code> inside legacy JS APIs (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19263">#19263</a>)</li>
<li>Prevent occasional crash on Windows when loaded into a worker thread
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19242">#19242</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md">tailwindcss's
changelog</a>.</em></p>
<blockquote>
<h2>[4.1.17] - 2025-11-06</h2>
<h3>Fixed</h3>
<ul>
<li>Substitute <code>@variant</code> inside legacy JS APIs (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19263">#19263</a>)</li>
<li>Prevent occasional crash on Windows when loaded into a worker thread
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19242">#19242</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tailwindlabs/tailwindcss/commit/e9c9c4f79db00a7a1dc7a3e2a13ced3b19f55555"><code>e9c9c4f</code></a>
Release v4.1.17 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19272">#19272</a>)</li>
<li><a
href="https://github.com/tailwindlabs/tailwindcss/commit/dc6a3ce349a082e6c437288e52d0eea9a9ea4ff2"><code>dc6a3ce</code></a>
Substitute <code>@variant</code> inside utilities (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19263">#19263</a>)</li>
<li><a
href="https://github.com/tailwindlabs/tailwindcss/commit/e71e70eda9c0372872b9c8bf7d70d35c22004bd4"><code>e71e70e</code></a>
Update magic-string 0.30.19 → 0.30.21 (minor) (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss/issues/19238">#19238</a>)</li>
<li>See full diff in <a
href="https://github.com/tailwindlabs/tailwindcss/commits/v4.1.17/packages/tailwindcss">compare
view</a></li>
</ul>
</details>
<br />

Updates `typescript-eslint` from 8.46.2 to 8.46.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/releases">typescript-eslint's
releases</a>.</em></p>
<blockquote>
<h2>v8.46.3</h2>
<h2>8.46.3 (2025-11-03)</h2>
<h3>🩹 Fixes</h3>
<ul>
<li><strong>eslint-plugin:</strong> [no-misused-promises] expand union
type to retrieve target property (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11706">#11706</a>)</li>
<li><strong>eslint-plugin:</strong> [no-duplicate-enum-values] support
signed numbers (<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11722">#11722</a>,
<a
href="https://redirect.github.com/typescript-eslint/typescript-eslint/pull/11723">#11723</a>)</li>
</ul>
<h3>❤️ Thank You</h3>
<ul>
<li>Evgeny Stepanovych <a
href="https://github.com/undsoft"><code>@​undsoft</code></a></li>
<li>tao</li>
</ul>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md">typescript-eslint's
changelog</a>.</em></p>
<blockquote>
<h2>8.46.3 (2025-11-03)</h2>
<p>This was a version bump only for typescript-eslint to align it with
other projects, there were no code changes.</p>
<p>You can read about our <a
href="https://typescript-eslint.io/users/versioning">versioning
strategy</a> and <a
href="https://typescript-eslint.io/users/releases">releases</a> on our
website.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/typescript-eslint/typescript-eslint/commit/d9f3497dfb72e90fd7dc977c77d41b0eb9df4909"><code>d9f3497</code></a>
chore(release): publish 8.46.3</li>
<li>See full diff in <a
href="https://github.com/typescript-eslint/typescript-eslint/commits/v8.46.3/packages/typescript-eslint">compare
view</a></li>
</ul>
</details>
<br />

Updates `vite-plugin-image-optimizer` from 2.0.2 to 2.0.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/releases">vite-plugin-image-optimizer's
releases</a>.</em></p>
<blockquote>
<h2>✨ v2.0.3</h2>
<ul>
<li>fix: allow regex to match a folder for exclude and include options
(<a
href="https://redirect.github.com/FatehAK/vite-plugin-image-optimizer/issues/55">#55</a>)
(e68c9b4)</li>
<li>Renovate: lockfile and non-major updates
<ul>
<li>Multiple Lock file maintenance and non-major dependency updates
across versions for stability and security.</li>
<li><code>@​typescript-eslint/parser</code> - Upgraded sequentially from
^8.35.1 → ^8.46.2</li>
<li>eslint - Incremental updates from ^9.30.1 → ^9.38.0</li>
<li>vite - Updated to v6.4.1 (security patch)</li>
<li><code>@​types/node</code> - Upgraded to ^24.3.0</li>
<li>pnpm - Updated to v10.15.0</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/a738e4c4bd17e3cb5e0d3102ddd4f4fee775d2db"><code>a738e4c</code></a>
chore: Release v2.0.3</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/e68c9b40bebb55321cab338a0e4ac7b41472df46"><code>e68c9b4</code></a>
fix: allow regex to match a folder for exclude and include options (<a
href="https://redirect.github.com/FatehAK/vite-plugin-image-optimizer/issues/55">#55</a>)</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/07aa35e5808da6489464423607bd7ac481852815"><code>07aa35e</code></a>
chore(deps): Lock file maintenance</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/13e2b45b9292a3d599f6e402b608d9f7cac6c1f4"><code>13e2b45</code></a>
chore(deps): Update non-major dependencies</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/4302c3a8f9e3ba9cadc266c9d13cb0b427a4b96e"><code>4302c3a</code></a>
chore(deps): Update dependency <code>@​typescript-eslint/parser</code>
to ^8.46.2</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/a72dcfe32e5ac7a28fc1f13f9dabbfc370f34f3a"><code>a72dcfe</code></a>
chore(deps): Update dependency vite to v6.4.1 [SECURITY]</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/0eebdadd601af1d27a533b65320527415969ac29"><code>0eebdad</code></a>
chore(deps): Lock file maintenance</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/b0c50dd93f73208fcf4b9e01a62f6f2193894d46"><code>b0c50dd</code></a>
chore(deps): Update non-major dependencies</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/00d6afa6e761e59529b2939266c7ea3304b015f6"><code>00d6afa</code></a>
chore(deps): Update eslint monorepo to ^9.38.0</li>
<li><a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/commit/08a481ab8b61246fd6b146deec53ed6f4ed8ddde"><code>08a481a</code></a>
chore(deps): Update dependency <code>@​typescript-eslint/parser</code>
to ^8.46.1</li>
<li>Additional commits viewable in <a
href="https://github.com/FatehAK/vite-plugin-image-optimizer/compare/v2.0.2...v2.0.3">compare
view</a></li>
</ul>
</details>
<br />

Updates `@tailwindcss/cli` from 4.1.16 to 4.1.17
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/releases"><code>@​tailwindcss/cli</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v4.1.17</h2>
<h3>Fixed</h3>
<ul>
<li>Substitute <code>@variant</code> inside legacy JS APIs (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19263">#19263</a>)</li>
<li>Prevent occasional crash on Windows when loaded into a worker thread
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19242">#19242</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md"><code>@​tailwindcss/cli</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>[4.1.17] - 2025-11-06</h2>
<h3>Fixed</h3>
<ul>
<li>Substitute <code>@variant</code> inside legacy JS APIs (<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19263">#19263</a>)</li>
<li>Prevent occasional crash on Windows when loaded into a worker thread
(<a
href="https://redirect.github.com/tailwindlabs/tailwindcss/pull/19242">#19242</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tailwindlabs/tailwindcss/commit/e9c9c4f79db00a7a1dc7a3e2a13ced3b19f55555"><code>e9c9c4f</code></a>
Release v4.1.17 (<a
href="https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli/issues/19272">#19272</a>)</li>
<li>See full diff in <a
href="https://github.com/tailwindlabs/tailwindcss/commits/v4.1.17/packages/@tailwindcss-cli">compare
view</a></li>
</ul>
</details>
<br />


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>
Bumps
[github.com/aws/aws-sdk-go-v2/config](https://github.com/aws/aws-sdk-go-v2)
from 1.31.15 to 1.31.17.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/aacca0a210fc819cfdbe4dbaea4e28fc66788a55"><code>aacca0a</code></a>
Release 2025-11-04</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/f2f7085b91ff4a1f6bc7ec01b5c40898394bdab1"><code>f2f7085</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/98ac357edf60e930fc6ac1790b457ce63100406b"><code>98ac357</code></a>
Update endpoints model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/545573ffc380220953b0623eaf8ff033433a4d32"><code>545573f</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/0c4b1ae2386e80ece230041b4c19322880f5135a"><code>0c4b1ae</code></a>
upgrade to smithy-go v1.23.2 to track allocation improvements (<a
href="https://redirect.github.com/aws/aws-sdk-go-v2/issues/3222">#3222</a>)</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/bae1d689b9cdba0639a0c9e04f90041168a83ef1"><code>bae1d68</code></a>
Release 2025-11-03</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/67d7b9cb0251a852fa0b6a012e7317b353e54c6e"><code>67d7b9c</code></a>
Regenerated Clients</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/74be9b92bddae4efbb8a7f6ac7215e7e3c217ce5"><code>74be9b9</code></a>
Update API model</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/3242971cacca6494b8391127bc054b5238a20262"><code>3242971</code></a>
Release 2025-10-31</li>
<li><a
href="https://github.com/aws/aws-sdk-go-v2/commit/2db47dca340ab445f0a7e3a690422b113dd054ce"><code>2db47dc</code></a>
Regenerated Clients</li>
<li>Additional commits viewable in <a
href="https://github.com/aws/aws-sdk-go-v2/compare/config/v1.31.15...config/v1.31.17">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/aws/aws-sdk-go-v2/config&package-manager=go_modules&previous-version=1.31.15&new-version=1.31.17)](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 this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
dependabot bot and others added 30 commits February 17, 2026 11:01
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.265.0 to 0.266.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.266.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.265.0...v0.266.0">0.266.0</a>
(2026-02-10)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3483">#3483</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/a3a61ce2214c8d18bb640c724fae2cda8cb77b58">a3a61ce</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3485">#3485</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/200d1409ecc830131f0b5b92fd59708fef24dd8e">200d140</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3486">#3486</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/870909e466b1bf8172dfe9bd5c096b1df45b0491">870909e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3487">#3487</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/6018e80ff5cadadb81c7b7be9f5de01b4b4c2132">6018e80</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3489">#3489</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/402353be95579bccda6b6623e67e9f028163905b">402353b</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3490">#3490</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/49c652fb9c5e08c9d1a2587f41017b6011dc03da">49c652f</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.265.0...v0.266.0">0.266.0</a>
(2026-02-10)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3483">#3483</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/a3a61ce2214c8d18bb640c724fae2cda8cb77b58">a3a61ce</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3485">#3485</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/200d1409ecc830131f0b5b92fd59708fef24dd8e">200d140</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3486">#3486</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/870909e466b1bf8172dfe9bd5c096b1df45b0491">870909e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3487">#3487</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/6018e80ff5cadadb81c7b7be9f5de01b4b4c2132">6018e80</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3489">#3489</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/402353be95579bccda6b6623e67e9f028163905b">402353b</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3490">#3490</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/49c652fb9c5e08c9d1a2587f41017b6011dc03da">49c652f</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/26a317d5406788914bd807821ca316e488608573"><code>26a317d</code></a>
chore(main): release 0.266.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3484">#3484</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/49c652fb9c5e08c9d1a2587f41017b6011dc03da"><code>49c652f</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3490">#3490</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/b9fd5c2a7ba8cf9682c821eb78f2d862e1a78727"><code>b9fd5c2</code></a>
chore(all): update all (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3488">#3488</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/402353be95579bccda6b6623e67e9f028163905b"><code>402353b</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3489">#3489</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/6018e80ff5cadadb81c7b7be9f5de01b4b4c2132"><code>6018e80</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3487">#3487</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/870909e466b1bf8172dfe9bd5c096b1df45b0491"><code>870909e</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3486">#3486</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/200d1409ecc830131f0b5b92fd59708fef24dd8e"><code>200d140</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3485">#3485</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/a3a61ce2214c8d18bb640c724fae2cda8cb77b58"><code>a3a61ce</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3483">#3483</a>)</li>
<li>See full diff in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.265.0...v0.266.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.265.0&new-version=0.266.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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- Add tab:confirmclose boolean config option to SettingsType (Go),
schema/settings.json, and gotypes.d.ts
- Update close-tab IPC handler to use ipcMain.handle (async) and accept
confirmClose param
- Show a native confirmation dialog via dialog.showMessageBoxSync when
confirmClose is true
- Update preload.ts to use ipcRenderer.invoke for close-tab, returning
Promise<boolean>
- Update closeTab type signature in custom.d.ts to return
Promise<boolean>
- Update tabbar.tsx and keymodel.ts to await closeTab result and only
delete layout model on confirmed close
- Document tab:confirmclose in docs/docs/config.mdx

---------

Co-authored-by: kiloconnect[bot] <240665456+kiloconnect[bot]@users.noreply.github.com>
…Widget (#2892)

This pull request adds a new command-line feature for exporting terminal
scrollback, improves the accuracy of scrollback extraction (especially
for wrapped lines), and introduces a "Save Session As..." menu option in
the frontend to make exporting session logs more user-friendly. The
changes touch both the backend CLI and the frontend, ensuring users can
easily capture and save terminal output for processing or archiving.
This refactor moves the counters helpers out of
`frontend/app/store/global.ts` into a dedicated `counters.ts` module,
and updates existing call sites to import from the new location. The
goal is to keep `global.ts` focused on global store/state concerns while
preserving current counters behavior.

- **Module extraction**
  - Added `frontend/app/store/counters.ts` containing:
    - `counterInc(name, incAmt = 1)`
    - `countersClear()`
    - `countersPrint()`
  - Moved logic unchanged from `global.ts`.

- **Global store cleanup**
- Removed counters state/functions from `frontend/app/store/global.ts`.
  - Removed counters exports from `global.ts`’s export surface.

- **Call site updates**
  - Updated imports to use `@/store/counters` in:
    - `frontend/app/block/block.tsx` (`counterInc`)
    - `frontend/wave.ts` (`countersClear`, `countersPrint`)

```ts
// before
import { counterInc } from "@/store/global";

// after
import { counterInc } from "@/store/counters";
```

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
…gets.json` (#2898)

This change adds an optional `workspaces` field to widget config entries
so widgets can be scoped to specific workspace UUIDs. Widgets with no
`workspaces` field (or an empty array) continue to render globally,
preserving current `widgets.json` behavior.

- **Config model updates**
- Added `workspaces []string` to `wconfig.WidgetConfigType` with
`json:"workspaces,omitempty"`.
- Updated frontend generated type `WidgetConfigType` with `workspaces?:
string[]`.

- **Sidebar widget filtering**
- `frontend/app/workspace/widgets.tsx` now applies workspace-aware
filtering when building the sidebar widget list:
    - include if `workspaces` is missing or empty
    - include if current `workspace.oid` is present in `workspaces`
    - otherwise exclude
  - Existing `defwidget@ai` filtering logic remains intact.

- **Isolated filtering logic + coverage**
  - Added `frontend/app/workspace/widgetfilter.ts` with:
    - `shouldIncludeWidgetForWorkspace(widget, workspaceId)`
- Added focused tests in `frontend/app/workspace/widgetfilter.test.ts`
for:
    - missing/empty `workspaces`
    - matching/non-matching workspace IDs
    - missing active workspace ID

```ts
function shouldIncludeWidgetForWorkspace(widget: WidgetConfigType, workspaceId?: string): boolean {
  const workspaces = widget.workspaces;
  return !Array.isArray(workspaces) || workspaces.length === 0 || (workspaceId != null && workspaces.includes(workspaceId));
}
```

- **Screenshot**
-
<screenshot>https://github.com/user-attachments/assets/b1727003-793b-4eff-8fc1-00eac9c50b83</screenshot>

<!-- START COPILOT CODING AGENT TIPS -->
---

🔒 GitHub Advanced Security automatically protects Copilot coding agent
pull requests. You can protect all pull requests by enabling Advanced
Security for your repositories. [Learn more about Advanced
Security.](https://gh.io/cca-advanced-security)

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
Co-authored-by: sawka <mike@commandline.dev>
…hortcut from Ctrl+Shift+k to Ctrl+Shift+x (#2909)

## Summary

This PR adds vim-style movement aliases for block navigation and updates
one conflicting
  shortcut.

  ## Changes

  - Added global keybindings:
    - `Ctrl+Shift+h` -> move focus left
    - `Ctrl+Shift+j` -> move focus down
    - `Ctrl+Shift+k` -> move focus up
    - `Ctrl+Shift+l` -> move focus right
  - Kept existing arrow-based movement:
    - `Ctrl+Shift+ArrowUp/Down/Left/Right`
  - **Changed launcher shortcut**:
    - from `Ctrl+Shift+k`
    - to `Ctrl+Shift+x`

  ## Why `k` changed to `x`

`Ctrl+Shift+k` is now used for vim-style upward movement (`k` = up), so
launcher replace
  needed a new binding.
`Ctrl+Shift+x` was chosen to avoid collisions with existing Wave global
keybindings.

  ## Config / behavior notes

- `app:disablectrlshiftarrows` now disables both block-navigation sets:
    - Arrow keys
    - `h/j/k/l` aliases
  - It does **not** disable `Ctrl+Shift+x` (launcher replace).

  ## Docs updated

  - `docs/docs/keybindings.mdx`
    - Added `Ctrl+Shift+h/j/k/l` navigation display
    - Updated launcher replace shortcut to `Ctrl+Shift+x`
  - `docs/docs/config.mdx`
- Clarified `app:disablectrlshiftarrows` scope to include `Arrow` +
`h/j/k/l`
Bumps [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
from 1.14.33 to 1.14.34.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mattn/go-sqlite3/commit/208733130eafb38bd1f570eb7172267a3e64843d"><code>2087331</code></a>
add script to create pull-request</li>
<li><a
href="https://github.com/mattn/go-sqlite3/commit/a5108832c79b3bd3e3c3c0463706dcc8dd8d3030"><code>a510883</code></a>
Upgrade SQLite to version 3051002</li>
<li><a
href="https://github.com/mattn/go-sqlite3/commit/dce6b34a8948550b00752d5f13071acd6280786f"><code>dce6b34</code></a>
Add percentile extension</li>
<li>See full diff in <a
href="https://github.com/mattn/go-sqlite3/compare/v1.14.33...v1.14.34">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/mattn/go-sqlite3&package-manager=go_modules&previous-version=1.14.33&new-version=1.14.34)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [golang.org/x/mod](https://github.com/golang/mod) from 0.32.0 to
0.33.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/golang/mod/commit/27761a2ad800eabb86324226bb5e39adb07759da"><code>27761a2</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/mod/compare/v0.32.0...v0.33.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/mod&package-manager=go_modules&previous-version=0.32.0&new-version=0.33.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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…k focus (#2908)

This PR adds a new app setting to control whether block focus follows
cursor movement:

  - `app:focusfollowscursor: "off" | "on" | "term"`
  - Default is `"off"` (no behavior change unless enabled)

  ## What changed

  - Added hover-focus behavior on block pointer enter.
  - Added guardrails so hover focus does not trigger when:
  - touch input is used
  - pointer buttons are pressed (drag/select scenarios)
  - modal is open
  - pointer events are disabled
  - block is resizing
  - Added config key plumbing across settings types and schema:
  - `pkg/wconfig/settingsconfig.go`
  - `pkg/wconfig/metaconsts.go`
  - `schema/settings.json`
- `pkg/wconfig/defaultconfig/settings.json` ->
`"app:focusfollowscursor": "off"`
  - Added docs for the new key and default example:
  - `docs/docs/config.mdx`

  ## Behavior

  - `"off"`: do not focus on cursor movement
  - `"on"`: focus follows cursor for all block types
  - `"term"`: focus follows cursor only for terminal blocks
Bumps
[google.golang.org/api](https://github.com/googleapis/google-api-go-client)
from 0.266.0 to 0.267.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/releases">google.golang.org/api's
releases</a>.</em></p>
<blockquote>
<h2>v0.267.0</h2>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.266.0...v0.267.0">0.267.0</a>
(2026-02-17)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3492">#3492</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/62e5a8eeb37dc6d8b31b104bdb6f100369d69ff2">62e5a8e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3494">#3494</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/832516f0e0c6fe7da7b12c74cdc4ee4309349421">832516f</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3495">#3495</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1415f4caacd5d60250c33694bb7722b6794c7958">1415f4c</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3496">#3496</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/633a3a27b83ac163a7ca7adcc2fb548af9622c38">633a3a2</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3497">#3497</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/6463f72e8521ee717534a28d6b8d764d2ce2661e">6463f72</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3499">#3499</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ab20d567003131669d657195cc28783c35186cef">ab20d56</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3500">#3500</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8a6df0640a2f7c9f1452848ad0d3d251a92402ba">8a6df06</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-api-go-client/blob/main/CHANGES.md">google.golang.org/api's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-api-go-client/compare/v0.266.0...v0.267.0">0.267.0</a>
(2026-02-17)</h2>
<h3>Features</h3>
<ul>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3492">#3492</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/62e5a8eeb37dc6d8b31b104bdb6f100369d69ff2">62e5a8e</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3494">#3494</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/832516f0e0c6fe7da7b12c74cdc4ee4309349421">832516f</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3495">#3495</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/1415f4caacd5d60250c33694bb7722b6794c7958">1415f4c</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3496">#3496</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/633a3a27b83ac163a7ca7adcc2fb548af9622c38">633a3a2</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3497">#3497</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/6463f72e8521ee717534a28d6b8d764d2ce2661e">6463f72</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3499">#3499</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/ab20d567003131669d657195cc28783c35186cef">ab20d56</a>)</li>
<li><strong>all:</strong> Auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3500">#3500</a>)
(<a
href="https://github.com/googleapis/google-api-go-client/commit/8a6df0640a2f7c9f1452848ad0d3d251a92402ba">8a6df06</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/41fd8476e26277c470b167a481f57d300de27f8b"><code>41fd847</code></a>
chore(main): release 0.267.0 (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3493">#3493</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/8a6df0640a2f7c9f1452848ad0d3d251a92402ba"><code>8a6df06</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3500">#3500</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/ab20d567003131669d657195cc28783c35186cef"><code>ab20d56</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3499">#3499</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/6463f72e8521ee717534a28d6b8d764d2ce2661e"><code>6463f72</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3497">#3497</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/633a3a27b83ac163a7ca7adcc2fb548af9622c38"><code>633a3a2</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3496">#3496</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/1415f4caacd5d60250c33694bb7722b6794c7958"><code>1415f4c</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3495">#3495</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/832516f0e0c6fe7da7b12c74cdc4ee4309349421"><code>832516f</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3494">#3494</a>)</li>
<li><a
href="https://github.com/googleapis/google-api-go-client/commit/62e5a8eeb37dc6d8b31b104bdb6f100369d69ff2"><code>62e5a8e</code></a>
feat(all): auto-regenerate discovery clients (<a
href="https://redirect.github.com/googleapis/google-api-go-client/issues/3492">#3492</a>)</li>
<li>See full diff in <a
href="https://github.com/googleapis/google-api-go-client/compare/v0.266.0...v0.267.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/api&package-manager=go_modules&previous-version=0.266.0&new-version=0.267.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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.12.6 to 6.14.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ajv-validator/ajv/commit/e3af0a723b4b7ad86eff43be355c706d31e0e915"><code>e3af0a7</code></a>
6.14.0</li>
<li><a
href="https://github.com/ajv-validator/ajv/commit/b552ed66191eb338498df3196065c777e3bb71f2"><code>b552ed6</code></a>
add regExp option to address $data exploit via a regular expression
(CVE-2025...</li>
<li><a
href="https://github.com/ajv-validator/ajv/commit/72f228665859eed5e2be3a66f8c4a7aff6b34dcf"><code>72f2286</code></a>
docs: update v7 info</li>
<li><a
href="https://github.com/ajv-validator/ajv/commit/231e52b3bca62559202b95e5fb5cee02145b226a"><code>231e52b</code></a>
Merge pull request <a
href="https://redirect.github.com/ajv-validator/ajv/issues/1320">#1320</a>
from philsturgeon/patch-1</li>
<li><a
href="https://github.com/ajv-validator/ajv/commit/d3475fc20416c33fe030c8aa3b09fa411f325bbd"><code>d3475fc</code></a>
Add spectral, an AJV util from a sponsor</li>
<li><a
href="https://github.com/ajv-validator/ajv/commit/413afe01f518ea74d1740a7cb211df787c585544"><code>413afe0</code></a>
docs: v7.0.0-beta.3</li>
<li><a
href="https://github.com/ajv-validator/ajv/commit/11e997bda2f3eecb445c1e5a07d96ef7e81c5f5d"><code>11e997b</code></a>
update readme for v7</li>
<li>See full diff in <a
href="https://github.com/ajv-validator/ajv/compare/v6.12.6...v6.14.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ajv&package-manager=npm_and_yarn&previous-version=6.12.6&new-version=6.14.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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/wavetermdev/waveterm/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…payloads for no-data events (#2899)

This updates WaveEvent typing to be event-aware instead of `data?: any`,
while keeping safe fallback behavior for unmapped events. It also
codifies known no-payload events as `null` payloads and documents event
payload expectations alongside the Go event constants.

- **Event registry + payload documentation (Go)**
- Added `AllEvents` in `pkg/wps/wpstypes.go` as the canonical list of
Wave event names.
  - Added/updated inline payload annotations on `Event_*` constants.
- Marked confirmed no-payload events with `// type: none` (e.g.
`route:up`, `route:down`, `workspace:update`, `waveapp:appgoupdated`).

- **Dedicated WaveEvent TS generation path**
- Added `pkg/tsgen/tsgenevent.go` with `event -> reflect.Type` metadata
(`WaveEventDataTypes`).
  - Supports three cases:
    - mapped concrete type → strong TS payload type
    - mapped `nil` → `data?: null` (explicit no-data contract)
    - unmapped event → `data?: any` (non-breaking fallback)

- **Custom WaveEvent output and default suppression**
- Suppressed default struct-based `WaveEvent` emission in
`gotypes.d.ts`.
  - Added generated `frontend/types/waveevent.d.ts` containing:
    - `WaveEventName` string-literal union from `AllEvents`
    - discriminated `WaveEvent` union keyed by `event`.

- **Generator wiring + focused coverage**
- Hooked custom event generation into
`cmd/generatets/main-generatets.go`.
  - Added `pkg/tsgen/tsgenevent_test.go` assertions for:
    - typed mapped events
    - explicit `null` for known no-data events
    - `any` fallback for unmapped events.

```ts
type WaveEvent = {
  event: WaveEventName;
  scopes?: string[];
  sender?: string;
  persist?: number;
  data?: any;
} & (
  { event: "block:jobstatus"; data?: BlockJobStatusData } |
  { event: "route:up"; data?: null } |
  { event: "workspace:update"; data?: null } |
  { event: "some:future:event"; data?: any } // fallback if unmapped
);
```

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
Co-authored-by: sawka <mike@commandline.dev>
adds a new "preview server" for UI testing. hooking up to cloudflare
pages deployments. for now, just a test "about modal" component. will
add more later.
…pdate all call sites (#2920)

`contextmenu.ts` eagerly instantiated its model at import time, which
triggered constructor side effects (`getApi()`) too early. This change
aligns ContextMenuModel with the `client-model.ts` singleton pattern so
initialization is explicit and deferred.

- **Singleton pattern migration (`frontend/app/store/contextmenu.ts`)**
- Replaced eager module-level instance creation with a class-based
singleton:
    - `private constructor()`
    - `static getInstance()`
- Removed `ContextMenuModelType` export and now export
`ContextMenuModel` class only.
- Constructor side effects (`onContextMenuClick` wiring) now run only on
first `getInstance()` call.

- **Usage updates (all context menu entry points)**
  - Updated all direct static-style calls:
    - `ContextMenuModel.showContextMenu(...)`
    - ⟶ `ContextMenuModel.getInstance().showContextMenu(...)`
- Applied across app/builder/preview/term/tab/widget context-menu
handlers to keep behavior consistent while deferring initialization.

- **Focused regression test**
  - Added `frontend/app/store/contextmenu.test.ts` to verify:
    - importing `contextmenu` does not initialize the API binding;
    - first `getInstance()` initializes once;
    - repeated `getInstance()` returns the same singleton instance.

```ts
// before
ContextMenuModel.showContextMenu(menu, e);

// after
ContextMenuModel.getInstance().showContextMenu(menu, e);
```

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
…bout-menu wiring back to `global.ts` (#2900)

This refactor keeps `global-atoms.ts` as the owner of atom
state/initialization while correcting ownership boundaries for UI/event
wiring. Specifically, the About menu handler was moved out of atom
initialization and back into `global.ts` startup orchestration.

- **Context / intent**
  - `global-atoms.ts` should own atom construction and registries only.
- `global.ts` should orchestrate app-level startup side effects and
re-export compatibility APIs.

- **What changed**
  - **`global-atoms.ts`**
    - Removed `onMenuItemAbout` registration from `initGlobalAtoms`.
- Removed `modalsModel` import (no longer needed; improves layering).
- Continued to own atom state (`atoms`), atom init (`initGlobalAtoms`),
and atom registries/caches.
  - **`global.ts`**
- Added `onMenuItemAbout` registration to `initGlobal` immediately after
`initGlobalAtoms(initOpts)`.
    - Keeps UI-level event wiring with global startup orchestration.

- **Boundary after this change**
  - `global-atoms.ts`: atom ownership + atom graph init.
- `global.ts`: runtime orchestration + menu/event side effects +
compatibility re-exports.

```ts
// global.ts
function initGlobal(initOpts: GlobalInitOptions) {
    globalEnvironment = initOpts.environment;
    globalPrimaryTabStartup = initOpts.primaryTabStartup ?? false;
    setPlatform(initOpts.platform);
    initGlobalAtoms(initOpts);
    try {
        getApi().onMenuItemAbout(() => {
            modalsModel.pushModal("AboutModal");
        });
    } catch (e) {
        console.log("failed to initialize onMenuItemAbout handler", e);
    }
}
```

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions,
customizing its development environment and configuring Model Context
Protocol (MCP) servers. Learn more [Copilot coding agent
tips](https://gh.io/copilot-coding-agent-tips) in the docs.

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.7 to 7.5.9.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/isaacs/node-tar/commit/1f0c2c9006b10199cf2686f8ef43e79a1773e1aa"><code>1f0c2c9</code></a>
7.5.9</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/fbb08518bf290733b68ca4d4135f75becf73fd75"><code>fbb0851</code></a>
build minified version as default export</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/6b8eba0ef367ac937e703238daa6df94ae6f823f"><code>6b8eba0</code></a>
7.5.8</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/2cb1120bcefe28d7ecc719b41441ade59c52e384"><code>2cb1120</code></a>
fix(unpack): improve UnpackSync symlink error &quot;into&quot; path
accuracy</li>
<li><a
href="https://github.com/isaacs/node-tar/commit/d18e4e1f846f4ddddc153b0f536a19c050e7499f"><code>d18e4e1</code></a>
fix: do not write linkpaths through symlinks</li>
<li>See full diff in <a
href="https://github.com/isaacs/node-tar/compare/v7.5.7...v7.5.9">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~isaacs">isaacs</a>, a new releaser for tar
since your current version.</p>
</details>
<details>
<summary>Install script changes</summary>
<p>This version adds <code>prepare</code> script that runs during
installation. Review the package contents before updating.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tar&package-manager=npm_and_yarn&previous-version=7.5.7&new-version=7.5.9)](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 show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/wavetermdev/waveterm/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…cies-patch group (#2874)

Bumps the dev-dependencies-patch group with 1 update:
[@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc).

Updates `@vitejs/plugin-react-swc` from 4.2.2 to 4.2.3
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc/CHANGELOG.md"><code>@​vitejs/plugin-react-swc</code>'s
changelog</a>.</em></p>
<blockquote>
<h2>4.2.3 (2026-02-02)</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/12914fa8c1d32323db6a134d46cd0ca83db91cd1"><code>12914fa</code></a>
release: plugin-react-swc@4.2.3</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/99e480cf01323268b6f7d5e582ba1662728845d9"><code>99e480c</code></a>
fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1090">#1090</a>)</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/4a858ea0539ec5a85cbf733287713730560ce268"><code>4a858ea</code></a>
chore(deps): update dependency <code>@​types/react</code> to ^19.2.10
(<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1088">#1088</a>)</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/45da3a89b96a5fa16c7d8094272da0d9331b18ff"><code>45da3a8</code></a>
fix(deps): update swc monorepo (<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1089">#1089</a>)</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/77f5e429d49b53c4115581abccaa9f5405bdf079"><code>77f5e42</code></a>
fix(deps): update react 19.2.4 (<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1084">#1084</a>)</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/e327da491fcc0eb9e10b98d7dd674b8375cb0f4f"><code>e327da4</code></a>
fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1083">#1083</a>)</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/8528e98bb94da1ba32f24d24966ccb89d6cfd006"><code>8528e98</code></a>
chore(deps): update dependency <code>@​types/react</code> to ^19.2.9 (<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1082">#1082</a>)</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/58dfb9d70f3d12db529c2e3da8e80ad36168cceb"><code>58dfb9d</code></a>
fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1066">#1066</a>)</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/fefad3dfd9a8505cb8e99d48848d56aa56a7bb48"><code>fefad3d</code></a>
fix(deps): update all non-major dependencies (<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1048">#1048</a>)</li>
<li><a
href="https://github.com/vitejs/vite-plugin-react/commit/a5124db7210019b8c2a3f170d8a218262eba8da4"><code>a5124db</code></a>
chore(deps): update dependency <code>@​types/react</code> to ^19.2.8 (<a
href="https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react-swc/issues/1047">#1047</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/vitejs/vite-plugin-react/commits/plugin-react-swc@4.2.3/packages/plugin-react-swc">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@vitejs/plugin-react-swc&package-manager=npm_and_yarn&previous-version=4.2.2&new-version=4.2.3)](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 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>
…face) (#2928)

`FlashError` was legacy UI/state that was never wired into real runtime
flows (only self-referenced and window-exported for ad-hoc testing).
This PR removes that dead path end-to-end to reduce global surface area
and stale styling/types.

- **Scope: UI removal (`frontend/app/app.tsx`)**
- Deleted the `FlashError` component and its render site (`<FlashError
/>`).
- Removed now-unused imports tied to that component (`removeFlashError`,
`Fragment`, `useState`).

- **Scope: global store cleanup (`frontend/app/store/global.ts`,
`frontend/app/store/global-atoms.ts`)**
  - Removed `pushFlashError` / `removeFlashError`.
- Removed `flashErrors` atom from global atom initialization and
registry.
- Kept notification path intact (`pushNotification`,
`removeNotificationById`, etc.).

- **Scope: external/debug surface cleanup (`frontend/wave.ts`)**
- Removed `pushFlashError` from imports and from `window` export wiring.

- **Scope: type + style cleanup (`frontend/types/custom.d.ts`,
`frontend/app/app.scss`, `frontend/app/theme.scss`)**
  - Removed `GlobalAtomsType.flashErrors`.
  - Removed `FlashErrorType`.
- Removed `.flash-error-container` style block and related z-index token
`--zindex-flash-error-container`.

```ts
// before
(window as any).pushFlashError = pushFlashError;

// after
(window as any).pushNotification = pushNotification;
```

- **`<screenshot>`**
- User-provided screenshot URL (if suitable for PR timeline context):

https://github.com/user-attachments/assets/aacc2e61-a65c-4dbf-bfcc-f9f99a490f20

<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
…ication UI (#2929)

This PR removes the legacy notification pipeline from the frontend
(`pushNotification`, removal helpers, notification atoms/types, and
notification UI components). The updater status notification path was
only wired through this system and dev-only rendering in `App`, so the
entire path is deleted.

- **Store/API cleanup**
  - Removed notification functions from `frontend/app/store/global.ts`:
    - `pushNotification`
    - `removeNotificationById`
    - `removeNotification`
    - internal add/update helper
- Removed notification API exposure from `frontend/wave.ts`
(`window.pushNotification`, `window.removeNotificationById`).

- **Global atom/type cleanup**
- Removed notification atoms from `frontend/app/store/global-atoms.ts`:
    - `notifications`
    - `notificationPopoverMode`
- Removed notification-related fields/types from
`frontend/types/custom.d.ts`:
    - `GlobalAtomsType.notifications`
    - `GlobalAtomsType.notificationPopoverMode`
    - `NotificationType`
    - `NotificationActionType`

- **UI removal**
- Removed notification rendering from `frontend/app/app.tsx` by deleting
the `NotificationBubbles` import and dev-guarded render branch.
- Deleted the entire notification UI module under
`frontend/app/notification/`:
    - `notificationbubbles.tsx/.scss`
    - `notificationitem.tsx/.scss`
    - `notificationpopover.tsx`
    - `updatenotifier.tsx`
    - `usenotification.tsx`

- **Representative diff**
  ```tsx
  // before (app.tsx)
import { NotificationBubbles } from
"./notification/notificationbubbles";
  ...
  {isDev() ? <NotificationBubbles></NotificationBubbles> : null}

  // after
  // notification import and render removed
  ```

<screenshot>

UI reference provided for this change set:  

https://github.com/user-attachments/assets/6f56b16f-95c9-4a5e-ada8-18ecdc9a1ff8

</screenshot>

<!-- START COPILOT CODING AGENT TIPS -->
---

🔒 GitHub Advanced Security automatically protects Copilot coding agent
pull requests. You can protect all pull requests by enabling Advanced
Security for your repositories. [Learn more about Advanced
Security.](https://gh.io/cca-advanced-security)

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.