Commit graph

84 commits

Author SHA1 Message Date
Copilot
95a97ca932
Add Onboarding Flows to Preview Server (#2960)
`FilesPage` was previously previewed through a special path because
`EditBashrcCommand` (Monaco via `CodeEditor`) threw in preview mode.
With preview/global handling now fixed, preview can run the real Files
onboarding flow end-to-end without command overrides.

- **Files preview now uses the real FilesPage path**
  - `OnboardingPreview` renders `FilesPage` directly.
- Removed preview-only command injection/override behavior for Files
onboarding.

- **Reverted FilesPage customization**
  - Dropped optional command renderer plumbing added for preview.
  - Restored FilesPage to its original internal command rotation:
    `EditBashrcCommand -> ViewShortcutsCommand -> ViewLogoCommand`.

- **Result**
  - No Files-specific preview fork remains.
  - Preview and production use the same FilesPage command lifecycle.

```tsx
const commands = [
    (onComplete: () => void) => <EditBashrcCommand onComplete={onComplete} />,
    (onComplete: () => void) => <ViewShortcutsCommand isMac={isMac} onComplete={onComplete} />,
    (onComplete: () => void) => <ViewLogoCommand onComplete={onComplete} />,
];
```

<screenshot>

![Onboarding FilesPage preview using default
commands](https://github.com/user-attachments/assets/c5baf015-6204-41da-b72b-408ef137f32b)

</screenshot>

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

 Let Copilot coding agent [set things up for
you](https://github.com/wavetermdev/waveterm/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

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>
2026-03-02 11:06:01 -08:00
Copilot
9c3cf984e8
Make frontend CSS color validation Chromium-only (remove DOM style fallback) (#2946)
The new color validator is used exclusively in the Electron/Chromium
frontend, so fallback parsing via temporary DOM elements is unnecessary.
This update tightens the implementation to rely on the browser-native
CSS capability check only.

- **Scope**
- Keep `validateCssColor(color: string): string` behavior unchanged
(returns normalized type for valid colors, throws on invalid).
  - Remove non-Chromium fallback logic from validation path.

- **Implementation**
  - **`frontend/util/color-validator.ts`**
    - `isValidCssColor` now exclusively uses:
      - `CSS.supports("color", color)`
- Removed fallback using `document.createElement(...).style.color`
assignment/parsing.

- **Behavioral contract (unchanged)**
- Valid values still return specific type strings (`hex`, `hex8`, `rgb`,
`rgba`, `hsl`, `keyword`, etc.).
  - Invalid values still throw `Error("Invalid CSS color: ...")`.

```ts
function isValidCssColor(color: string): boolean {
    if (typeof CSS == "undefined" || typeof CSS.supports != "function") {
        return false;
    }
    return CSS.supports("color", color);
}
```

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

 Let Copilot coding agent [set things up for
you](https://github.com/wavetermdev/waveterm/issues/new?title=+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

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>
2026-02-27 15:48:56 -08:00
Mike Sawka
110e2b90a1
update eslint to v9 (and fix all eslint errors) (#2923) 2026-02-23 18:42:17 -08:00
Mike Sawka
facefdd12e
job events, terminal command types, connect error codes (#2855) 2026-02-10 20:23:06 -08:00
Mike Sawka
ff9923f486
Session Durability Checkpoint (#2821)
Working on bug fixes and UX. Streams restarting, fixed lots of bugs,
timing issues, concurrency bugs. Get status shipped to the FE to drive
"shield" state display. Deal with stale streams.

Also big UX changes to the block headers. Specialize the terminal
headers to prioritize the connection (sense of place), remove old
terminal icon and word "Terminal" from the header. Also drop "Web" and
"Preview" labels on web/preview blocks.

Added `wsh focusblock` command.
2026-02-03 11:49:52 -08:00
Mike Sawka
93b7269304
Do not allow large/recursive file transfers (for now), remove s3 and wavefile fs implementations (#2808)
Big simplification. Remove the FileShare interface that abstracted
wsh://, s3://, and wavefile:// files.
It produced a lot of complexity for very little usage. We're just going
to focus on the wsh:// implementation since that's core to our remote
workflows.

* remove s3 implementation (and connections, and picker items for
preview)
* remove capabilities for FE
* remove wavefile backend impl as well
* simplify wsh file remote backend
* remove ability to copy/move/ls recursively
* limit file transfers to 32m

the longer term fix here is to use the new streaming RPC primitives.
they have full end-to-end flow-control built in and will not create
pipeline stalls, blocking other requests, and OOM issues.

these other impls had to be removed (or fixed) because transferring
large files could cause stalls or crashes with the new router
infrastructure.
2026-01-28 14:28:31 -08:00
Mike Sawka
5b94b9559f
add context menu items for terminal (splits, open url, themes, file browser, etc) (#2745) 2026-01-05 16:32:34 -08:00
Mike Sawka
fbb0c4d052
windows, have a new "local" conn option for Git Bash if installed (#2666) 2025-12-12 14:05:48 -08:00
Mike Sawka
2f92e23ece
more config updates (secrets, waveai, ai:provider) (#2631) 2025-12-05 10:10:43 -08:00
Mike Sawka
44a068833f
builder files tab (#2569) 2025-11-18 10:46:30 -08:00
Mike Sawka
eb3ba64121
cleaned up build output w/ "debug" lines and filtering (#2545) 2025-11-11 11:53:57 -08:00
Mike Sawka
ef5a59e710
tsunami app builder 2 (#2486) 2025-10-27 16:37:15 -07:00
Mike Sawka
755d9783c9
waveapps builder window (scaffolding, restructure AI panel to work in both builder and tab windows) (#2482) 2025-10-26 17:48:01 -07:00
Mike Sawka
d886b5e246
more terminal integration for wave ai (#2470)
- mark last command / prompts in xterm.js
- split out term model into its own file
- try to detect repl/shells/ssh/tmux etc commands that stop wave ai
integration
- show icons in term headers for whether wave ai integration is
available
- keep integration status / last command client side (sync with server
on reload)
2025-10-25 21:47:16 -07:00
Mike Sawka
6a173a6227
working on more terminal context (#2444)
* add automatic OSC 7 support to bash and zsh
* add new wave OSC 16162 (planck length) to get up-to-date shell
information into blockrtinfo. currently implemented only for zsh. bash
will not support as rich of data as zsh, but we'll be able to do some.
* new rtinfo will be used to provide better context for AI in the
future, and to make sure AI is running safe commands.
* added a small local machine description to tab context (so AI knows
we're running on MacOS, Linux, or Windows)
2025-10-17 12:19:40 -07:00
Mike Sawka
0fd0daf134
Reimplement wsh ai, fix text file attaching format (#2435) 2025-10-15 17:28:56 -07:00
Mike Sawka
7451294f11
onboarding and polish for v0.12 (#2411) 2025-10-09 16:29:09 -07:00
Mike Sawka
d272a4ec03
New AIPanel (#2370)
Massive PR, over 13k LOC updated, 128 commits to implement the first pass at the new Wave AI panel.  Two backend adapters (OpenAI and Anthropic), layout changes to support the panel, keyboard shortcuts, and a huge focus/layout change to integrate the panel seamlessly into the UI.

Also fixes some small issues found during the Wave AI journey (zoom fixes, documentation, more scss removal, circular dependency issues, settings, etc)
2025-10-07 13:32:10 -07:00
Mike Sawka
66164ac15e
term shiftenternewline config for claude code Shift+Enter support (#2285) 2025-08-22 14:08:48 -07:00
Mike Sawka
6845cd5a72
standalone fixes, linting errors, speedups, QOL changes ported from wave-12 branch (#2271) 2025-08-20 18:07:11 -07:00
Sylvie Crowe
ff4b71dfae
Error Popups and Context Menu Items (#1989)
This makes the following changes:
- Connects various context menu items to the error overlay on failure
- Connects read file errors to the error overlay on failure
- Consolidates context menu items for open and reveal
- Reduces duplication in context menu items
- Removes an unnecessary File Stat RPC call for the parent directory

---------

Co-authored-by: Evan Simkowitz <esimkowitz@users.noreply.github.com>
Co-authored-by: sawka <mike@commandline.dev>
2025-02-18 16:25:03 -08:00
Mike Sawka
e15d38a795
fix stream-file urls to use new remoteuri (#1984) 2025-02-17 17:55:57 -08:00
Mike Sawka
c53c3d0f85
osc9283 and term bg (#1959) 2025-02-14 13:31:31 -08:00
Mike Sawka
e126463029
keyboard chord support, split up/down/left/right, and clear block (#1957) 2025-02-14 13:25:25 -08:00
Sylvie Crowe
ef30221e0b
Allow AI Presets To Automatically Update Widgets (#1954)
This change makes it so changes to the presets file are no longer being
written to metadata. Instead, the preset data is read separately
(although it is still possible to override it with metadata if done
manually).

Because presets are being tracked separately, if the associated metadata
key is not set, changes to the `presets/ai.json` file will be applied
immediately without switching the preset choice. Note that `ai:preset`
is still used in metadata to associate a block with a preset.

Additionallly, this introduces a database migration to clear out the
metadata items starting with `ai:` except for `ai:preset`. This will
allow the change to apply to existing blocks in addition to new ones.
2025-02-13 13:38:12 -08:00
Mike Sawka
6e2ff6c5fc
add tailwind to wave, support shadcn + donut chart as a POC (#1775) 2025-02-04 17:58:36 -08:00
Evan Simkowitz
50b80a10fd
Add license identifiers to missing files (#1806) 2025-01-22 20:06:36 -08:00
Sylvie Crowe
6d32ae856c
Reveal Parent Directories in External Applications (#1791)
Adds context menu options to the directory preview to open the parent
directory in the native file viewer. Additionally, it adds context menu
options in the block header to open either a parent directory or a
different type of file in an external default application. These context
menu items are only available for local directory previews.
2025-01-22 19:09:07 -08:00
Evan Simkowitz
11fec5695c
wsh file overhaul without cross-remote copy and S3 (#1790) 2025-01-22 14:50:09 -08:00
Evan Simkowitz
b51ff834b2
Happy new year! (#1684)
Update all 2024 references to 2025
2025-01-04 20:56:57 -08:00
Evan Simkowitz
a2974a3e6d
Fix escape getting eaten by global event handler (#1668)
The terminal keydown handler was set to filter out all key bindings that
have a registered global handler, regardless of whether they actually
propagated or not. This allowed the global handlers to still work
despite the terminal input having precedence, but it also meant that
global key bindings that were invalid for the current context would
still get eaten and not sent to stdin.

Now, the terminal keydown handler will directly call the global handlers
so we can actually see whether or not the global key binding is valid.
If the global handler is valid, it'll be processed immediately and stdin
won't receive the input. If it's not handled, we'll let xterm pass it to
stdin. Because anything xterm doesn't handle gets sent to the
globally-registered version of the handler, we need to make sure we
don't do extra work to process an input we've already checked. We'll
store the last-handled keydown event as a static variable so we can
dedupe later calls for the same event to prevent doing double work.
2025-01-02 08:38:07 -08:00
Evan Simkowitz
477052e8fc
Web Search (#1631)
Adds support for Cmd:f, Ctrl:f, and Alt:f to activate search in the Web
and Help widgets
2024-12-29 09:58:11 -08:00
Mike Sawka
73561dc12d
new utility fn, deepCompareReturnPrev. use for settings prefix atom to do a deep equal (#1630) 2024-12-26 11:09:48 -08:00
Evan Simkowitz
c2312f1c7f
Make default workspace icon the Wave logo (#1470)
I made our logo a custom icon in Font Awesome so we can add it to our
workspace switcher as the default icon
2024-12-10 13:54:11 -08:00
Evan Simkowitz
34b73b8bea
Update switcher icons, fix bug makeIconClass, add guid to new workspace name (#1444) 2024-12-09 16:52:59 -08:00
Mike Sawka
46783ba315
vdom 3 (#1033) 2024-10-17 14:50:36 -07:00
Sylvie Crowe
3f7af7bfb8
fix: modifier keys on windows and linux (#922) 2024-10-01 11:54:39 -07:00
Mike Sawka
538d4be8be
use makeIconClass for widgets, add 'brands' support (#920) 2024-10-01 09:51:22 -07:00
sawka
8fb831fac6 focus selection stuff 2024-09-19 16:47:59 -07:00
Evan Simkowitz
708af7efde
Move env vars to vite config 2024-09-19 12:37:16 -07:00
Evan Simkowitz
4c3496c5e1
Fix WebSocket compatibility with Rollup (#398) 2024-09-19 10:53:06 -07:00
Mike Sawka
3939648bbb
fe wsh router + wsh client impl (#381) 2024-09-16 11:59:39 -07:00
Mike Sawka
566bf461ff
implement img streaming (local and remote) for markdown (#348) 2024-09-06 12:59:28 -07:00
Evan Simkowitz
015ebf5dd5
Make textAtom and showTocAtom in Markdown element optional (#331)
Fix backwards-compatibility for the Markdown element by adding back the option to pass text directly to the element and make atom parameters optional.
2024-09-05 15:35:57 -07:00
Mike Sawka
e3b7ab73c0
preview refactor for keyboard/focus (#303) 2024-09-02 16:48:10 -07:00
sawka
74f551b212 connstatus fix, update connection icons appropriately for status 2024-08-30 13:56:53 -07:00
Mike Sawka
a104a6e446
new focus system part 1 (#290) 2024-08-29 16:06:15 -07:00
sawka
bfab5e4223 detect single keypresses 2024-08-28 18:42:04 -07:00
sawka
afcbb35341 countGraphemes and add debug package 2024-08-28 17:12:52 -07:00
Mike Sawka
8630e23239
new config system (#283) 2024-08-27 18:49:49 -07:00