Commit Graph

398 Commits

Author SHA1 Message Date
Evan Simkowitz
fd375b95d8
uselayouteffect for window controls overlay callback 2024-08-19 14:28:01 -07:00
Evan Simkowitz
a52e5c6c9b
remove unused declarations in app.tsx 2024-08-19 14:23:58 -07:00
Evan Simkowitz
e6003c310e
Set background color for window controls on Linux (#247)
The Window Controls Overlay API applies a transparent overlay on
Windows, but not on Linux. This PR addresses this by capturing the area
underneath the overlay, averaging the color of the area, and setting
this as the overlay background color.

It will also detect whether to make the control symbols white or black,
depending on how dark the background color is.

On Linux, this will set both the background color and the symbol color,
on Windows it will just set the symbol color.

<img width="721" alt="image"
src="https://github.com/user-attachments/assets/e6f9f8f8-a49f-41b6-984e-09e7d52c631d">
2024-08-19 14:16:09 -07:00
sawka
3f37837394 fix term keydown handler 2024-08-19 12:24:08 -07:00
sawka
b412f72f6b remove unsafe btoa calls 2024-08-19 11:54:54 -07:00
Mike Sawka
8651659c02
get remote preview working (#246)
almost all there -- just need to fix streamfile for web urls.
2024-08-19 11:02:40 -07:00
Sylvie Crowe
c30188552f
Add Unix Domain Socket Listener when Establishing Connections (#243)
This makes it possible to send wsh commands from wsh on a remote session
to wavesrv running locally. The exact behavior of running those commands
isn't implemented, but the underlying interface is added here.
2024-08-17 11:21:25 -07:00
Evan Simkowitz
6df50a5790
use one multiply instead of two divide for minnodesize calc 2024-08-17 00:15:03 -07:00
Evan Simkowitz
c8d32c1668
set min resize size for nodes 2024-08-17 00:13:55 -07:00
Evan Simkowitz
07a843f7bd
render resize handles first so they can't interfere with a magnified block 2024-08-17 00:02:08 -07:00
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
Evan Simkowitz
7a1a3a2bea
fix addl props nullref 2024-08-16 17:59:53 -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
d73bcb82ea
fix last-magnified node logic 2024-08-16 12:21:44 -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
c187059c8f
Fix flicker when dragging a node through a node gap (#231)
This simplifies the rect calculations by making the gap between pixels
into a padding applied directly to the leaf nodes. This means the gaps
won't be present in the overlay layer, so when dragging a node around it
is always over an OverlayNode and the pendingAction won't be unset.

Also simplifies onDrop handling
2024-08-15 14:53:13 -07:00
Evan Simkowitz
9fa11ff838
Fix tab switching issues with layout model (#230) 2024-08-15 13:45:45 -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
3c9b3423a9
update type defs 2024-08-14 19:43:25 -07:00
Evan Simkowitz
15cd0b2477
fix resize handle drag offset 2024-08-14 19:37:47 -07:00
Evan Simkowitz
a95f60469a
rename vars 2024-08-14 19:27:32 -07:00
Evan Simkowitz
fb1c3ac85f
update var name 2024-08-14 19:09:22 -07:00
Evan Simkowitz
8262f977f0
remove unused layout tree reducer 2024-08-14 18:44:32 -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
Mike Sawka
ed0279ad72
adding telemetry updates (#209) 2024-08-08 18:24:54 -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
21684b0995
use native install on quit instead 2024-08-06 16:30:42 -07:00
Evan Simkowitz
61f02b27d2
get update status on start, install update on quit 2024-08-06 16:19:55 -07:00
Evan Simkowitz
335ab6d55d
fix check for updates, ensure quitAndInstall is not interrupted 2024-08-06 15:13:59 -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
sawka
a92fd2e2d5 fix layoutNode to layoutnode 2024-07-31 18:14:48 -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
Evan Simkowitz
9afb5a7bc1
Update setTransform calculation to ensure blocks don't overflow display container (#181) 2024-07-30 19:21:06 -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
Evan Simkowitz
5a6be9bc43
Fix resize ns margin 2024-07-30 16:05:30 -04: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