Commit Graph

106 Commits

Author SHA1 Message Date
Mike Sawka
878a7285ab
implement tab:preset, and increase active tab opacity (#1439) 2024-12-09 14:48:16 -08:00
Evan Simkowitz
f858d3ba0f
Pass workspace id to contextmenu-show (#1429)
Sometimes, the context menu click handlers don't seem to get passed any
window object. Here, I'm sending over the workspace id with the
`contextmenu-show` event so that we can resolve our cached copy of the
object in case the value from the click handler is empty.
2024-12-06 19:10:34 -08:00
Evan Simkowitz
72ea58267d
Workspace app menu (#1423)
Adds a new app menu for creating a new workspace or switching to an
existing one. This required adding a new WPS event any time a workspace
gets updated, since the Electron app menus are static.

This also fixes a bug where closing a workspace could delete it if it
didn't have both a pinned and an unpinned tab.
2024-12-06 15:33:00 -08:00
Mike Sawka
5744f4b06f
closeTab fix (#1403)
fixes bug with closeTab when the tab didn't exist in the waveWindow cache.  also adds Cmd-Shift-W to close a tab (doesn't work for pinned tabs).  and restores Cmd-W for killing blocks on pinned tabs
2024-12-05 18:26:20 -08:00
Evan Simkowitz
7a61f25331
Auditing async usage in frontend code (#1402)
I found a lot of places where asyncs weren't being properly wrapped or
awaited
2024-12-05 18:09:54 -08:00
Evan Simkowitz
5fbd72b590
Fix edge case when dragging pinnned tabs (#1399) 2024-12-05 14:58:04 -08:00
Mike Sawka
7386fc19f7
activity update + dont allow empty workspace names (#1393) 2024-12-05 10:35:54 -08:00
Evan Simkowitz
df2889f280
Fix zombie tab context menus (#1390)
The memoizing of the tabs was causing the callbacks for
handleContextMenu to become dead ends. This makes more of the callbacks
into memoized callbacks and makes the handleContextMenu function itself
a memoized callback to ensure it's properly updated when its upstream
callbacks change.
2024-12-04 17:30:28 -08:00
Evan Simkowitz
87aea21184
Better flicker prevention when switching tabs (#1389)
There was still some flicker when nohover took effect before the tab
view actually switched. Now, we override the active tab in the tabbar
when the app is switching tabs. We also override active tab behavior so
that the close button is always visible while nohover is in effect. This
effectively removes the flickering
2024-12-04 17:20:06 -08:00
Mike Sawka
72f36a9639
wsh run (#1376)
implements `wsh run` command.  lots of fixes (and new options) for command blocks.  cleans up the UX/UI for command blocks.  lots of bug fixes for blockcontrollers.  other minor bug fixes.

also makes editor:* vars into settings override atoms.
2024-12-04 14:16:50 -08:00
Evan Simkowitz
d8edea9fbc
Oops i actually made the tabs wrong (#1384)
forgot to update .editorconfig to include scss...
2024-12-04 13:49:14 -08:00
Evan Simkowitz
aa77b2c259
Pinned tabs (#1375)
![image](https://github.com/user-attachments/assets/a4072368-b204-4eed-bb65-8e3884687f9a)

This functions very similarly to VSCode's pinned tab feature. To pin a
tab, you can right-click on it and select "Pin tab" from the context
menu. Once pinned, a tab will be fixed to the left-most edge of the tab
bar, in order of pinning. Pinned tabs can be dragged around like any
others. If you drag an unpinned tab into the pinned tabs section (any
index less than the highest-index pinned tab), it will be pinned. If you
drag a pinned tab out of the pinned tab section, it will be unpinned.
Pinned tabs' close button is replaced with a persistent pin button,
which can be clicked to unpin them. This adds an extra barrier to
accidentally closing a pinned tab. They can still be closed from the
context menu.
2024-12-04 13:34:22 -08:00
Evan Simkowitz
0145e8fe99
Fix SCSS formatting after migration (#1382)
The migration tool we used didn't take into account our formatting
standards so I'm bulk-formatting the SCSS files to bring them back up to
our standards. Basically this just changes the tab size for all the
files.
2024-12-04 12:49:44 -08:00
Evan Simkowitz
29e8929f91
Hack to prevent tabbar flicker when switching tabs (#1379) 2024-12-03 20:08:06 -08:00
Red J Adaya
42cbbcdc2a
tabs new design (#1352)
Co-authored-by: sawka <mike@commandline.dev>
Co-authored-by: Evan Simkowitz <esimkowitz@users.noreply.github.com>
2024-12-03 13:53:27 -08:00
Evan Simkowitz
04c4f0a203
Create and rename files and dirs in dirpreview (#1156)
New context menu options are available in the directory preview to
create and rename files and directories

It's missing three pieces of functionality, none of which are a
regression:
- Editing or creating an entry does not update the focused index. Focus
index right now is pretty dumb, it doesn't factor in the column sorting
so if you change that, the selected item will change to whatever is now
at that index. We should update this so we use the actual file name to
determine which element to focus and let the table determine which index
to then highlight given the current sorting algo
- Open in native preview should not be an option on remote connections
with the exception of WSL, where it should resolve the file in the
Windows filesystem, rather than the WSL one
- We should catch CRUD errors in the dir preview and display a popup
2024-12-02 22:23:44 -08:00
Evan Simkowitz
82f53dc1fb
Workspaces are back! (#1282) 2024-12-02 10:56:56 -08:00
Evan Simkowitz
2e91ee843c
Switch from Less to Scss (#1335)
Less hasn't received an update in over a year and the parser is missing
some modern syntax like relative colors so this switches us to scss
2024-11-21 16:05:04 -08:00
Mike Sawka
1210313d2b
activity updates (#1302) 2024-11-15 16:09:26 -08:00
Mike Sawka
b746a0bfb6
fix long tab names and syncing tab renaming (#1160) 2024-10-27 23:01:47 -07:00
Mike Sawka
d0d9095c92
call isDev() function to properly hide workspace switcher in prod (#1154) 2024-10-27 14:23:52 -07:00
Red J Adaya
55c8e5a213
workspace switcher + new elements (in storybook) (#1148) 2024-10-27 13:22:06 -07:00
Mike Sawka
369fababa6
tab updates (#1134) 2024-10-24 23:16:44 -07:00
Mike Sawka
c1c90bb4f8
browser view (#1005) 2024-10-17 14:34:02 -07:00
Mike Sawka
a629b28194
implement a config error button + message modal that shows the errors (#1030) 2024-10-14 14:57:12 -07:00
Evan Simkowitz
64084d3e27
Remove global.ts dependency from emain (#1003)
Removes global atoms dependency from emain by moving WOS to grab the
globalAtoms from window, if present. Also removes interdependency
between wshrpcutil and wps

Also adds showmenubar setting for Windows and Linux
2024-10-10 10:12:42 -07:00
Evan Simkowitz
af38ebab54
typo in last pr 2024-09-20 13:31:12 -07:00
Evan Simkowitz
38f07ae3f9
Dismiss update banner after 10s on error (#800) 2024-09-20 13:29:37 -07:00
Evan Simkowitz
231c960ca8
missed a change 2024-09-18 14:30:45 -07:00
Evan Simkowitz
e5e6259dec
Show updater status banner for all statuses (#396)
Also adds updater channel to about modal
2024-09-18 14:25:52 -07:00
Red J Adaya
dae72e7009
more on button refactor (#388)
- Removed opacity for hover effect. Now uses a brighter variant of color
- Updated other Button usages
2024-09-17 22:38:17 -07:00
Red J Adaya
09f4616ae0
button refactor (#383)
Refactored to be more flexible. Now, it has three types

- solid
- outline
- ghost

and subtypes

- green
- grey
- red
- yellow

It defaults to solid and green when no className is provided. It
concatenates defaults if custom classNames are provided.
2024-09-16 22:23:05 -07:00
Red J Adaya
c3a02d7e33
revert tabs scroll timing (#363) 2024-09-10 23:22:32 -07:00
Red J Adaya
f6fc0125fd
fix issue where tabs are immediately visible while they're still stacked on load (#362)
This fixes the visual bug where the active tab seems to be the first tab
and then switches to the actual active tab after the tabs are
positioned.
2024-09-10 23:06:27 -07:00
Red J Adaya
b278d11aca
do no animate tabs on load (#351) 2024-09-06 17:41:00 -07:00
Evan Simkowitz
74c8044c73
Add gap size setting (#325)
Adds a new setting for the gap size between tiles in a layout. Also
updates the resize handle calculations so they are dynamically generated
based on the gap size. Also updates the styling for the resize handles
to be more robust.

This also updates the default gap size to 3px.

This also slims out the Block Frame padding so it is just enough that
the blocks don't overlap when there's no gap.
2024-09-04 22:07:47 -07:00
Mike Sawka
53d3ad04b7
focus/key handling for directory preview (#291) 2024-08-29 17:00:24 -07:00
Mike Sawka
8630e23239
new config system (#283) 2024-08-27 18:49:49 -07:00
Evan Simkowitz
755f8f2385
add back top padding for tabcontent 2024-08-27 13:46:13 -07:00
Evan Simkowitz
c892c39a73
Fix block content sizing (#280)
Make the block content sizing update once when its node moves or becomes
magnified. By manually updating this inner sizing rather than letting
the block flow in the DOM, the animations of the block frames are much
smoother.

This also fixes an issue where two scrollbars were being rendered for
the Directory Preview widget.

This also sets zero padding on nodes when there's only a single node
being rendered.
2024-08-27 13:41:36 -07:00
Evan Simkowitz
164afeeb66
Unified node model to pass data from layout to blocks (#259)
This adds a new NodeModel, which can be passed from the TileLayout to
contained blocks. It contains all the layout data that the block should
care about, including focus status, whether a drag operation is
underway, whether the node is magnified, etc.

This also adds a focus stack for the layout, which will let the focus
switch to the last-focused node when the currently-focused one is
closed.

This also addresses a regression in the resize handles that caused them
to be offset from the cursor when dragged.

---------

Co-authored-by: sawka <mike.sawka@gmail.com>
2024-08-26 11:56:00 -07:00
Red J Adaya
af3bc7d249
reduce target area for tab close btn (#261) 2024-08-23 00:15:54 -07:00
Evan Simkowitz
bd4bf93d4a
Update copyright indicators on a bunch of files (#255) 2024-08-20 17:01:29 -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
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
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
sawka
5e1da4805f move widgets to left, fix some paddings 2024-08-09 11:49:19 -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