Commit Graph

329 Commits

Author SHA1 Message Date
Evan Simkowitz
edfe711eda
Use Window Controls Overlay API for native-like experience on Windows and Linux (#240)
This PR implements the [Window Controls Overlay
API](https://web.dev/articles/window-controls-overlay) to let us hide
the menu bar on Windows and Linux and directly embed the window controls
in our tab bar. With #239 merged, we no longer need the menu bar on
these platforms.

The overlaid window controls are transparent so they will take on the
background from the app. I've updated the tab bar to flow properly using
the API's CSS environment variables.

At some point, we may want to update the logic around the symbolColor so
that it can ensure a proper contrast between the background and the
symbols in the window controls. For now, setting them to white works for
all the backgrounds we currently support.

![image
(2)](https://github.com/user-attachments/assets/7610f10b-9696-435c-9a2d-a435bee9fadb)


https://github.com/user-attachments/assets/8d19b512-5281-42b9-8abb-ccb9b850061f
2024-08-16 23:45:22 -07:00
Evan Simkowitz
4a782f2747
make app menu button cursor a pointer and add a hover text color 2024-08-16 23:41:31 -07:00
Mike Sawka
a451743937
POC showing how statfile can call the conn wshclient to get file info (#242) 2024-08-16 18:45:45 -07:00
Evan Simkowitz
bc500490e9
fix context menu 2024-08-16 18:01:31 -07:00
Mike Sawka
ae7d85630b
two level routing (based on how network switches work) (#241) 2024-08-16 16:49:49 -07:00
Evan Simkowitz
03587184a0
Replace logo with platform-dependent button to open app menu (#239)
Replace the logo in the tab bar with an ellipsis icon that shows on
Linux and Windows and, when clicked, opens up the system menus. This
also fixes an issue I noticed where the context menus were set to the
wrong coordinates when a window was zoomed in.


![image](https://github.com/user-attachments/assets/1be77cad-73a6-4cb8-b545-08ec908f1d9a)

![image](https://github.com/user-attachments/assets/0beef938-15f8-4084-b7bd-7d9f995187ef)
2024-08-16 16:18:42 -07:00
sawka
18e2c7ed92 OSC 7 parsing to track and restore the terminal working directory 2024-08-16 13:42:16 -07:00
Evan Simkowitz
a97b8cca58
use closeNode for eventbus layoutaction 2024-08-16 11:44:51 -07:00
Evan Simkowitz
b0a09db4d1
Fix Cmd:W to delete block (#238) 2024-08-16 11:40:10 -07:00
Evan Simkowitz
65e8d4e3fd
Remove double-click on block header to magnify (#233)
Now that we have the magnify button on the block, we don't need the
double-click to magnify.
2024-08-15 17:49:34 -07:00
Evan Simkowitz
42cc9f5d18
disable drag when there's a magnified node 2024-08-15 15:03:15 -07:00
Evan Simkowitz
fc7bb7eaca
Clean up and document the layout model code (#229) 2024-08-15 12:24:06 -07:00
Red J Adaya
a518846900
only set save button to yellow when there are edits (#228) 2024-08-15 11:17:49 -07:00
Evan Simkowitz
1dce9b026f
remove typo 2024-08-14 21:58:55 -07:00
Evan Simkowitz
b5c6c1a937
Create reduced motIon setting (#226)
Adds a new setting that emulates the prefers-reduced-motion media query, allowing users to disable Wave animations without affecting other apps on their system. It also honors the prefers-reduced-motion query in case a system-level configuration is present.
2024-08-14 21:47:09 -07:00
Evan Simkowitz
e85b0d205e
New layout model (#210)
This PR is a large refactoring of the layout code to move as much of the
layout state logic as possible into a unified model class, with atoms
and derived atoms to notify the display logic of changes. It also fixes
some latent bugs in the node resize code, significantly speeds up
response times for resizing and dragging, and sets us up to fully
replace the React-DnD library in the future.
2024-08-14 18:40:41 -07:00
Red J Adaya
2684a74db2
webview url fix (#219)
Fixes issue where deleting the entire URL doesn't work in webview.
2024-08-14 14:39:18 -07:00
Red J Adaya
5b686d6534
do not switch to readonly after saving (#223) 2024-08-14 14:38:21 -07:00
Red J Adaya
688ed8a870
Fix number overlay hotkeys conflict with screenshot in macos (#222) 2024-08-14 14:38:02 -07:00
sawka
961502916b implement remotewritefile 2024-08-13 18:36:11 -07:00
Mike Sawka
844451ea0d
wsh routing + proxy (#224)
lots of changes, including:
* source/route to rpcmessage
* rpcproxy
* wshrouter
* bug fixing
* wps uses routeids not clients
2024-08-13 16:52:35 -07:00
Evan Simkowitz
9e1460b9e1
Remove UUID library in favor of Crypto (#221)
This PR swaps usage of the `uuid` library for the built-in
`crypto.randomUUID` function, which is available in both NodeJS and the
browser. The built-in function is around 12x faster than the `uuid`
library. The strings produced by the built-in function are fully
compatible with the UUIDv4 standard, so it's an easy switch.
2024-08-12 21:20:13 -07:00
sawka
f464223aab switch from 'main' to 'term' for main terminal blockfile 2024-08-12 15:53:34 -07:00
Mike Sawka
c4a0e85d32
update wsh code for easier creation of client servers (for readfile/readdir/fileinfo) (#218) 2024-08-12 10:58:39 -07:00
sawka
5e1da4805f move widgets to left, fix some paddings 2024-08-09 11:49:19 -07:00
Red J Adaya
9a3b38d508
url bar google search and improved url detection (#204) 2024-08-08 11:58:22 -07:00
Evan Simkowitz
7b87b7d7b9
Add WebGL acceleration and link handling to terminal (#205)
This PR adds back WebGL acceleration (enabled by default) for XTerm. It
also adds back link handling and adds a new option (disabled by default)
to open all links internally as a new web block.

---------

Co-authored-by: sawka <mike.sawka@gmail.com>
2024-08-07 14:27:16 -07:00
Evan Simkowitz
8d29f7f934
Import logo png so Vite can find it (#203) 2024-08-06 17:12:32 -07:00
Evan Simkowitz
8ebdb58f4b
Use button for update available banner (#202) 2024-08-06 16:48:25 -07:00
sawka
8508a40261 try adding the wave logo to header 2024-08-06 16:41:00 -07:00
Evan Simkowitz
61f02b27d2
get update status on start, install update on quit 2024-08-06 16:19:55 -07:00
Evan Simkowitz
a01d735db3
Remove unnecessary icon styling for block, update header flex 2024-08-06 14:20:19 -07:00
Evan Simkowitz
824a8540ff
Add banner for app updates, clean up updater logic (#200)
This improves the app updater so that it doesn't rely on unreliable
system notifications. Now, a banner in the tab bar will display when an
update is available. Clicking this will prompt the user to restart the
app and complete the installation.

This also updates the tab bar to move to the smaller tab size earlier so
we don't need to make the tab bar scrollable as much.


![image](https://github.com/user-attachments/assets/79e24617-d609-4554-bdb2-979f810a9b66)
2024-08-06 11:05:26 -07:00
Evan Simkowitz
e29cb2debe
Make magnify icon always visible, transition from magnify to minimize (#197)
I'm updating the magnify button to be always visible and animate a
transition between being a "Magnify" button and a "Minimize" button.

This also cleans up some text shrinking behavior in the block frame
header so the end icons are always visible.

Also fixes some height discrepancies in the block frame header.

Also implements a `prefers-reduced-motion` query for the tilelayout and
block frame to ensure transitions are not set if the user does not want
them.
2024-08-05 16:13:26 -07:00
Evan Simkowitz
5143aefd3c
Simplify blockframe header styling (#199)
This cleans up styling for the BlockFrame header, which had a lot of redundant and unnecessary declarations, which produced inconsistent styling.
2024-08-05 14:54:33 -07:00
sawka
694311c6dc allow pointer events (to eventually allow blocknum/id copying on click) 2024-08-02 16:54:57 -07:00
sawka
9f8042fb87 new keybindings for switching tabs/blocks 2024-08-02 16:50:11 -07:00
sawka
4f74b232e2 trap Shift:Cmd, and enable special blockmask action to show block indexes 2024-08-02 15:39:22 -07:00
sawka
6ebc2e44c3 change 'home' to 'files' and switch the icon 2024-08-02 09:04:13 -07:00
sawka
6f2c99a5cf more refactoring of block header. isolate atom dependencies more 2024-08-01 16:01:11 -07:00
sawka
f13115113d more refactoring (block header) 2024-08-01 15:51:38 -07:00
sawka
94d6c14011 reorganize block view more 2024-08-01 15:35:13 -07:00
sawka
c8cc1de2d4 add 'dev' label to application. also add 'un-magnify' icon when magnified 2024-08-01 13:46:06 -07:00
sawka
9f98d03add rearrange view files into directories 2024-08-01 13:06:18 -07:00
sawka
4b30c8bc3b move preview into own directory 2024-08-01 12:53:49 -07:00
Sylvie Crowe
7098c8b3ea
fix: don't allow the block title to grow (#192) 2024-08-01 01:29:47 -07:00
sawka
1d9b56bfd1 add some wsh documentation 2024-08-01 01:21:34 -07:00
Sylvie Crowe
7cba3c46d4
Additional Demo Fixes (#191) 2024-08-01 00:57:06 -07:00
sawka
817afd6138 update web view url if meta url changes 2024-08-01 00:35:44 -07:00
sawka
a23b5ca0e0 panic handlers in wshrpc. also stop waveai from grabbing focus all the time 2024-08-01 00:03:19 -07:00
Sylvie Crowe
c5707de2fd
Fixes For the Demo (#190) 2024-07-31 23:50:38 -07:00
Sylvie Crowe
fc8c1104f4
Create a Help Block (#188)
Adds a block to explain how to use the app.
2024-07-31 22:22:52 -07:00
sawka
07843ab281 remove minimize 2024-07-31 21:41:28 -07:00
Evan Simkowitz
74e86ef0cc
Bootstrap layout on first launch (#186) 2024-07-31 21:27:46 -07:00
sawka
933c5d66e9 Cmd-m magnify block 2024-07-31 19:59:21 -07:00
sawka
a4551f9e4c bind Cmd-r,s,e directly with Monaco for codeedit 2024-07-31 19:41:16 -07:00
sawka
c87caef473 implement Cmd-W to close blocks and tabs 2024-07-31 19:22:15 -07:00
Sylvie Crowe
efd1e3c189
CPU Plot (#185)
Adds a CPU % Plotting Widget
2024-07-31 14:13:36 -07:00
Evan Simkowitz
c91cae9463
Fix some more improper border radii (#184) 2024-07-31 13:37:20 -07:00
Red J Adaya
1841669525
tab animations (#167)
Implements animations when adding and removing tabs.
2024-07-31 12:54:43 -07:00
Evan Simkowitz
2157df85de
Disable block pointer events during layout drag (#183)
This will ensure that the webview cannot capture the pointer events and
disrupt the drag functionality.

This also fixes an issue where greedy and imprecise bounds calculations
could result in thrashing of the layoutState.pendingAction field, which
could cause the placeholder to flicker.

This also fixes issues where some React Effects that were supposed to be
debounced or throttled were being invoked too much. This is because
useEffect regenerates the callback when it is run, resulting in the
debounce or throttle never taking effect. Moving the throttled or
debounced logic to a separate callback solves this.
2024-07-31 12:49:38 -07:00
Evan Simkowitz
4df8e16a53
Adjust some styling in the directory and markdown previews (#182)
The column headers for the directory preview were a solid color, which
was conflicting with the translucent colors for the rest of the UI. I've
changed this to be more consistent. I've also updated a border color
that was conflicting with the rest of the UI.

The code blocks in the markdown preview were also solid colored and the
actions were causing the whole window UI to lose its transparency when
they were hovered over. This was due to it applying a backdrop-filter,
which breaks the window transparency. I've removed this blur and an
invalid color variable.

This also fixes the bottom margins for both blocks so there's more space
when scrolled all the way to the bottom of the block. Before, the
overlay scrollbars were obscuring the content.
2024-07-31 12:42:58 -07:00
sawka
8456c57bc1 implement bg presets 2024-07-30 23:22:41 -07:00
sawka
ec94bd51f6 fix icon centering in preview 2024-07-30 22:53:50 -07:00
sawka
f7531b895f allow ten characters, also count glyphs not chars 2024-07-30 22:22:21 -07:00
sawka
827263d2d5 playing with a preview icon 2024-07-30 22:02:52 -07:00
sawka
ea8914cb85 don't apply custom background to previews 2024-07-30 21:59:20 -07:00
sawka
d68d32f96c terminal themes, use terminal bg to style the full block 2024-07-30 19:52:50 -07:00
sawka
fe708d1d37 small updates to tab colors 2024-07-30 15:43:49 -07:00
Evan Simkowitz
f475c7432f
Make close button always show on hover, even for inactive tabs (#178) 2024-07-30 15:06:02 -07:00
Evan Simkowitz
e6dc6c561e
Fix clipping in the tab layouts by swapping margins for padding (#177)
<img width="132" alt="image"
src="https://github.com/user-attachments/assets/3550f307-fc8d-4dd8-b9d8-3e2e8d9ad395">
2024-07-30 14:06:09 -07:00
Mike Sawka
cfc875bc21
metadata updates (frontend typing) (#174) 2024-07-30 12:33:28 -07:00
Red J Adaya
9233b3dbd7
modals component and model and TOS modal (#164)
Co-authored-by: Sylvia Crowe <software@oneirocosm.com>
Co-authored-by: sawka <mike.sawka@gmail.com>
2024-07-30 11:44:19 -07:00
Evan Simkowitz
f3f272a47b
Add action for magnifying a block (#172)
Adds the implementation for the "Magnify Block" context menu item. This
will pop a block out of the layout and bring it to the foreground.

This also cleans up some block styling to make radii more consistent.

<img width="814" alt="image"
src="https://github.com/user-attachments/assets/c81521e1-c91f-4bb5-9eec-ff0eda178268">
2024-07-30 10:59:53 -07:00
Sylvia Crowe
ee7a95955f fix: add frontend default to ai model header
For some reason, this crashes the app on startup without a frontend
default. The backend does not suffice in this case.
2024-07-30 04:07:28 -07:00
Sylvie Crowe
923850313f
AI Fixes (#173)
Fixing a few AI-related bugs
2024-07-29 22:35:21 -07:00
Evan Simkowitz
b27d032704
Clean up WOS to reduce code reuse, interface usage (#171)
Removes unused functions, cleans up code reuse.
2024-07-29 15:09:07 -07:00
Sylvie Crowe
4494dc25cb
AI Port Context (#170)
This brings over the AI context from the previous app. In particular, it
makes it so each block has its own context that persists after the app
is reloaded.

Note that this does not provide the app with the cli-specific context
from the previous app.
2024-07-29 13:21:44 -07:00
Mike Sawka
551802dbd7
background support (from metadata). colors, gradients, images. (#168) 2024-07-29 11:55:10 -07:00
Evan Simkowitz
6e75c2cdfd
remove commented code 2024-07-26 19:19:50 -04:00
Evan Simkowitz
72fc42a050
Support window blur in addition to transparency (#161)
Adds support for window blur via the Vibrancy feature on macOS and the
BackgroundMaterial feature on Windows. The setting has no effect on
Linux. If both transparency and blur are set, transparency will take
precedence.
2024-07-26 16:18:53 -07:00
sawka
245394f8e2 add copy file name and path, and shell quoting options as well 2024-07-26 16:06:46 -07:00
sawka
6727285695 default transparency to false 2024-07-26 15:05:56 -07:00
Mike Sawka
9df9c99fbd
checkpoint on domain sockets + update background colors + transparency (#160) 2024-07-26 13:30:11 -07:00
Sylvie Crowe
3162ad2c41
Directory Context Menus (#155)
This adds the ability to open a directory as a terminal in a new block.
it uses the directory table items for child directories and the block
header for the current directory.
2024-07-26 00:48:12 -07:00
Red J Adaya
2fea8e0a68
directory preview fixes (#130)
- Set all cols of navigation row(first row) to - except the first col
- Fixed the issue where it scrolls right on load or when you click back
from the file preview
- Use OverlayScrollbars
2024-07-25 21:14:21 -07:00
sawka
127b2bb9bf default block icon/title/name in the same way. use blockName atom from viewmodel 2024-07-25 18:05:32 -07:00
sawka
875fbb87c4 fix term view icon/title 2024-07-25 16:45:07 -07:00
Red J Adaya
96420ea3ef
code editor responsiveness and various fixes (#129) 2024-07-25 12:00:35 -07:00
Sylvie Crowe
0e46b79c22
Open Ai Port (#154)
This brings over a simplified version of the open ai feature from the
previous app but in widget form. It still needs some work to reach
parity with that version, but this includes all of the basic building
blocks to get that working.
2024-07-25 02:30:49 -07:00
Red J Adaya
dcb4d5f2bf
terminal themes feature (#135)
Co-authored-by: sawka
2024-07-24 20:34:22 -07:00
sawka
2f3275e7a6 fix vdom key error 2024-07-24 20:18:55 -07:00
Evan Simkowitz
9fb2e58b54
rename faraday to layout (#147) 2024-07-23 13:50:23 -07:00
Mike Sawka
6c2ef6cb99
working on vdom implementation, other fixes (#136) 2024-07-23 13:16:53 -07:00
Evan Simkowitz
e6f60ff210
more const crusade 2024-07-23 12:46:29 -07:00
Evan Simkowitz
ed43d7e0a8
const crusade 2024-07-23 12:42:31 -07:00
Evan Simkowitz
876c360922
Fix context menu click 2024-07-23 12:40:50 -07:00
sawka
ee51f2de12 more focus fixes -- write a viewmodel for terminal 2024-07-22 17:08:28 -07:00
sawka
198ec60e69 create an explicit giveFocus() method on the viewmodel. fix preview header text 2024-07-22 16:41:27 -07:00
Evan Simkowitz
0fbb42863c
Remove left indent for tab-bar for non-Mac targets and when in full screen (#128)
This adds a new global atom to track whether a window is in full screen.
It also updates the behavior of the tab bar so that it will only add an
extra left indent on macOS windows that are not in full screen.
Otherwise, the indent will be much smaller.
2024-07-22 13:33:10 -07:00