Commit Graph

197 Commits

Author SHA1 Message Date
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
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
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
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
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
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
61f02b27d2
get update status on start, install update on quit 2024-08-06 16:19:55 -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
sawka
4f74b232e2 trap Shift:Cmd, and enable special blockmask action to show block indexes 2024-08-02 15:39:22 -07:00
sawka
c8cc1de2d4 add 'dev' label to application. also add 'un-magnify' icon when magnified 2024-08-01 13:46:06 -07:00
Evan Simkowitz
74e86ef0cc
Bootstrap layout on first launch (#186) 2024-07-31 21:27:46 -07:00
Sylvie Crowe
efd1e3c189
CPU Plot (#185)
Adds a CPU % Plotting Widget
2024-07-31 14:13:36 -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
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
Mike Sawka
9df9c99fbd
checkpoint on domain sockets + update background colors + transparency (#160) 2024-07-26 13:30:11 -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
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
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
Mike Sawka
ca0dc2624a
more well defined 'init' for global.ts (#125) 2024-07-19 13:44:32 -07:00
sawka
fd3581fc42 wsh deleteblock 2024-07-18 18:14:11 -07:00
Evan Simkowitz
c47e17903d
Add auto updater configuration (#122)
Adds a new set of configurations for managing whether the app will
automatically check for updates. Ports over the auto update code from
the old app. In this version, the main difference is that updates can be
manually checked for using a menu bar item, even if auto updates are
disabled.
2024-07-18 16:55:04 -07:00
Mike Sawka
776ccd7da0
streaming rpc support (backend streams to the frontend) (#120) 2024-07-18 15:56:04 -07:00
Sylvie Crowe
f3743f90ec
User Input (#119)
Port the User Input feature from the previous version of the app. This
is currently being used to verify a few different prompts for ssh.
2024-07-18 15:21:33 -07:00
Red J Adaya
2a81f19b15
code editor header controls (#117) 2024-07-17 23:41:33 -07:00
Evan Simkowitz
4d29dd5b5f
Rename endpoint functions 2024-07-17 18:49:27 -07:00
Evan Simkowitz
8971e2feba
Set up electron-builder for new app (#113)
Adds electron-builder, which we will use to package and distribute our
application, same as in the existing app.
Replaces explicit port assignments with dynamic ones, which are then
stored into environment variables.
Adds a ~/.w2-dev folder for use when running a dev build.

The build-helper pipeline from the old repo is included here too, but it
is not updated yet so it will fail.

Also removes some redundant utility functions and cleans up some let vs.
const usage.

The packaging can be run using the `package:prod` and `package:dev`
tasks.

---------

Co-authored-by: sawka <mike.sawka@gmail.com>
2024-07-17 18:42:49 -07:00
Mike Sawka
01b5d71709
new wshrpc mechanism (#112)
lots of changes. new wshrpc implementation. unify websocket, web,
blockcontroller, domain sockets, and terminal inputs to all use the new
rpc system.

lots of moving files around to deal with circular dependencies

use new wshrpc as a client in wsh cmd
2024-07-17 15:24:43 -07:00
Mike Sawka
4be8a1e37e
move codeedit to directory. new useLongClick hook. show quick navig… (#105)
move codeedit to directory. new useLongClick hook. show quick navigation for directoryview on longclick of folder icon. lots more generic
stuff for header
new fitaddon for xtermjs
more fixes for xtermjs scrollbars
2024-07-08 23:13:12 -07:00
Mike Sawka
848a9af9a0
dynamic header updates (#102) 2024-07-08 15:04:48 -07:00
Red J Adaya
9b3042829c
ai chat enhancements (#96) 2024-07-04 09:07:29 -07:00
Red J Adaya
1f973b3fdc
WaveAI (#93) 2024-07-03 14:32:55 -07:00
Evan Simkowitz
75c9e211d9
Add resize handles to the layout system (#66)
Adds resizability to the layout system.

Hovering in the margins of a block will highlight the available resize
handle and show a cursor indicating its resize direction. Dragging will
cause the resizing nodes to blur out and be replaced by an outline.
Releasing the handle will commit the new resize operation and cause the
underlying nodes to update to their new sizes.

We'll want to refactor this in the future to move all layout and resize
logic into a shared model that the TileLayout code can talk to, but
that's a future improvement. For now, this makes some compromises,
mainly that the logic is kind of distributed around.

---------

Co-authored-by: sawka <mike.sawka@gmail.com>
2024-07-03 14:31:02 -07:00
Red J Adaya
566f6764c2
Web view (#78) 2024-06-26 09:39:41 -07:00
sawka
f036459dd5 remove console.log 2024-06-25 14:57:08 -07:00
Mike Sawka
7b93354657
initial implementation of move block to window (#77) 2024-06-25 14:56:37 -07:00
Sylvie Crowe
182c5f6e3d
Open New Block and Delete Files (#76)
This implements the behavior for the context menu recently added to the
directories. Open New Block simply opens the file in a preview in a new
block.

Delete files will delete the selected file, but it does not trigger a
rerender at this time. To see the change, you must navigate to a
different directory and then return. This will be fixed in a future
update.
2024-06-25 13:53:55 -07:00
sawka
7bf64fb268 wsh view works -- uses a WS event to send to the frontend 2024-06-24 19:04:08 -07:00
Mike Sawka
77b5acfc5a
cmd blocks (#74) 2024-06-24 14:34:31 -07:00
sawka
516f1faa47 fix ordering of typeunions in generated typescript. add term config fontsize and fontfamily. 2024-06-21 13:23:07 -07:00
Mike Sawka
0ea8e5ac88
integrate part of keyutil, and implement tab and block movement with keyboard (#70) 2024-06-21 12:32:38 -07:00
Red J Adaya
9cc5d9d3ae
Add ability to edit tab name (#67) 2024-06-21 10:23:04 -07:00
sawka
b73148be6b fix emain 2024-06-20 16:20:50 -07:00
Mike Sawka
5e655c7c55
refactor cmdqueue out of blockcontroller (#65) 2024-06-20 16:01:55 -07:00
sawka
d59e0f5959 add contextmenu model, example code in block.tsx 2024-06-20 12:34:32 -07:00
Sylvie Crowe
21fa9a601f
Add filewatcher for config files (#63)
This adds the filewatcher and forwards events to the frontend. It also
sets up the widgets as something that can be controlled with a config
file.
2024-06-19 23:59:41 -07:00
Mike Sawka
fb668fd4e5
multi-window support (#62) 2024-06-19 19:10:53 -07:00
Evan Simkowitz
da20973fee
update comment on getApi 2024-06-19 11:20:35 -07:00
Mike Sawka
15681ffa1a
create blockframes to replace blockheader (#59)
created two frames -- frameless and tech. frameless is used when there
is 0 or 1 blocks, otherwise tech is used.
2024-06-18 23:44:53 -07:00
Mike Sawka
4ded6d94b6
stickers and terminal serialization (#57) 2024-06-17 22:38:48 -07:00
Red J Adaya
b6c85e38f6
DnD tabs (#44) 2024-06-17 21:50:33 -07:00
Mike Sawka
e46906d423
wsh rpc working (#55)
lots of iterations on an RPC protocol. getting wsh working with a
getmeta/setmeta command in addition to html mode.
2024-06-17 09:58:28 -07:00
sawka
f0fb70ef9c get pdf preview working 2024-06-14 11:10:54 -07:00
Mike Sawka
8e3540f754
working on ijson and wsh magic (#53) 2024-06-13 23:54:04 -07:00
Evan Simkowitz
b2b1f9b9df
Switch to using electron-vite instead of WebPack (#45)
This sets us back up to use Vite via the electron-vite package. This
will let us continue to build our testing suite on Vitest and take
advantage of Vite features like Hot Module Reloading, etc.

---------

Co-authored-by: sawka <mike.sawka@gmail.com>
2024-06-13 16:49:25 -07:00
Mike Sawka
0f992c535d
working on wave OSC escapes, modes for the terminal (#46) 2024-06-13 14:41:28 -07:00
sawka
8a71180f20 implement wscommand using type union interface, send resize events there 2024-06-12 14:18:03 -07:00
sawka
083e00227e update BlockService to use the new type union feature of tsgen. strongly type the arguments to BlockService.SendCommand 2024-06-12 13:47:13 -07:00
sawka
605b9ea048 remove wails deps 2024-06-12 11:58:17 -07:00
Mike Sawka
1874d9a252
port to electron (#33) 2024-06-11 17:42:10 -07:00
Evan Simkowitz
92dc82967c
Replace lets with const where possible (#35) 2024-06-11 13:19:29 -07:00
Evan Simkowitz
0a45311f30
Implement outer drop direction, add rudimentary drag preview image rendering (#29)
This PR adds support for Outer variants of each DropDirection.

When calculating the drop direction, the cursor position is calculated
relevant to the box over which it is hovering. The following diagram
shows how drop directions are calculated. The colored in center is
currently not supported, it is assigned to the top, bottom, left, right
direction for now, though it will ultimately be its own distinct
direction.

![IMG_3505](https://github.com/wavetermdev/thenextwave/assets/16651283/a7ea7387-b95d-4831-9e29-d3225b824c97)

When an outer drop direction is provided for a move operation, if the
reference node flexes in the same axis as the drop direction, the new
node will be inserted at the same level as the parent of the reference
node. If the reference node flexes in a different direction or the
reference node does not have a grandparent, the operation will fall back
to its non-Outer variant.

This also removes some chatty debug statements, adds a blur to the
currently-dragging node to indicate that it cannot be dropped onto, and
simplifies the deriving of the layout state atom from the tab atom so
there's no longer another intermediate derived atom for the layout node.

This also adds rudimentary support for rendering custom preview images
for any tile being dragged. Right now, this is a simple block containing
the block ID, but this can be anything. This resolves an issue where
letting React-DnD generate its own previews could take up to a half
second, and would block dragging until complete. For Monaco, this was
outright failing.

It also fixes an issue where the tile layout could animate on first
paint. Now, I use React Suspense to prevent the layout from displaying
until all the children have loaded.
2024-06-11 13:03:41 -07:00
Evan Simkowitz
f12e246c15
Break layout node into its own Wave Object (#21)
I am updating the layout node setup to write to its own wave object. 

The existing setup requires me to plumb the layout updates through every
time the tab gets updated, which produces a lot of annoying and
unintuitive design patterns. With this new setup, the tab object doesn't
get written to when the layout changes, only the layout object will get
written to. This prevents collisions when both the tab object and the
layout node object are getting updated, such as when a new block is
added or deleted.
2024-06-05 17:21:40 -07:00
Evan Simkowitz
c3e71c5c7d
Integrate Faraday layout system (#16)
Co-authored-by: Mike Sawka <sawka@users.noreply.github.com>
Co-authored-by: sawka <mike.sawka@gmail.com>
2024-06-04 13:05:44 -07:00
sawka
7a54b79bda added getWaveObjectAtom 2024-05-28 17:17:52 -07:00
sawka
609f2ec85c the useWaveObject() setter now writes back to the DB. make metadata setting generic 2024-05-28 15:41:03 -07:00
sawka
f184723354 add useBlockCache() -- can migrate from useBlockAtom 2024-05-28 14:26:43 -07:00
sawka
5edb882955 add an updatemetadata call to objectservice 2024-05-28 12:18:26 -07:00
Evan Simkowitz
c49050f6ed
Fix prettier formatting 2024-05-28 12:12:28 -07:00
sawka
3f45945cb4 delete block and close tab working 2024-05-27 16:33:31 -07:00
sawka
e6d7a4e674 app is working again. new structure for blocks. new useWaveObjectValueWithSuspense hook 2024-05-27 15:44:57 -07:00
sawka
abedca2364 setactivetab working, removed tombstones, created updatetype 2024-05-27 14:31:12 -07:00
sawka
b87786febf checkpoint -- generic updates, wave object store, new setup for initialization, atoms, etc. lots of progress 2024-05-27 13:59:58 -07:00
sawka
6d3f76cb74 fe now rendering workspace/tab from db. got useWaveObject working. need to work on updates 2024-05-27 00:47:10 -07:00
sawka
95ce1cc86d checkpoint on new objectservice 2024-05-26 23:05:11 -07:00
sawka
134ba3c34c checkpoint on integratng wstore. moved to wails data structures, got immer working again, Window object, transitioned to generic DB ops, lots more 2024-05-24 15:08:24 -06:00
sawka
8173bc3c61 update blockservice to use wstore types 2024-05-22 09:23:16 -07:00
sawka
901334eb49 new wails bindings format working 2024-05-21 11:09:22 -07:00
sawka
b721f59166 hook up close block to backend to remove the running process 2024-05-16 13:40:23 -07:00
sawka
91d7392c34 add a 'close block' button 2024-05-16 13:22:46 -07:00
sawka
eab6afb91a create block using a blockdef. better controller control. preview that takes a file. atom caching per block. lots of updates 2024-05-16 00:29:58 -07:00
sawka
35c6b232fc round trip a message to the backend that updates the terminal fe component 2024-05-14 16:53:03 -07:00
sawka
91a3394602 load README.md into preview view 2024-05-14 12:29:41 -07:00
sawka
1db615bb3a markdown preview 2024-05-14 09:37:41 -07:00
sawka
540f2fe0c0 more structure, store, types, views, global store to track tabs/blocks. two views 2024-05-13 23:45:41 -07:00