Compare commits

..
Author SHA1 Message Date
Gregory Schier 23c4971127 Fix URL bar buttons in expanded state 2024-03-20 16:17:05 -07:00
Gregory Schier 40669217fb Bump version 2024-03-20 16:05:14 -07:00
Gregory Schier 8089ea87e8 Fix dialog height 2024-03-20 16:05:01 -07:00
Gregory Schier 9de24e3a40 Remove openOnHotKeyAction in favor of putting hotkey on the trigger button= 2024-03-20 15:56:39 -07:00
Gregory Schier 5afb8e7383 Use SQLite connect options 2024-03-20 13:33:11 -07:00
Gregory Schier b3e3f22211 Pass workspace id to import 2024-03-20 07:30:59 -07:00
Gregory Schier 1ff6ff16b3 Handle import errors 2024-03-20 07:27:12 -07:00
Gregory Schier b8a692f1a5 Postman bearer, global auth, global vars 2024-03-20 07:26:46 -07:00
Gregory Schier 5506cdd05f Implement select for command palette 2024-03-19 17:24:57 -07:00
Gregory Schier 4180fecb4b Tweak checkbox and autocomplete styles 2024-03-19 17:08:06 -07:00
Gregory Schier fa257fdb18 Fix sidebar border 2024-03-19 16:44:37 -07:00
Gregory Schier 2da141ea16 Export multiple workspaces 2024-03-19 13:43:33 -07:00
Gregory Schier 1993361f87 Fix settings query store and analytics 2024-03-19 10:23:21 -07:00
Gregory Schier a5dd3beb73 Start of command palette 2024-03-18 17:09:01 -07:00
Gregory Schier 17423f8c54 useRequests hook 2024-03-18 13:49:36 -07:00
Gregory Schier 8f495b9ade Fix editor key events 2024-03-18 13:40:15 -07:00
Gregory Schier 46b9b758fe Simple tests for Postman and Yaak importers 2024-03-18 13:40:00 -07:00
Gregory Schier b0e84aac0c Set filename on Multipart part 2024-03-18 13:24:27 -07:00
Gregory Schier 20de2aeacc Fix GraphQL editor large variables quirk 2024-03-18 13:10:55 -07:00
Gregory Schier 7198534640 Fix postman import and import Insomnia gRPC 2024-03-18 08:18:04 -07:00
Gregory Schier 7e8ec36474 Better padding 2024-03-16 13:59:06 -07:00
Gregory Schier 52d1602d35 Remove debug log 2024-03-16 12:50:27 -07:00
Gregory Schier e5731ceb1f Custom content-type for multipart items 2024-03-16 12:49:17 -07:00
Gregory Schier 3ed5a47a83 Content menu on entire sidebar 2024-03-16 10:47:10 -07:00
Gregory Schier 262a29ca5d Obfuscate environment variables 2024-03-16 10:42:46 -07:00
Gregory Schier 4a3e599128 Fix light mode text selection 2024-03-16 09:48:55 -07:00
Gregory Schier 7ebe844643 Stubbed out global commands helper 2024-03-16 09:46:11 -07:00
Gregory Schier a49b72eebc Fix deleting workspace staying on deleted workspace path 2024-03-15 13:07:02 -07:00
Gregory Schier bba3afa0b7 Bump version 2024-03-10 18:15:00 -07:00
Gregory Schier 221e768b33 Fix recent workspaces 2024-03-10 17:42:25 -07:00
Gregory Schier c2dc7e0f4a Fix adding header if not exist 2024-03-10 17:10:16 -07:00
Gregory Schier 9e065c34ee Remove completion debug blur thing 2024-03-10 16:46:18 -07:00
Gregory Schier 2f91d541c5 Adjust detected content-type header 2024-03-10 16:26:06 -07:00
Gregory Schier 948fd487ab Clickable links in response viewer 2024-03-10 13:41:44 -07:00
Gregory Schier ed6a5386a2 Better error handling for file not found 2024-03-10 11:02:32 -07:00
Gregory Schier 8a24c48fd3 Cancel file selection sets to undefined 2024-03-10 10:57:49 -07:00
Gregory Schier d726a6f5bf Binary file uploads and missing workspace empty state 2024-03-10 10:56:38 -07:00
Gregory Schier 8d2a2a8532 Fix GraphQL Header backend 2024-02-28 13:38:22 -08:00
Gregory Schier b838a6ffc1 Fix GraphQL content type on creation, and placeholder 2024-02-28 13:04:17 -08:00
Gregory Schier 2174a91b64 Include default protoc includes 2024-02-28 09:45:11 -08:00
Gregory Schier 083f83ccab Bump version 2024-02-28 08:51:34 -08:00
Gregory Schier 4f749be2e2 Fix dropdown arrow keys 2024-02-28 08:51:08 -08:00
Gregory Schier cefdc3ecf3 Track GRPC 2024-02-28 07:32:05 -08:00
Gregory Schier 02960d2d64 Analytics ID 2024-02-28 07:27:19 -08:00
Gregory Schier 9e5226aa83 Analytics ID 2024-02-28 07:26:02 -08:00
Gregory Schier 63d7a44586 Remove Escape from hotkeys 2024-02-27 18:58:41 -08:00
Gregory Schier c851dfe206 Fix sidebar focus 2024-02-27 10:33:20 -08:00
Gregory Schier 6adc15a249 Fix gap in dropdown menu items 2024-02-27 10:27:04 -08:00
Gregory Schier 9ac7aac296 Methods in recent dropdown 2024-02-27 10:20:35 -08:00
Gregory Schier 325d63e1b7 Many hotkey improvements 2024-02-27 10:10:38 -08:00
Gregory Schier e639a77165 Info logs in build 2024-02-26 17:27:08 -08:00
Gregory Schier c075efc752 Introspection tweak 2024-02-26 17:24:44 -08:00
Gregory Schier c4f42f71c3 Tweak editor find/replace 2024-02-26 17:17:37 -08:00
Gregory Schier 535adfe200 Fix find/replace CM styling 2024-02-26 17:07:09 -08:00
Gregory Schier 85fa159f0d Fix lint errors 2024-02-26 07:43:08 -08:00
Gregory Schier fd2fe46c95 Autocomplete icons and transfer proto files on duplicate 2024-02-26 07:39:53 -08:00
Gregory Schier 6e52f35626 Prompt folder name on create 2024-02-26 07:14:27 -08:00
Gregory Schier a0d1e7023d Better creation from folder menu 2024-02-26 07:09:59 -08:00
Gregory Schier 97a2f00d59 Auto-fill link to changelog in release script 2024-02-25 18:42:04 -08:00
Gregory Schier 50ad4efad7 Protoc sidecar 2024-02-25 17:43:29 -08:00
Gregory Schier 79a3d9c8df Fix deletion in sidebar 2024-02-25 12:56:57 -08:00
Gregory Schier b8e20d885f Fix create dropdown hotkey 2024-02-24 22:02:04 -08:00
Gregory Schier 752eb3dbd5 Try changing macOS version 2024-02-24 21:25:58 -08:00
Gregory Schier 616acdfb56 Bump some things 2024-02-24 21:23:02 -08:00
Gregory Schier b2bcbababe Fix response pane height 2024-02-24 19:31:59 -08:00
Gregory Schier 9f5a3ef96a Don't build plugins 2024-02-24 18:58:51 -08:00
Gregory Schier d2c5bdc3c8 Remove npm ci plugins 2024-02-24 18:28:07 -08:00
Gregory Schier 0d6899a12c Check in built plugins again 2024-02-24 18:27:36 -08:00
Gregory Schier 1b25cb0c4c Add pkg locks 2024-02-24 18:19:16 -08:00
Gregory Schier 783b7222df Install plugins in CI 2024-02-24 16:29:22 -08:00
Gregory Schier ff3165ab30 Bump version 2024-02-24 16:22:55 -08:00
Gregory Schier 9780dc88a1 Got json-schema autocomplete working again 2024-02-24 16:22:22 -08:00
Gregory Schier e4f0d2a341 Proto files off model 2024-02-24 14:16:58 -08:00
Gregory Schier bcf0ae159d Better gRPC status on error 2024-02-24 12:41:43 -08:00
Gregory Schier 5664d41073 More analytics, and cancel requests 2024-02-24 11:30:07 -08:00
Gregory Schier e75e6865ea Hook up empty state buttons for first-launch experience 2024-02-23 16:34:19 -08:00
Gregory Schier fd5b495b70 gRPC in import/export 2024-02-23 16:16:13 -08:00
Gregory Schier 16506d1ddd Everything in messages now 2024-02-22 19:51:30 -08:00
Gregory Schier e3016f7100 Format XML responses 2024-02-22 01:00:02 -08:00
Gregory Schier 766da4327c Refactor into grpc events 2024-02-22 00:49:22 -08:00
Gregory Schier 6f389b0010 Fix split layout placeholder 2024-02-18 09:12:44 -08:00
Gregory Schier 007ea88edd Add other body type 2024-02-18 08:59:14 -08:00
Gregory Schier 5409678855 Add metadata and squash migrations 2024-02-18 08:35:31 -08:00
Gregory Schier 4c6bd63b8b Better environment edit dialog 2024-02-18 07:44:53 -08:00
Gregory Schier 8db80d2e97 Allow editing base environment 2024-02-18 00:14:47 -08:00
Gregory Schier c80fca8063 Render gRPC message body 2024-02-18 00:14:26 -08:00
Gregory Schier 7384398813 gRPC authentication 2024-02-17 23:47:28 -08:00
Gregory Schier b57ea8adeb Even better dropdown filtering 2024-02-17 22:27:01 -08:00
Gregory Schier 8ff2caf3c3 Started gRPC tabs 2024-02-17 22:15:44 -08:00
Gregory Schier a521b8f308 Better dropdown filtering 2024-02-17 22:03:42 -08:00
Gregory Schier 50ba167516 Prevent dragging folders into itself 2024-02-17 15:32:15 -08:00
Gregory Schier cb102657ea Fix deps 2024-02-17 15:20:13 -08:00
Gregory Schier a7d9e2432b Upgrade Vite deps and fix windows DnD 2024-02-17 14:57:12 -08:00
Gregory Schier d842b168e6 Fix postman importer TS ref 2024-02-17 11:05:57 -08:00
Gregory Schier 870cb25980 Add more info to settings 2024-02-17 11:04:19 -08:00
Gregory Schier fde0c5540b Adjust placeholder error colors 2024-02-15 21:15:18 -08:00
Gregory Schier 2ec9a1c19d Tweak tab padding 2024-02-15 16:38:14 -08:00
Gregory Schier c2f5a3bf45 Responsive (scroll) workspace header 2024-02-15 16:30:08 -08:00
Gregory Schier 7c18eeae8c Better button highlight border 2024-02-15 15:55:32 -08:00
Gregory Schier d7a1b4b7bc Refactor recentRequest/Env/Workspace 2024-02-15 15:14:18 -08:00
Gregory Schier 4566ede184 Better sidebar collapse, debuonce container uqeries, fix recent requests 2024-02-15 15:07:15 -08:00
Gregory Schier f45c898be0 Better recent work/env/req logic 2024-02-13 17:21:54 -08:00
Gregory Schier 4e1700f8a4 Fix active environment on workspace change 2024-02-13 16:42:07 -08:00
Gregory Schier f14311d14a Active environment in query param 2024-02-13 16:32:31 -08:00
Gregory Schier 470a7e2278 Better variable placeholder styles 2024-02-13 16:32:17 -08:00
Gregory Schier 2d67be481d Show GQL for graphql requests in sidebar 2024-02-13 16:32:00 -08:00
Gregory Schier 9f6ddb1558 Better highlight on JSON tree 2024-02-13 16:31:38 -08:00
Gregory Schier 853f07b9af Cmd+n to open dropdown 2024-02-11 14:17:09 -08:00
Gregory Schier 0eb6358387 Tab-to-indent in editor 2024-02-11 14:16:36 -08:00
Gregory Schier d43e045f25 Make editor variables more prominent 2024-02-11 14:16:25 -08:00
Gregory Schier 17432fca29 Fix dropdown open index 2024-02-11 14:16:11 -08:00
Gregory Schier d5931660c2 Catch URL error when URL = "{{HOST}}" 2024-02-11 09:04:27 -08:00
Gregory Schier cd7678b7a1 Grap gRPC status codes 2024-02-11 08:52:12 -08:00
Gregory Schier 706be1188b Use basemsg 2024-02-11 08:29:57 -08:00
Gregory Schier 8989b61a13 Combine grpc handlers, fix duplicate 2024-02-10 10:41:45 -08:00
Gregory Schier a997944f16 Fix response emit and sidebar flex 2024-02-09 16:16:02 -08:00
Gregory Schier f8e8f5d3f2 Sidebar methods and fix model hooks 2024-02-09 16:09:24 -08:00
Gregory Schier 812e5238ac Fix editor selection/cursor and lint errors 2024-02-09 14:32:58 -08:00
Gregory Schier 16d4f2952d Remove built plugins from source control 2024-02-09 05:09:37 -08:00
Gregory Schier ac9a6d5871 Merge branch 'grpc' 2024-02-09 05:07:45 -08:00
Gregory Schier 4fcf1df61f Move plugins to build folder 2024-02-09 05:07:34 -08:00
Gregory SchierandGitHub 394beb374e gRPC Support (#20) 2024-02-09 05:01:00 -08:00
Gregory Schier ba4d1063e3 Better message serialization 2024-02-09 05:00:48 -08:00
Gregory Schier 2bd9b436e6 Working sidebar actions for grpc 2024-02-07 00:02:02 -08:00
Gregory Schier 915a59dec4 Change hotkey handling to capture phase 2024-02-06 23:44:10 -08:00
Gregory Schier ae2b746cb2 Fix pool management 2024-02-06 23:26:24 -08:00
Gregory Schier b04cff153b Minor tweaks 2024-02-06 19:32:03 -08:00
Gregory Schier bd8e71e567 gRPC schema from files! 2024-02-06 19:20:32 -08:00
Gregory Schier 562a36d616 Proto selection UI/models 2024-02-06 12:29:23 -08:00
Gregory Schier c85a11edf1 Better reflect failure UI 2024-02-05 14:50:47 -08:00
Gregory Schier ef7f942a8f Async connection management 2024-02-05 11:29:27 -08:00
Gregory Schier a7f2a86d71 Refactor model emit, and recent conn dropdown 2024-02-05 10:39:47 -08:00
Gregory Schier bf90f84d16 db to app_handle! 2024-02-04 22:52:04 -08:00
Gregory Schier 4284aa2549 Single upserted_model event 2024-02-04 21:19:15 -08:00
Gregory Schier 60773cab53 Fix DB mutex deadlock 2024-02-04 21:17:05 -08:00
Gregory Schier e2c17873ae More messages 2024-02-04 19:08:31 -08:00
Gregory Schier 88982156ee Client streaming working 2024-02-04 17:53:15 -08:00
Gregory Schier 722c8a1c6b Bidirectional working 2024-02-04 14:10:38 -08:00
Gregory Schier 8c15274786 Messages are flowing! 2024-02-04 12:09:10 -08:00
Gregory Schier 1abba4980a Use req/conn/msg models in unary/server 2024-02-04 11:57:12 -08:00
Gregory Schier 3a340999ec Remove console log 2024-02-03 13:39:45 -08:00
Gregory Schier b7261e77aa Grpc layout use new models 2024-02-03 13:28:31 -08:00
Gregory Schier 23431b40e9 Show gRPC requests in sidebar 2024-02-03 13:08:24 -08:00
Gregory Schier 04f31cd4a7 gRPC models and tables 2024-02-03 11:14:42 -08:00
Gregory Schier 7d82a7e74a Tiny fixes 2024-02-02 18:41:00 -08:00
Gregory Schier d31255d987 Better formatting 2024-02-02 13:37:44 -08:00
Gregory Schier e53693f605 A bit better handling of responses 2024-02-02 13:32:06 -08:00
Gregory Schier 67aa7b7268 Split layouts and things 2024-02-02 12:41:37 -08:00
Gregory Schier e27ed9becc bidi hacked! 2024-02-02 01:10:54 -08:00
Gregory Schier 22d21af3c2 Implement cancel 2024-02-02 00:18:37 -08:00
Gregory Schier 67000af7f9 Better connection management 2024-02-01 20:29:32 -08:00
Gregory Schier b84c7ba50c gRPC manager mostly working 2024-02-01 15:36:50 -08:00
Gregory Schier a0b3f86462 Small refactor 2024-02-01 02:42:59 -08:00
Gregory Schier 6a8395660d Refactor commands and DB 2024-02-01 02:29:24 -08:00
Gregory Schier 2c041fbac6 Some minor tweaks 2024-02-01 00:48:03 -08:00
Gregory Schier 1eed0e8f22 Revert response JSON tree 2024-02-01 00:38:57 -08:00
Gregory Schier 63a0ed273d Even better styles 2024-02-01 00:36:49 -08:00
Gregory Schier d0be5ca515 Styled it up a bit 2024-02-01 00:16:09 -08:00
Gregory Schier b964c942d6 Merge remote-tracking branch 'origin/grpc' into grpc 2024-01-31 22:14:15 -08:00
Gregory Schier a05fc5fd20 Hacky server streaming done 2024-01-31 22:14:08 -08:00
Gregory Schier de183abd24 Hacky client streaming done 2024-01-31 22:13:46 -08:00
Gregory Schier 5c44df7b00 Initial frontend for gRPC UI 2024-01-30 16:43:54 -08:00
Gregory Schier dbdce4cf9a Hooked up test call from frontend! 2024-01-29 20:50:43 -08:00
Gregory Schier 219a6b78da Fix cookie jar 2024-01-28 17:49:04 -08:00
Gregory Schier fb11aff03f Track dialogs 2024-01-28 16:33:36 -08:00
Gregory Schier 15714ae188 Fix dropdown separator 2024-01-28 16:21:41 -08:00
Gregory Schier ce116d032d Better format 2024-01-28 16:19:46 -08:00
Gregory Schier 6f41df6e52 More response info 2024-01-28 16:02:49 -08:00
Gregory Schier 0853d2ca95 Better BG color 2024-01-28 14:43:04 -08:00
Gregory SchierandGitHub 6798331ce5 Cookie Support (#19) 2024-01-28 14:39:51 -08:00
Gregory Schier 5ffc75e0ad Add shift to hotkey dialog hotkey 2024-01-19 22:11:20 -08:00
Gregory Schier bf92371a49 Show alert after force checking updates 2024-01-19 22:11:02 -08:00
Gregory Schier bd3da86317 Better dialog padding 2024-01-19 22:08:32 -08:00
Gregory Schier 3db3d42246 Change env hotkey to use shift 2024-01-19 21:53:48 -08:00
Gregory Schier de8bf3ca70 Fix URL 2px grow on focus 2024-01-19 21:49:51 -08:00
Gregory Schier 8bc131de6c Bump version 2024-01-19 13:42:02 -08:00
Gregory Schier efce69292d Fix analytics again 2024-01-18 22:28:25 -08:00
Gregory Schier 0ccc893440 Fix dialog close button 2024-01-18 20:57:42 -08:00
Gregory Schier 1f9756c917 Fix URLBar expanded state inner buttons 2024-01-18 20:40:56 -08:00
Gregory Schier be8f0e4521 Some analytics fixes 2024-01-18 20:23:02 -08:00
Gregory Schier bcdf51d231 Launch analytics events, changelog, better filter styles 2024-01-18 14:42:02 -08:00
Gregory Schier 1a1553eebd Bump version 2024-01-17 14:56:47 -08:00
Gregory Schier 321c3862fe Custom HTTP method names 2024-01-17 14:52:19 -08:00
Gregory Schier 466d412e65 Workspace header tweak Windows 2024-01-17 18:48:43 -08:00
Gregory Schier 86f50b826f Fix header in fullscreen mode on Mac 2024-01-17 09:34:47 -08:00
Gregory Schier ac1e646e68 Download response, and some fixes 2024-01-16 17:02:55 -08:00
Gregory Schier 33374eefc7 Fix editor toolbar blocking things 2024-01-15 21:44:53 -08:00
Gregory Schier 7047df4f7e Better request creation (Closes #14) 2024-01-15 21:39:27 -08:00
Gregory Schier c8bd4d0ae0 XPath plugin 2024-01-15 21:27:47 -08:00
Gregory Schier 1e79f76701 Fix send icon 2024-01-15 15:43:55 -08:00
Gregory Schier 18852dca06 Switch to Lucide icons 2024-01-15 15:42:28 -08:00
Gregory Schier 408e7e80b7 Improve response filter UX 2024-01-15 15:19:29 -08:00
Gregory Schier fc185de023 JSONPath filter plugins working 2024-01-15 15:06:49 -08:00
Gregory Schier bb9d3a42f3 Move plugin stuff around 2024-01-15 14:33:51 -08:00
Gregory Schier baf0f4291d Fix request duplication 2024-01-15 13:47:44 -08:00
Gregory Schier 536066142c Fix workspace defaults 2024-01-15 12:25:13 -08:00
Gregory Schier 04cf16497d Better settings dialog 2024-01-15 12:16:44 -08:00
Gregory Schier feb5972090 Fix resize observer 2024-01-15 12:02:08 -08:00
Gregory Schier 77bf5a58d8 Move request-related settings to workspace 2024-01-15 11:52:36 -08:00
Gregory Schier 3539642491 Bump beta version 2024-01-14 20:30:25 -08:00
Gregory Schier 08abea6a6f fix mac decorations 2024-01-14 17:22:31 -08:00
Gregory Schier 0045b85f00 Integrated titlebar windows 2024-01-14 16:44:04 -08:00
Gregory Schier 4b34c3d101 Further titlebar tweaks 2024-01-14 12:02:44 -08:00
Gregory Schier 4af0a15d9f Better titlebar control icons 2024-01-14 11:56:21 -08:00
Gregory Schier 3a4a76c58d Basic Linux/Windows integrated titlebar 2024-01-13 23:40:32 -08:00
Gregory Schier 3086d815c1 Fix hotkey formatting 2024-01-12 22:12:01 -08:00
Gregory Schier a48a9eab4a beta tag 2024-01-12 22:00:55 -08:00
Gregory Schier 48664c66e5 fix appearance init 2024-01-12 21:59:46 -08:00
Gregory Schier 7aee5176a9 Vendor Openssl 2024-01-12 21:03:28 -08:00
Gregory Schier 0da68ced18 Hotkeys for request switcher 2024-01-12 21:03:20 -08:00
Gregory Schier 39f7d9c113 Appearance setting and gzip/etc support 2024-01-12 13:39:08 -08:00
Gregory Schier 138943bfb6 Initial settings implementation 2024-01-11 21:13:17 -08:00
Gregory Schier c1c9f882a6 Dropdown manages hotkeys now 2024-01-11 10:18:05 -08:00
Gregory Schier 1bcf26f656 Hotkey for keyboard shortcut help 2024-01-10 22:05:16 -08:00
Gregory Schier 7c2466da5e Bump version number 2024-01-10 16:25:55 -08:00
Gregory Schier 7dc78a1f6f Add hotkey dialog and rust-only analytics 2024-01-10 16:18:08 -08:00
Gregory Schier 88d024023b Fix beta icon 2024-01-08 17:07:42 -08:00
Gregory Schier 626aacf982 Bump version to 2024.0.0 2024-01-08 15:57:59 -08:00
Gregory Schier d5855c45a6 Hotkey labels 2024-01-08 15:57:21 -08:00
Gregory Schier 793bff9f27 Show hotkeys on empty views 2024-01-08 15:13:44 -08:00
Gregory Schier 88ea68e72f Remove base env, fix hotkeys, and QoL improvements 2024-01-07 22:24:19 -08:00
Gregory Schier 35e40d2c55 Fix hotkeys getting stuck on cmd+tab 2024-01-07 21:32:25 -08:00
Gregory Schier c472b83409 Always show settings dropdown 2023-11-22 09:39:30 -08:00
Gregory Schier 52c26d235c Tweak margin 2023-11-22 09:37:50 -08:00
Gregory Schier ac54729012 Fix bottom-up dropdown positioning 2023-11-22 09:35:56 -08:00
Gregory Schier 0586034ef4 Bump version 2023-11-22 09:06:47 -08:00
Gregory Schier 91790ba708 Better linux/Windows support for hotkeys 2023-11-22 09:06:22 -08:00
Gregory Schier d8ab6c0b50 Good hotkey support 2023-11-22 09:01:48 -08:00
Gregory Schier b600a21a2b Reset URL bar when request changes 2023-11-21 23:26:29 -08:00
Gregory Schier 4f9d1278f7 Env dialog hotkey 2023-11-21 22:35:28 -08:00
Gregory Schier 15aa93f5f9 Remove response body and basic hotkeys 2023-11-21 22:15:01 -08:00
Gregory Schier c7798092d8 Remove app-specific menu items 2023-11-21 19:18:40 -08:00
Gregory Schier 5560593aaa Fix macOS menu and fallback URL 2023-11-21 09:24:13 -08:00
Gregory Schier 66639e651d Hide menu on windows/linux 2023-11-21 08:17:37 -08:00
Gregory Schier 8e42d5ccdb Disable sandboxing (again) 2023-11-19 21:59:55 -08:00
Gregory Schier 5c62594087 Fix drag-drop reorder 2023-11-19 21:43:01 -08:00
Gregory Schier 26b6c48657 Postman ID generation 2023-11-19 20:54:02 -08:00
Gregory Schier 0290aba982 Bump beta.3 2023-11-19 20:46:55 -08:00
Gregory Schier 0bafc4e4f5 Postman variables + urlencoded forms 2023-11-19 20:29:24 -08:00
Gregory Schier 9a36f94279 Add back Windows/Linux builds 2023-11-19 18:22:13 -08:00
Gregory Schier 1d8e66179e Remove Tauri context menu plugin 2023-11-19 18:21:10 -08:00
Gregory Schier fda6d16d8e Fix header padding windows/linux 2023-11-19 18:14:49 -08:00
Gregory Schier c4737916df Some tweaks 2023-11-19 18:13:32 -08:00
Gregory Schier 919465cdbb Beta 2 2023-11-19 17:41:58 -08:00
Gregory Schier de3730fa4f Network entitlement 2023-11-19 17:41:46 -08:00
Gregory Schier aff26fdd46 Try sandboxing again 2023-11-19 17:06:31 -08:00
Gregory Schier 3c0edf06af Remove sandboxing 2023-11-17 09:33:16 -08:00
Gregory Schier cb8939db88 touch 2023-11-17 08:00:04 -08:00
Gregory Schier bf4b3213c4 Out of beta 2023-11-17 07:53:26 -08:00
Gregory Schier 633d7c52c4 Tweak 2023-11-17 07:52:03 -08:00
Gregory Schier 0401cb92aa Format GraphQL variables 2023-11-17 07:51:03 -08:00
Gregory Schier bff6c668a0 Drag into folder (Closes #8) 2023-11-17 07:36:01 -08:00
Gregory Schier ee87e65763 Mostly move some stuff around 2023-11-16 18:53:34 -08:00
Gregory Schier f165a0b827 Better update logic 2023-11-14 14:28:06 -08:00
Gregory Schier f7426dc8ce Better dropdown menu 2023-11-14 10:56:56 -08:00
Gregory Schier 6114039f7e Version to beta 2023-11-14 10:07:39 -08:00
Gregory Schier da414debe1 Beta channel updates 2023-11-14 08:57:46 -08:00
Gregory Schier 11f5541558 Multipart form UI and fixes 2023-11-14 00:32:02 -08:00
Gregory Schier 1bc155d684 Got multipart working (text-only) 2023-11-13 23:26:11 -08:00
Gregory Schier 335231060e Fix window title moving stoplights (for now) 2023-11-13 23:25:47 -08:00
Gregory Schier 0fdf64440f Postman import form data 2023-11-13 11:48:28 -08:00
Gregory Schier a984fb33dc Some small improvements 2023-11-13 11:44:29 -08:00
Gregory Schier 41b1ec96c9 Form urlencoded bodies! 2023-11-13 11:28:37 -08:00
Gregory Schier df83a61d6f Url parameters done 2023-11-13 10:52:11 -08:00
Gregory Schier d289f1fd13 Minor tweaks 2023-11-12 21:16:42 -08:00
Gregory Schier aea4e961aa Custom updater code 2023-11-12 21:16:33 -08:00
Gregory Schier c554b73d48 Request body is now an object 2023-11-12 11:16:12 -08:00
Gregory Schier b519bff3d6 Some postman import improvements 2023-11-11 10:43:11 -08:00
Gregory Schier 8381104302 Sync window title (Closes #13) 2023-11-10 15:55:50 -08:00
Gregory Schier 5ef7c6a1a2 Dev app icon 2023-11-10 13:06:12 -08:00
Gregory Schier 6d7a81850c Upgrade sqlx 2023-11-10 12:28:33 -08:00
Gregory Schier 6e5d5fcb95 Clean up importers 2023-11-10 11:39:17 -08:00
Gregory Schier 004fef6729 Fix is_empty check 2023-11-10 09:12:20 -08:00
Gregory Schier 0bec5a6405 Postman importer semi-complete 2023-11-10 09:08:20 -08:00
Gregory Schier 60b091ff1c Tidy up logs and general cleanup 2023-11-09 20:33:09 -08:00
Gregory Schier bee1a5cb2d Move error alert to hook 2023-11-09 20:02:42 -08:00
Gregory Schier bb2d3dd5b1 Show import errors 2023-11-09 20:00:19 -08:00
Gregory Schier bf8aad04c7 Hacky Yaak import complete! 2023-11-09 19:40:31 -08:00
Gregory Schier 4306294a72 More fallback request handing 2023-11-09 17:42:10 -08:00
Gregory Schier 10f3722fe3 Request fallback name in header 2023-11-09 17:34:57 -08:00
Gregory Schier c1af9ca44a Better default request names 2023-11-09 17:26:04 -08:00
Gregory Schier 5b230c74f0 Better non-named requests 2023-11-09 17:17:03 -08:00
Gregory Schier 5cebb4e61a Better Yaak export 2023-11-09 17:03:29 -08:00
Gregory Schier bd9d1e2244 Refactor previous commit 2023-11-09 16:50:57 -08:00
Gregory Schier 9bdaa05f00 Default request name to URL(ish) 2023-11-09 16:47:00 -08:00
Gregory Schier 750ad0c902 Rename initial workspace to "Yaak" 2023-11-09 13:17:21 -08:00
Gregory Schier a9c16838e6 No analytics in dev 2023-11-09 11:46:52 -08:00
Gregory Schier d5065ab6d9 Analytics event properties 2023-11-09 11:44:59 -08:00
Gregory Schier 9ebb3ef532 Context menu, logs in DevTools, export, tweaks 2023-11-09 09:28:01 -08:00
Gregory Schier aeda72f13e Fix plugin (again) 2023-11-08 13:33:15 -08:00
Gregory Schier 83aa9041cb Bundle plugin in Git 2023-11-08 13:06:49 -08:00
Gregory Schier d51913509d Move plugins back 2023-11-08 12:34:14 -08:00
Gregory Schier 5106f28ba5 Fix permissions 2023-11-08 12:02:17 -08:00
Gregory Schier 0c55c6eaab Bump version 2023-11-08 10:12:01 -08:00
Gregory Schier b0edbd19c8 Tweak theme 2023-11-08 10:11:29 -08:00
Gregory Schier 7630db79b7 Tweak theme 2023-11-08 09:56:13 -08:00
Gregory Schier 55a7b82567 Track screen size, os, and version 2023-11-08 09:49:29 -08:00
Gregory Schier b5cb46918a Rust analytics and a few tweaks 2023-11-08 09:13:32 -08:00
Gregory Schier a793ece1a5 Add basic analytics 2023-11-07 09:53:59 -08:00
Gregory Schier 0f6e4b641a Cancel responses on startup 2023-11-06 13:06:15 -08:00
Gregory Schier 5ac5fab0c6 Send all in a folder 2023-11-06 10:53:39 -08:00
Gregory Schier 8030a8a235 Rework workspace header 2023-11-06 10:42:59 -08:00
Gregory Schier d98426cad3 Fix sidebar focus max recursion 2023-11-06 10:40:02 -08:00
Gregory Schier 06034a8fc4 Save after formatting GraphQL (Closes #9) 2023-11-06 07:20:47 -08:00
Gregory Schier 1ee9f9bb51 Move plugins back to root dir 2023-11-06 07:18:53 -08:00
Gregory Schier 4b99d1405e Persist sidebar collapsed state (Closes #10) 2023-11-06 07:18:42 -08:00
Gregory Schier 8480e52195 Vite to bundle insomnia plugin 2023-11-05 22:13:22 -08:00
Gregory Schier 243e65a992 Better import conversion 2023-11-05 14:46:08 -08:00
Gregory Schier b82304a233 Basic import of request body and bearer auth 2023-11-05 14:35:25 -08:00
Gregory Schier f7a4ea9735 Recursive Insomnia import! 2023-11-05 13:33:23 -08:00
Gregory Schier 33d1a84ecd Remove numbers from recent requests 2023-11-04 16:19:21 -07:00
Gregory Schier f4a071ee05 Fix drop marker indent 2023-11-04 11:16:41 -07:00
Gregory Schier e26ba0f9d0 Folder actions 2023-11-04 10:48:18 -07:00
Gregory Schier b4e2a12375 Folder chevron icon 2023-11-03 23:10:44 -07:00
Gregory Schier 5e7aacd31a Fix arrow navigation for nested sidebar 2023-11-03 17:29:33 -07:00
Gregory Schier 00718df49e Folder-based drag-n-drop complete! 2023-11-03 16:29:21 -07:00
Gregory Schier bb9025ab07 Sidebar ordering 95% done! 2023-11-03 15:02:17 -07:00
Gregory Schier 867f3908ed Nested sidebar ordering almost working 2023-11-03 14:08:46 -07:00
Gregory Schier 30e1ecac39 Add folder model 2023-11-03 07:49:44 -07:00
Gregory Schier 7eb2abe9b2 Even better focus state 2023-11-02 22:23:21 -07:00
Gregory Schier a5ac8fa035 Remove focus on env sidebar buttons 2023-11-02 22:18:13 -07:00
Gregory Schier dd705de155 Rearrange menus 2023-11-02 21:41:35 -07:00
Gregory Schier b15cdec701 Refactor environment edit dialog 2023-11-02 20:38:33 -07:00
Gregory Schier a99a36b5cc Base environments fully working 2023-11-02 18:43:39 -07:00
Gregory SchierandGitHub e0b0e3d781 Initial "plugin" system with importer (#7) 2023-11-02 18:08:43 -07:00
Gregory Schier 98a4834d4f Fix cursor color in single-line mode 2023-10-31 15:10:33 -07:00
Gregory Schier 32b135dbaf Fix sending of ephemeral requests 2023-10-30 08:24:49 -07:00
Gregory Schier 0fc8d12a06 Fix GQL introspection and bearer auth templating 2023-10-30 08:07:34 -07:00
Gregory Schier 3c2bdab101 Fix button styles 2023-10-30 07:27:27 -07:00
Gregory Schier 8b5d7ae3ed Fix editor stale callbacks and recent item deletion 2023-10-30 07:07:14 -07:00
Gregory Schier 51949f4fbf Refactored some core UI 2023-10-30 06:35:52 -07:00
Gregory Schier 6013cd2329 Plugin module loading 2023-10-29 20:50:23 -07:00
Gregory Schier eba28ade48 Bump version 2023-10-29 17:22:27 -07:00
Gregory Schier 44af1ddc8a Fix sidebar scroll 2023-10-29 17:19:03 -07:00
Gregory Schier 63c0d09df8 A bit more playing with JS runtime 2023-10-29 17:05:48 -07:00
Gregory Schier f305633d94 Initial "Hello World" for plugins 2023-10-29 16:43:28 -07:00
Gregory Schier 13155f8591 Fix request creation 2023-10-29 12:05:05 -07:00
Gregory Schier f2ac97aa62 Restore recent environment on workspace change
Fixes #6
2023-10-29 11:32:55 -07:00
Gregory Schier 18eb0027a1 Fix var complete and env dialog actions 2023-10-29 11:18:55 -07:00
Gregory Schier 9e2803fcfb Remove broken key/value enter/backspace logic 2023-10-29 10:45:05 -07:00
Gregory Schier 705e30b6e0 Delete key/value on backspace 2023-10-29 10:26:38 -07:00
Gregory Schier f1260911ea Move workspace menu, better env mgmt, QoL 2023-10-29 09:45:16 -07:00
Gregory Schier 076ff63dbe Bump version 2023-10-28 23:41:58 -07:00
Gregory Schier 899092b4d2 Better listening for path changes 2023-10-28 23:41:24 -07:00
Gregory Schier c2c3a28aab Bump version 2023-10-28 22:14:51 -07:00
Gregory Schier 25c0db502e Fixed auto-focus in prompt and env dropdown 2023-10-28 22:14:12 -07:00
Gregory Schier 6dcbe45a53 Clear selected sidebar index on drag-drop end 2023-10-28 21:47:00 -07:00
Gregory Schier e2b46f25ff Revert debug name 2023-10-28 21:43:09 -07:00
Gregory Schier 981182be46 Fix drag-n-drop things 2023-10-28 21:42:35 -07:00
Gregory Schier ad164ebd5e Persist window paths 2023-10-28 21:23:46 -07:00
Gregory Schier cacdad8826 Bump version to 2023.1.0 2023-10-28 19:15:33 -07:00
Gregory Schier 77e5142a7c Update placeholders when env changes 2023-10-28 19:14:51 -07:00
Gregory Schier 613081728d Placeholder error and fix env nav 2023-10-28 19:08:31 -07:00
Gregory Schier 23e77dfec1 Recent requests/workspaces. Closes #1 2023-10-28 18:46:54 -07:00
Gregory Schier 6e273ae2a3 Fix recent requests loading on startup 2023-10-28 18:27:18 -07:00
Gregory Schier 4061094988 Add tauri window save state plugin 2023-10-28 13:14:27 -07:00
Gregory Schier 82b185e27f Fix rustfmt 2023-10-28 12:45:25 -07:00
Gregory Schier 27dc261639 Handle enabled/disabled variables and render multi 2023-10-28 11:36:40 -07:00
Gregory Schier 7e45fecf19 Remove unused Variable type 2023-10-28 11:31:45 -07:00
Gregory Schier 1a5053380b Variables under Environment, and render all props 2023-10-28 11:29:29 -07:00
Gregory Schier 408665c62d Native Codemirror cursor 2023-10-27 13:14:41 -07:00
Gregory Schier 65efee2048 Only wrap URLBar on focus and hotkey to open recent requests 2023-10-27 12:40:43 -07:00
Gregory Schier 3faa66a1fc Resizing window no longer changes sidebar visibility
Fixes #4
2023-10-27 11:21:59 -07:00
Gregory Schier 9dafe4f704 Auto-expand URL bar height 2023-10-27 10:57:07 -07:00
Gregory Schier 356eaf1713 Environment deletion and better actions menu 2023-10-26 16:18:47 -07:00
Gregory Schier f8584f1537 Stop autocomplete from jumping around 2023-10-26 15:27:48 -07:00
Gregory Schier 6ad6cb34b0 Fix request creation from menu 2023-10-26 10:41:14 -07:00
Gregory Schier 32b27cd780 Send requests with active environment 2023-10-26 10:32:06 -07:00
Gregory Schier 0344a1e8c9 Move create request and fix slow HTML highlighting 2023-10-26 09:42:19 -07:00
Gregory Schier 0515271c12 Better project selector, Fixes #2, and a bunch more 2023-10-26 09:11:44 -07:00
Gregory Schier 5ae8d54ce0 Fixed some routing and introspection requests 2023-10-25 21:53:18 -07:00
Gregory Schier 33c406ce49 Environments in URL and better rendering 2023-10-25 11:13:00 -07:00
Gregory Schier 3b660ddbd0 Move responses dropdown to separate component 2023-10-25 07:59:10 -07:00
Gregory Schier 3132728a27 Fix dialog height 2023-10-25 00:02:51 -07:00
Gregory Schier 7063128342 Better style when no active environment 2023-10-24 23:58:12 -07:00
Gregory Schier 2187775462 Environment dropdown and actions 2023-10-24 09:17:29 -07:00
Gregory Schier 18adcd1004 Started on environment edit dialog 2023-10-23 21:00:36 -07:00
Gregory Schier b0656d1e38 Hacky implementation of variable autocomplete 2023-10-23 10:31:21 -07:00
Gregory Schier 38e66047e0 Rendered first variable! 2023-10-22 22:30:29 -07:00
Gregory Schier c24f049dac Updating environments! 2023-10-22 22:06:51 -07:00
Gregory Schier 53d13c8172 Update .gitignore 2023-10-22 20:40:00 -07:00
Gregory Schier 0727c6e437 Prettier and start of env editor 2023-10-22 20:38:57 -07:00
Gregory Schier 8328d20150 Environments data model 2023-10-22 18:28:56 -07:00
Gregory Schier afe6a3bf57 Environment data model backend 2023-10-22 16:05:09 -07:00
Gregory Schier d920632cbd Fix some eslint warnings 2023-10-22 11:02:39 -07:00
Gregory Schier 5c456fd4d5 Add APPLE_TEAM_ID 2023-10-18 14:12:08 -07:00
Gregory Schier 38c247e350 Revert artifacts things 2023-10-18 13:25:35 -07:00
Gregory Schier 0c8f72124a Bump cargo deps 2023-10-18 13:25:20 -07:00
Gregory Schier 80ed6b1525 Bump version 2023-10-18 12:14:38 -07:00
Gregory Schier 4424b3f208 Fix sidebar drag-n-drop 2023-10-18 11:58:58 -07:00
Gregory Schier 2c75abce09 Retry button on introspection errors 2023-06-12 13:20:42 -07:00
Gregory Schier 4e15eb197f Fix autocomplete doc font size 2023-05-31 21:32:48 -07:00
Gregory Schier a7544b4f8c Persist introspection queries and also improve 2023-05-31 21:29:41 -07:00
Gregory Schier d126aad172 Update tauri NPM 2023-05-29 12:49:50 -07:00
Gregory Schier acc5c0de50 Fix graphql instrospection 2023-05-29 12:31:34 -07:00
Gregory Schier 3391da111d Change version 2023-04-27 16:53:39 -07:00
Gregory Schier e37ce96956 Version 1.0.0 2023-04-27 16:47:49 -07:00
Gregory Schier c51831c975 Fix window methods on Linux/Windows 2023-04-27 16:27:02 -07:00
Gregory Schier 180aa39de4 Cross platform window controls 2023-04-27 10:19:49 -07:00
Gregory Schier 3bd780782e Fix ubuntu build 2023-04-26 17:00:30 -07:00
Gregory Schier f9ba2f79c2 Windows and Linux 2023-04-26 16:54:51 -07:00
Gregory Schier d9493de2be Bump version 2023-04-26 16:47:50 -07:00
Gregory Schier bc9a623742 Very basic CSV viewer 2023-04-22 21:53:04 +08:00
Gregory Schier 532edbf274 Truncate response files 2023-04-14 14:15:33 -07:00
Gregory Schier 1585692328 Randomly offset new windows 2023-04-14 14:05:23 -07:00
Gregory Schier 083f565b12 Fix text encoding and delete responses 2023-04-14 13:50:41 -07:00
Gregory Schier f7f7438c9e Delete response files 2023-04-14 12:17:11 -07:00
Gregory Schier 19934a93bb Readonly editor disable tabindex 2023-04-13 22:36:11 -07:00
Gregory Schier 577cfe5bdc Fix imageview padding 2023-04-13 22:33:47 -07:00
Gregory Schier 43ac6afae1 Duration and size tags 2023-04-13 20:50:17 -07:00
Gregory Schier 8cc11703d3 Comment 2023-04-13 18:55:32 -07:00
Gregory Schier 4f7a116378 Always store response on filesystem 2023-04-13 18:52:56 -07:00
Gregory Schier 513793d9ce Support binary responses! 2023-04-13 18:48:40 -07:00
Gregory Schier 67f32b6734 Blur backdrop 2023-04-11 16:12:26 -07:00
Gregory Schier 66813d67fe Autofocus buttons 2023-04-11 14:04:23 -07:00
Gregory Schier a38691ed53 Better opening workspaces and redirect workspace to recent request 2023-04-11 11:11:36 -07:00
Gregory Schier deeefdcfbf Button disabled style opacity 2023-04-10 16:03:45 -07:00
Gregory Schier db292511b1 Dropdown keys and pointer events 2023-04-10 16:02:29 -07:00
Gregory Schier 1a5334c1ce Upgrade deno core 2023-04-10 11:16:25 -07:00
Gregory Schier 11002abe39 Tweak response history 2023-04-09 23:15:51 -07:00
Gregory Schier d922dcb062 Fixed multi-window model sync 2023-04-09 22:32:47 -07:00
Gregory Schier 6fcaa18e86 Tweak recent requests 2023-04-09 22:25:00 -07:00
Gregory Schier 7664c941dd Toggle settings 2023-04-09 22:12:16 -07:00
Gregory Schier 6f5cb528c6 Fix sidebar request focus 2023-04-09 22:03:41 -07:00
Gregory Schier ebb78922f0 More stuff on sidebar 2023-04-09 21:52:04 -07:00
Gregory Schier 2285fe9f1c Small tweaks 2023-04-09 15:32:13 -07:00
Gregory Schier 38ba8625d8 Request history navigator 2023-04-09 15:26:54 -07:00
Gregory Schier ab5681c7ad Enter name on create workspace 2023-04-09 12:27:02 -07:00
Gregory Schier f66dcb9267 Rename workspace 2023-04-09 12:23:41 -07:00
Gregory Schier 1b6cfbac77 Sidebar hover transitions 2023-04-06 16:30:46 -07:00
Gregory Schier 4c27e788ea Remove some more key value usage 2023-04-06 16:26:56 -07:00
Gregory Schier 769da0b052 A bunch of tweaks 2023-04-06 16:05:25 -07:00
Gregory Schier 6b60c86300 macOS 12 2023-04-06 08:39:30 -07:00
Gregory Schier 30c1b5e8c7 Remove system tray icon 2023-04-06 08:15:40 -07:00
Gregory Schier 10af9b6f99 Minor tweaks 2023-04-04 17:21:02 -07:00
Gregory Schier aa8c066f2d Fix some things 2023-04-04 16:56:45 -07:00
Gregory Schier b913b74449 Editor line wrapping support (not used yet) 2023-04-04 16:40:37 -07:00
Gregory Schier b71adce50b remove janky last location tracking 2023-04-04 16:23:08 -07:00
Gregory Schier 0fbb44c701 Fix resize cursor 2023-04-04 16:12:45 -07:00
Gregory Schier de335e8637 Better button styles 2023-04-04 15:40:25 -07:00
Gregory Schier 2999f63a4c Bump version 2023-04-04 13:56:24 -07:00
Gregory Schier 2abc5e6f0b Some small fixes 2023-04-04 13:56:14 -07:00
Gregory Schier 639de4321e A few fixes 2023-04-04 13:31:48 -07:00
Gregory Schier b3c461afdd Better status tags and delete request on key 2023-04-04 12:36:30 -07:00
Gregory Schier 7d154800a0 Remove expects from request sending 2023-04-04 08:14:32 -07:00
Gregory Schier b48ed0399e Fix web view height 2023-04-04 07:51:41 -07:00
Gregory Schier c5d6e7d74a Fix autocomplete spacing 2023-04-04 07:51:19 -07:00
Gregory Schier e82f915363 Fix input focus border 2023-04-03 12:19:37 -07:00
Gregory Schier 3128e9ce76 Hot keys and cleanup 2023-04-03 07:59:49 -07:00
Gregory Schier bc0e86757c Add entitlemet for v8 2023-04-02 20:23:21 -07:00
Gregory Schier fec99916c2 Debug codesigned build 2023-04-02 19:09:14 -07:00
Gregory Schier 3b5d059b11 Disable code signing 2023-04-02 18:27:14 -07:00
Gregory Schier c3fe2acc8a Fix tauri script command 2023-04-02 17:25:24 -07:00
Gregory Schier 4d002c412b Fix universal binary 2023-04-02 17:12:20 -07:00
Gregory Schier 46d152b5f1 Bump version 2023-04-02 15:44:41 -07:00
Gregory Schier 25fa81ebbc Fix toolchain 2023-04-02 15:44:21 -07:00
Gregory Schier 7c2de3c360 Add proper target 2023-04-02 15:42:19 -07:00
Gregory Schier 3a3b187cd0 Try universal binary 2023-04-02 15:33:13 -07:00
Gregory Schier 3226bbe083 Fix version 2023-04-02 15:25:24 -07:00
Gregory Schier a1e4e0e6c9 Bump version 2023-04-02 14:54:41 -07:00
Gregory Schier b3aa8b893b Notorization (hopefully) 2023-04-02 14:53:49 -07:00
Gregory Schier f057139634 Change tabs again 2023-04-02 11:11:53 -07:00
Gregory Schier 71a2b11ab4 Better response headers 2023-04-02 10:45:41 -07:00
Gregory Schier 587254a0e7 Show response headers 2023-04-01 23:43:22 -07:00
Gregory Schier 9f4de66f3c Some more refactoring 2023-04-01 21:48:30 -07:00
Gregory Schier b0d8908724 Refactor debounce and tauri event listeners 2023-04-01 21:39:46 -07:00
Gregory Schier 15c22d98c6 Fix dropdown and dialog key handling 2023-04-01 21:04:39 -07:00
Gregory Schier 3105ae0edc Refactor sidebar display 2023-04-01 20:58:53 -07:00
Gregory Schier 11a89f06c1 Better GraphQL schema fetching 2023-04-01 17:53:36 -07:00
Gregory Schier 9cbe24e740 More eslint fixes 2023-04-01 15:48:37 -07:00
Gregory Schier bfbed13b8f Add React hooks eslint 2023-04-01 15:26:57 -07:00
Gregory Schier 2268de6321 Fix Tauri listeners 2023-04-01 00:02:17 -07:00
Gregory Schier dd99aa7fcd Memo editor 2023-03-31 23:19:15 -07:00
Gregory Schier be436bb706 Fix request duplication 2023-03-31 22:54:32 -07:00
Gregory Schier bd48726f44 Fix tauri listeners causing too many updates 2023-03-31 22:48:34 -07:00
Gregory Schier 10bea83f98 Remove import 2023-03-31 22:42:41 -07:00
Gregory Schier 8122b4fb84 Fix 2023-03-31 22:42:26 -07:00
Gregory Schier 3ae57fb2d8 Upgrade Deno 2023-03-31 22:42:08 -07:00
Gregory Schier 6dc3eecca4 Tweak 2023-03-31 16:14:25 -07:00
Gregory Schier 9d1d732154 Fix send hotkey 2023-03-31 16:13:34 -07:00
Gregory Schier 8a117415b7 Better schema fetching 2023-03-31 16:02:09 -07:00
Gregory Schier d36623ebc9 Finally fix the editor! 2023-03-31 15:56:35 -07:00
Gregory Schier 94a3ae3696 Fix editor blurring bug! 2023-03-31 13:53:28 -07:00
Gregory Schier 2836a28988 Better model updates 2023-03-31 13:21:02 -07:00
Gregory Schier 946d7dc89e Fix text obscuring 2023-03-30 17:22:52 -07:00
Gregory Schier af6300f18b Button ring colors 2023-03-30 17:17:07 -07:00
Gregory Schier 905cb4b18e Remove dummy button 2023-03-30 17:12:38 -07:00
Gregory Schier 305ed09547 Confirm deletions 2023-03-30 17:09:11 -07:00
Gregory Schier 643356bad3 Dedicated event for model creation 2023-03-30 16:49:49 -07:00
Gregory Schier e458675627 Unify text selection color 2023-03-30 16:36:24 -07:00
Gregory Schier 91e3853692 Some icon tweaks 2023-03-30 16:29:14 -07:00
Gregory Schier 5f0876a136 Fix strict mode editor blur bug 2023-03-30 10:38:33 -07:00
Gregory Schier 3a38127fb4 Better tauri listeners and stuff 2023-03-30 09:05:54 -07:00
Gregory Schier f3b6070235 Remove updated_by, remember last location 2023-03-30 08:11:51 -07:00
Gregory Schier 5e6e78eb9e Remove hardcoded window config 2023-03-29 22:16:21 -07:00
Gregory Schier 9b66a1d1a8 Fix build 2023-03-29 22:15:55 -07:00
Gregory Schier e954d0d7bc Remove unused import 2023-03-29 21:53:49 -07:00
Gregory Schier dab2df7e79 Better multi-window updates 2023-03-29 21:53:20 -07:00
Gregory Schier bc40e22008 Fixed key/value stuff 2023-03-29 14:46:36 -07:00
Gregory Schier eef262c398 Fix bundle parts 2023-03-29 14:00:34 -07:00
Gregory Schier 8eab6e14db Fix(ish) multiwindow updates 2023-03-29 11:15:37 -07:00
Gregory Schier ded33a110a Obscure text 2023-03-29 10:16:51 -07:00
Gregory Schier e448a7602a Simple auth schemes 2023-03-29 09:03:38 -07:00
Gregory Schier 4c22215ca5 Good start to multi-window 2023-03-28 18:29:40 -07:00
Gregory Schier 4f501abb72 Focus traps for dialog and dropdown 2023-03-26 23:07:09 -07:00
Gregory Schier b2dcc38982 Confirmation Dialogs 2023-03-26 12:02:20 -07:00
Gregory Schier 11b719955b Floating sidebar 2023-03-26 10:09:28 -07:00
Gregory Schier d563ac63db Panel icons 2023-03-25 23:29:04 -07:00
Gregory Schier 6d826064c6 Update dialog 2023-03-25 21:59:18 -07:00
Gregory Schier d30b9d6518 Optimistically-update key values 2023-03-25 21:54:00 -07:00
Gregory Schier 8da3364d0f More tweaks 2023-03-25 21:40:14 -07:00
Gregory Schier 07c372b7f5 Animate dropdown 2023-03-25 21:36:17 -07:00
Gregory Schier 7e01f38253 Animate sidebar transition 2023-03-25 21:31:52 -07:00
Gregory Schier ba637009a7 Refactor and improve layout resizing 2023-03-25 21:16:10 -07:00
Gregory Schier da7388e510 Even better layouts 2023-03-25 18:33:01 -07:00
Gregory Schier 3ec88fc896 Better grid layouts 2023-03-25 18:12:09 -07:00
Gregory Schier 1c9381b2bd Global layout component 2023-03-25 13:26:31 -07:00
Gregory Schier 06349b8d5b Better dropdown separator 2023-03-25 11:06:05 -07:00
Gregory Schier 6dc7dc6ad2 Fix sidebar drag 2023-03-24 08:37:52 -07:00
Gregory Schier f981a15ec3 Upgrade TYpescript 2023-03-23 15:37:36 -07:00
Gregory Schier 8b648c0301 Fix resize 2023-03-23 07:47:58 -07:00
Gregory Schier 83ce09075b Style tweak 2023-03-21 23:59:09 -07:00
Gregory Schier 168dfb9f6b GraphQL autocomplete and duplicate request 2023-03-21 23:54:45 -07:00
Gregory Schier 9b8961c23d Tweak sidebar drag resizer 2023-03-21 19:36:32 -07:00
Gregory Schier 89bca42ee6 Minor style tweaks 2023-03-21 18:31:05 -07:00
Gregory Schier 07d2a43a17 Pull out resize bar 2023-03-21 16:53:49 -07:00
Gregory Schier c84f2afd09 Resize titlebar and tweak things 2023-03-21 16:42:52 -07:00
Gregory Schier df4dbaecc8 Remove icon generation from build script 2023-03-21 14:21:07 -07:00
Gregory Schier d9bf03cefe query client cache and better body types 2023-03-21 11:38:37 -07:00
Gregory Schier 39223e8d89 Fix workspace deletion 2023-03-21 09:32:15 -07:00
Gregory Schier 67925e18b2 Use proper gray for syntax 2023-03-20 17:15:12 -07:00
Gregory Schier 89ad65513d fix import 2023-03-20 17:13:14 -07:00
Gregory Schier 90166ddfa3 Minor tweaks 2023-03-20 17:12:19 -07:00
Gregory Schier 0981b23faf Fix URL bar spacing 2023-03-20 17:01:29 -07:00
Gregory Schier 664f3b4d87 Better radio dropdown type 2023-03-20 16:54:26 -07:00
Gregory Schier dc97b91a4e Typesafe routing and CM line height issue 2023-03-20 16:47:36 -07:00
Gregory Schier d310272d19 Better tab dropdown handling 2023-03-20 14:14:30 -07:00
Gregory Schier f1be3f01e1 Fix request creation priority 2023-03-20 13:56:03 -07:00
Gregory Schier c57b6e1d73 Remove log 2023-03-20 13:49:35 -07:00
Gregory Schier a938dc45f0 Handle "no body" case 2023-03-20 13:49:21 -07:00
Gregory Schier bb139744a1 Small fix 2023-03-20 13:37:14 -07:00
Gregory Schier 3aa3e09552 Fix pointer window drag 2023-03-20 13:34:49 -07:00
Gregory Schier 74abfd21b8 Fix extra dropdown element 2023-03-20 13:19:23 -07:00
Gregory Schier e703817ba2 Remove most of Radix UI 2023-03-20 13:16:58 -07:00
Gregory Schier 80dd1e457b Better Header validation 2023-03-20 01:38:05 -07:00
Gregory Schier ea9f8d3ab2 Tweak sidebar 2023-03-20 01:30:45 -07:00
Gregory Schier fa222bdf12 Fix pair editor container 2023-03-20 01:18:44 -07:00
Gregory Schier 45b360dabd Fix input thingy 2023-03-20 01:14:13 -07:00
Gregory Schier 5923399359 Container queries! 2023-03-20 01:08:41 -07:00
Gregory Schier f4600f3e90 Better pair editor delete button 2023-03-20 00:30:42 -07:00
Gregory Schier f883837685 Pair validation 2023-03-20 00:17:29 -07:00
Gregory Schier b58bc409f0 Don't send disabled headers 2023-03-20 00:05:19 -07:00
Gregory Schier e893e539bb Small tweak 2023-03-20 00:04:40 -07:00
Gregory Schier 90294fbb5d Pair checkboxes and fix twig indent 2023-03-20 00:03:33 -07:00
Gregory Schier ae65f222bc Rewrote twig grammar 2023-03-19 22:12:11 -07:00
Gregory Schier 1b9813fb4c Re-order of pair editor 2023-03-19 13:28:57 -07:00
Gregory Schier b708b5ae41 Better header editor and added completion data 2023-03-19 11:09:21 -07:00
Gregory Schier df136fa915 A couple tweaks 2023-03-19 01:01:13 -07:00
Gregory Schier f8329f5b8d Persist sort priority! 2023-03-19 00:48:09 -07:00
Gregory Schier 21141090de Create new workspace, and more optimizations 2023-03-18 19:36:31 -07:00
Gregory Schier c0d9740a7d Optimized a few components 2023-03-18 18:49:01 -07:00
Gregory Schier afcf630443 Fix sidebar drag-n-drop 2023-03-18 18:09:36 -07:00
Gregory Schier 1fe2c9826a Got drag opacity working 2023-03-18 15:06:38 -07:00
Gregory Schier 7272b80a3f Good start to drag-n-drop sidebar! 2023-03-18 14:41:07 -07:00
Gregory Schier 92114b7368 Fix mixed parser 2023-03-17 17:57:43 -07:00
Gregory Schier f39d3e7eed Dropdown highlight 2023-03-17 17:32:24 -07:00
Gregory Schier cbe0d27a5e Beginnings of autocomplete for headers 2023-03-17 16:51:20 -07:00
Gregory Schier cd39699467 Flatten migrations, kvs lib, fix tabs 2023-03-17 08:36:21 -07:00
Gregory Schier b3ea67aacf Sidebar item dropdown 2023-03-16 15:37:53 -07:00
Gregory Schier db4ed9797c Sidebar dragging 2023-03-16 14:34:49 -07:00
Gregory Schier 1ea7d7d685 Add devtools toggle hotkey 2023-03-16 11:25:38 -07:00
Gregory Schier 2df725b57a Adjust window sizes 2023-03-16 11:16:23 -07:00
Gregory Schier 74e6648249 Store appearance in k/v 2023-03-16 11:01:30 -07:00
Gregory Schier 1026350d9c Hotkeys and view mode kvs 2023-03-16 09:24:28 -07:00
Gregory Schier 98fb87874d Some fixes 2023-03-15 23:33:46 -07:00
Gregory Schier 41fc3afdc1 Got key values working 2023-03-15 23:24:41 -07:00
Gregory Schier 83dbf46ba4 Fix editor padding 2023-03-15 17:29:35 -07:00
Gregory Schier 0b2e35bdde Minor style updates 2023-03-15 17:25:04 -07:00
Gregory Schier d90a7331c9 Add stuff to app header 2023-03-15 16:35:19 -07:00
Gregory Schier 264e64a996 Better request delete and formatting 2023-03-15 09:41:38 -07:00
Gregory Schier 8915915c47 Fix graphql and other things 2023-03-15 09:06:56 -07:00
Gregory Schier 951ed787fa Header editor to pair editor 2023-03-15 08:09:45 -07:00
Gregory Schier 64ef6b0c22 Better header editor 2023-03-15 07:54:04 -07:00
Gregory Schier ef18377b3c Strict mode and tweak layout padding 2023-03-14 20:19:45 -07:00
Gregory Schier 5904b6fded Add GraphQL variables editor 2023-03-14 19:56:02 -07:00
Gregory Schier f4401e77bb GraphQL query editor transformer works! 2023-03-14 19:08:18 -07:00
Gregory Schier efa5455a7b Add body type to request and tab dropdown 2023-03-14 11:18:56 -07:00
Gregory Schier 619c8d9e72 Improved header editor 2023-03-14 00:54:41 -07:00
Gregory Schier bdf89ac288 Fix platform check 2023-03-14 00:15:01 -07:00
Gregory Schier debd3c8185 Some small changes 2023-03-14 00:08:03 -07:00
Gregory Schier f81a3ae8e7 Move stuff around 2023-03-13 23:30:14 -07:00
Gregory Schier 7d4e9894c3 Refactor hooks to be easier to use 2023-03-13 23:25:41 -07:00
Gregory Schier 4bf22d8a60 Fix header editor and scroll in general 2023-03-13 19:37:36 -07:00
Gregory Schier 8be4971a23 Lazy load routes 2023-03-13 13:56:13 -07:00
Gregory Schier 359e916b73 Back to React 2023-03-13 09:50:49 -07:00
Gregory Schier 68058f3e41 Move some stuff around 2023-03-13 09:24:38 -07:00
Gregory Schier 0c6fa3e634 Fix URL bar 2023-03-13 00:13:25 -07:00
Gregory Schier 0fa25c6335 Fix ButtonLink and edit request names 2023-03-13 00:11:23 -07:00
Gregory Schier 5684479f1d Remove old rust cache action 2023-03-12 22:48:43 -07:00
Gregory Schier 2d1603601c Better rust cache 2023-03-12 22:47:43 -07:00
Gregory Schier f5394b2210 Start GraphQL support 2023-03-12 22:43:25 -07:00
Gregory Schier 833db5df06 Fix artifact tag 2023-03-12 21:41:15 -07:00
Gregory Schier 525ac7e980 Remove wasm stuff 2023-03-12 21:25:31 -07:00
Gregory Schier 44a747c80a Use tauri action 2023-03-12 21:13:08 -07:00
Gregory Schier 2056e7f40a Fix traffic lights thingy 2023-03-12 20:47:52 -07:00
Gregory Schier 9b6c1ad364 Cache cargo bin for "install" 2023-03-12 19:10:39 -07:00
Gregory Schier 34987bcacb Refformat 2023-03-12 19:03:27 -07:00
Gregory Schier b62c11222a Fix artifact upload 2023-03-12 19:01:48 -07:00
Gregory Schier b3cee3ace3 Fix dev 2023-03-12 18:39:02 -07:00
Gregory Schier 222c054c95 Split out macos deps 2023-03-12 18:36:25 -07:00
Gregory Schier 46f18a2491 Cache workflow 2023-03-12 18:28:14 -07:00
Gregory Schier f2ca8e2753 Add wasm-pack 2023-03-12 18:19:20 -07:00
Gregory Schier b0d243c378 Install rsw 2023-03-12 18:14:38 -07:00
Gregory Schier 6161fb86c8 Fix artifact names 2023-03-12 18:13:00 -07:00
Gregory Schier b09cc91fe5 Fix build command 2023-03-12 18:11:24 -07:00
Gregory Schier ef1638cbb3 Update secrets context 2023-03-12 18:07:57 -07:00
Gregory Schier 00ef8743f2 Update workflow name 2023-03-12 18:05:45 -07:00
Gregory Schier 68222659e3 Fix workflow 2023-03-12 18:05:13 -07:00
Gregory Schier 69420a4bba Start of auto updates 2023-03-12 18:04:11 -07:00
Gregory Schier 0161bbaeb1 Fix tabbing to tabs 2023-03-11 23:32:39 -08:00
Gregory Schier 948dbfe3cc Fix eslint errors 2023-03-11 23:29:25 -08:00
Gregory Schier 338ba8b189 Got tab content scrolling working 2023-03-11 22:36:13 -08:00
Gregory Schier ca4655b441 Removed some debug stuff 2023-03-10 10:43:15 -08:00
Gregory Schier bf37499428 Refactor editor to update better 2023-03-10 10:39:23 -08:00
Gregory Schier 0b94b57e2a Fix headers persistence and better sending 2023-03-09 13:38:17 -08:00
Gregory Schier fc40aead98 Hook up header editor! 2023-03-09 13:07:13 -08:00
Gregory Schier 7d7f934e6a Fix 2023-03-09 10:58:27 -08:00
Gregory Schier d5fbf4d622 Fix blur de-select speed 2023-03-09 10:57:34 -08:00
Gregory Schier e4f6c919dc Fix Codemirror performance!! 2023-03-09 10:50:55 -08:00
Gregory Schier 4d806ff2b1 Switch to Preact!!! 2023-03-09 00:47:25 -08:00
Gregory Schier bf8f12274f Move some things around 2023-03-08 23:20:15 -08:00
Gregory Schier f4f438d9fe Better scrollbar color 2023-03-08 19:23:24 -08:00
Gregory Schier 2434f373be Zoom, better sizes, color picker, sidebar footer 2023-03-08 19:22:04 -08:00
Gregory Schier 2bb2061f97 Read-only editor 2023-03-08 16:53:13 -08:00
Gregory Schier 2c011a5c2a More theme tweaks 2023-03-08 16:37:20 -08:00
Gregory Schier f66b0ccea1 Debounce autocomplete 2023-03-08 11:25:20 -08:00
Gregory Schier 665dd8447d Minor theme updates again 2023-03-08 09:43:35 -08:00
Gregory Schier 1b61ce31e6 Editor tweaks 2023-03-07 23:05:33 -08:00
Gregory Schier ef4d960698 Remove unneeded space 2023-03-07 22:58:13 -08:00
Gregory Schier b6d557b632 Fix small view 2023-03-07 22:55:51 -08:00
Gregory Schier b700bd356c Minor style tweaks 2023-03-07 22:21:58 -08:00
Gregory Schier 620dd7d3ef Lots more theme stuff 2023-03-07 21:52:21 -08:00
Gregory Schier 6575121902 Start of themes 2023-03-07 11:24:38 -08:00
Gregory Schier 7c1755a0dc More subtle layout tweaks 2023-03-06 08:57:57 -08:00
Gregory Schier 8ad301a666 More layout fiddling and error page 2023-03-04 22:26:00 -08:00
Gregory Schier ae24cd4939 More work on the layout 2023-03-04 21:51:17 -08:00
Gregory Schier 7152e1845e Try new layout and a bunch of editor fixes 2023-03-04 19:06:12 -08:00
Gregory Schier 96c1dd4081 Fix autocomplete inside dialog 2023-03-03 17:03:20 -08:00
Gregory Schier 87c7b3a663 Beginnings of Header Editor 2023-03-03 13:18:57 -08:00
Gregory Schier c1be46a539 Fix tailwind dark selector 2023-03-03 07:54:19 -08:00
Gregory Schier 4655e0018b Fix content type in URL 2023-03-02 23:17:09 -08:00
Gregory Schier da5ba2e3be Add Dialog component 2023-03-02 18:46:10 -08:00
Gregory Schier aaf95f565f More colors 2023-03-02 17:56:53 -08:00
Gregory Schier f32b984e77 Minor style tweaks 2023-03-02 16:16:41 -08:00
Gregory Schier 548aa4c7cd Improved autocompletion! 2023-03-02 11:14:51 -08:00
Gregory Schier 0ccceaac77 Rename, fix autocomplete and singleline, etc... 2023-03-02 10:42:43 -08:00
Gregory Schier 70f534f1d8 Editor placeholder 2023-03-01 14:22:10 -08:00
Gregory Schier 61fe95b300 Some minor bugs 2023-03-01 14:16:02 -08:00
Gregory Schier 915e0e8613 Fix migrations for build and iframe rendering 2023-03-01 10:31:50 -08:00
Gregory Schier aace2580da Tweaks 2023-03-01 10:19:21 -08:00
Gregory Schier 3d36905664 Response streaming 2023-03-01 09:05:00 -08:00
Gregory Schier 0d671423da Autocomplete, and more CM stuff! 2023-02-28 22:54:54 -08:00
Gregory Schier aebfcb9437 Some small tweaks 2023-02-28 17:25:59 -08:00
Gregory Schier be7ef7beb1 Better editor updating 2023-02-28 12:41:03 -08:00
Gregory Schier d77ed0c5cc URL highlighting with inline CM 2023-02-28 11:26:26 -08:00
Gregory Schier e57e7bcec5 Implement request deletion 2023-02-27 15:42:06 -08:00
Gregory Schier a637842ce4 Tauri events for request model updates 2023-02-27 13:28:50 -08:00
Gregory Schier fc54ec49af Split request upsert command 2023-02-27 10:00:57 -08:00
Gregory Schier 5c43d8510a Add toggle for pretty view 2023-02-27 09:08:48 -08:00
Gregory Schier 83f84ded8d Small tweaks 2023-02-26 15:25:55 -08:00
Gregory Schier 5658da34a2 Add variable highlighting widgets 2023-02-26 15:06:14 -08:00
Gregory Schier 38e8ef6535 Dropdown scrolling 2023-02-25 23:33:07 -08:00
Gregory Schier 8c89b06238 Show response body size 2023-02-25 23:08:19 -08:00
Gregory Schier d85c021305 A bunch more small things 2023-02-25 23:04:31 -08:00
Gregory Schier 83bb18df03 Added react-router 2023-02-25 18:04:14 -08:00
Gregory Schier 93105a3e89 Migrations and initial data stuff 2023-02-25 16:39:18 -08:00
Gregory Schier ba3b899115 Minor tweaks 2023-02-24 17:01:48 -08:00
Gregory Schier fcfbc1d1da Dummy requests in sidebar 2023-02-24 16:46:56 -08:00
Gregory Schier 72486b448c Codemirror initial value support 2023-02-24 16:43:47 -08:00
Gregory Schier 7dea1b7870 Send request body 2023-02-24 16:09:19 -08:00
Gregory Schier 4de2c496c9 Vendor basicSetup 2023-02-24 14:51:56 -08:00
Gregory Schier 9e1393a392 Additional methods and tweaks 2023-02-24 14:10:25 -08:00
Gregory Schier 0901690ed6 Focus states 2023-02-24 12:35:13 -08:00
Gregory Schier 95303648cc Hook up theme and clear responses 2023-02-24 12:13:30 -08:00
Gregory Schier 1dbb08c045 SQLite store in proper dir 2023-02-22 20:18:14 -08:00
Gregory Schier 00a7d9a180 Started on grid layout 2023-02-22 19:44:44 -08:00
Gregory Schier 6c549dc086 Save responses in DB 2023-02-22 18:53:44 -08:00
Gregory Schier dc368e326a Better URL bar 2023-02-22 16:15:25 -08:00
Gregory Schier e42188a627 Cleaner URL bar and some improvements 2023-02-22 15:58:04 -08:00
Gregory Schier 7a6a337eff Refactor classname usage 2023-02-21 18:03:57 -08:00
Gregory Schier 3907344884 Some minor tweaks 2023-02-21 17:56:48 -08:00
1341 changed files with 44030 additions and 102575 deletions
-72
View File
@@ -1,72 +0,0 @@
# Claude Context: Detaching Tauri from Yaak
## Goal
Make Yaak runnable as a standalone CLI without Tauri as a dependency. The core Rust crates in `crates/` should be usable independently, while Tauri-specific code lives in `crates-tauri/`.
## Project Structure
```
crates/ # Core crates - should NOT depend on Tauri
crates-tauri/ # Tauri-specific crates (yaak-app, yaak-tauri-utils, etc.)
crates-cli/ # CLI crate (yaak-cli)
```
## Completed Work
### 1. Folder Restructure
- Moved Tauri-dependent app code to `crates-tauri/yaak-app/`
- Created `crates-tauri/yaak-tauri-utils/` for shared Tauri utilities (window traits, api_client, error handling)
- Created `crates-cli/yaak-cli/` for the standalone CLI
### 2. Decoupled Crates (no longer depend on Tauri)
- **yaak-models**: Uses `init_standalone()` pattern for CLI database access
- **yaak-http**: Removed Tauri plugin, HttpConnectionManager initialized in yaak-app setup
- **yaak-common**: Only contains Tauri-free utilities (serde, platform)
- **yaak-crypto**: Removed Tauri plugin, EncryptionManager initialized in yaak-app setup, commands moved to yaak-app
- **yaak-grpc**: Replaced AppHandle with GrpcConfig struct, uses tokio::process::Command instead of Tauri sidecar
### 3. CLI Implementation
- Basic CLI at `crates-cli/yaak-cli/src/main.rs`
- Commands: workspaces, requests, send (by ID), get (ad-hoc URL), create
- Uses same database as Tauri app via `yaak_models::init_standalone()`
## Remaining Work
### Crates Still Depending on Tauri (in `crates/`)
1. **yaak-git** (3 files) - Moderate complexity
2. **yaak-plugins** (13 files) - **Hardest** - deeply integrated with Tauri for plugin-to-window communication
3. **yaak-sync** (4 files) - Moderate complexity
4. **yaak-ws** (5 files) - Moderate complexity
### Pattern for Decoupling
1. Remove Tauri plugin `init()` function from the crate
2. Move commands to `yaak-app/src/commands.rs` or keep inline in `lib.rs`
3. Move extension traits (e.g., `SomethingManagerExt`) to yaak-app or yaak-tauri-utils
4. Initialize managers in yaak-app's `.setup()` block
5. Remove `tauri` from Cargo.toml dependencies
6. Update `crates-tauri/yaak-app/capabilities/default.json` to remove the plugin permission
7. Replace `tauri::async_runtime::block_on` with `tokio::runtime::Handle::current().block_on()`
## Key Files
- `crates-tauri/yaak-app/src/lib.rs` - Main Tauri app, setup block initializes managers
- `crates-tauri/yaak-app/src/commands.rs` - Migrated Tauri commands
- `crates-tauri/yaak-app/src/models_ext.rs` - Database plugin and extension traits
- `crates-tauri/yaak-tauri-utils/src/window.rs` - WorkspaceWindowTrait for window state
- `crates/yaak-models/src/lib.rs` - Contains `init_standalone()` for CLI usage
## Git Branch
Working on `detach-tauri` branch.
## Recent Commits
```
c40cff40 Remove Tauri dependencies from yaak-crypto and yaak-grpc
df495f1d Move Tauri utilities from yaak-common to yaak-tauri-utils
481e0273 Remove Tauri dependencies from yaak-http and yaak-common
10568ac3 Add HTTP request sending to yaak-cli
bcb7d600 Add yaak-cli stub with basic database access
e718a5f1 Refactor models_ext to use init_standalone from yaak-models
```
## Testing
- Run `cargo check -p <crate>` to verify a crate builds without Tauri
- Run `npm run app-dev` to test the Tauri app still works
- Run `cargo run -p yaak-cli -- --help` to test the CLI
-51
View File
@@ -1,51 +0,0 @@
---
description: Review a PR in a new worktree
allowed-tools: Bash(git worktree:*), Bash(gh pr:*)
---
Review a GitHub pull request in a new git worktree.
## Usage
```
/review-pr <PR_NUMBER>
```
## What to do
1. List all open pull requests and ask the user to select one
2. Get PR information using `gh pr view <PR_NUMBER> --json number,headRefName`
3. Extract the branch name from the PR
4. Create a new worktree at `../yaak-worktrees/pr-<PR_NUMBER>` using `git worktree add` with a timeout of at least 300000ms (5 minutes) since the post-checkout hook runs a bootstrap script
5. Checkout the PR branch in the new worktree using `gh pr checkout <PR_NUMBER>`
6. The post-checkout hook will automatically:
- Create `.env.local` with unique ports
- Copy editor config folders
- Run `npm install && npm run bootstrap`
7. Inform the user:
- Where the worktree was created
- What ports were assigned
- How to access it (cd command)
- How to run the dev server
- How to remove the worktree when done
## Example Output
```
Created worktree for PR #123 at ../yaak-worktrees/pr-123
Branch: feature-auth
Ports: Vite (1421), MCP (64344)
To start working:
cd ../yaak-worktrees/pr-123
npm run app-dev
To remove when done:
git worktree remove ../yaak-worktrees/pr-123
```
## Error Handling
- If the PR doesn't exist, show a helpful error
- If the worktree already exists, inform the user and ask if they want to remove and recreate it
- If `gh` CLI is not available, inform the user to install it
@@ -1,47 +0,0 @@
---
description: Generate formatted release notes for Yaak releases
allowed-tools: Bash(git tag:*)
---
Generate formatted release notes for Yaak releases by analyzing git history and pull request descriptions.
## What to do
1. Identifies the version tag and previous version
2. Retrieves all commits between versions
- If the version is a beta version, it retrieves commits between the beta version and previous beta version
- If the version is a stable version, it retrieves commits between the stable version and the previous stable version
3. Fetches PR descriptions for linked issues to find:
- Feedback URLs (feedback.yaak.app)
- Additional context and descriptions
- Installation links for plugins
4. Formats the release notes using the standard Yaak format:
- Changelog badge at the top
- Bulleted list of changes with PR links
- Feedback links where available
- Full changelog comparison link at the bottom
## Output Format
The skill generates markdown-formatted release notes following this structure:
```markdown
[![Changelog](https://img.shields.io/badge/Changelog-VERSION-blue)](https://yaak.app/changelog/VERSION)
- Feature/fix description in by @username [#123](https://github.com/mountain-loop/yaak/pull/123)
- [Linked feedback item](https://feedback.yaak.app/p/item) by @username in [#456](https://github.com/mountain-loop/yaak/pull/456)
- A simple item that doesn't have a feedback or PR link
**Full Changelog**: https://github.com/mountain-loop/yaak/compare/vPREV...vCURRENT
```
**IMPORTANT**: Always add a blank lines around the markdown code fence and output the markdown code block last
**IMPORTANT**: PRs by `@gschier` should not mention the @username
## After Generating Release Notes
After outputting the release notes, ask the user if they would like to create a draft GitHub release with these notes. If they confirm, create the release using:
```bash
gh release create <tag> --draft --prerelease --title "<tag>" --notes '<release notes>'
```
-27
View File
@@ -1,27 +0,0 @@
# Project Rules
## General Development
- **NEVER** commit or push without explicit confirmation
## Build and Lint
- **ALWAYS** run `npm run lint` after modifying TypeScript or JavaScript files
- Run `npm run bootstrap` after changing plugin runtime or MCP server code
## Plugin System
### Backend Constraints
- Always use `UpdateSource::Plugin` when calling database methods from plugin events
- Never send timestamps (`createdAt`, `updatedAt`) from TypeScript - Rust backend controls these
- Backend uses `NaiveDateTime` (no timezone) so avoid sending ISO timestamp strings
### MCP Server
- MCP server has **no active window context** - cannot call `window.workspaceId()`
- Get workspace ID from `workspaceCtx.yaak.workspace.list()` instead
## Rust Type Generation
- Run `cargo test --package yaak-plugins` (and for other crates) to regenerate TypeScript bindings after modifying Rust event types
-35
View File
@@ -1,35 +0,0 @@
# Worktree Management Skill
## Creating Worktrees
When creating git worktrees for this project, ALWAYS use the path format:
```
../yaak-worktrees/<NAME>
```
For example:
- `git worktree add ../yaak-worktrees/feature-auth`
- `git worktree add ../yaak-worktrees/bugfix-login`
- `git worktree add ../yaak-worktrees/refactor-api`
## What Happens Automatically
The post-checkout hook will automatically:
1. Create `.env.local` with unique ports (YAAK_DEV_PORT and YAAK_PLUGIN_MCP_SERVER_PORT)
2. Copy gitignored editor config folders (.zed, .idea, etc.)
3. Run `npm install && npm run bootstrap`
## Deleting Worktrees
```bash
git worktree remove ../yaak-worktrees/<NAME>
```
## Port Assignments
- Main worktree: 1420 (Vite), 64343 (MCP)
- First worktree: 1421, 64344
- Second worktree: 1422, 64345
- etc.
Each worktree can run `npm run app-dev` simultaneously without conflicts.
+5
View File
@@ -0,0 +1,5 @@
node_modules/
dist/
.prettierrc.cjs
.eslintrc.cjs
env.d.ts
+37
View File
@@ -0,0 +1,37 @@
module.exports = {
extends: [
"eslint:recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"plugin:import/recommended",
"plugin:jsx-a11y/recommended",
"plugin:@typescript-eslint/recommended",
"eslint-config-prettier"
],
parser: "@typescript-eslint/parser",
parserOptions: {
project: ["./tsconfig.json"]
},
ignorePatterns: ["src-tauri/**/*", "plugins/**/*"],
settings: {
react: {
version: "detect"
},
"import/resolver": {
node: {
paths: ["src-web"],
extensions: [".ts", ".tsx"]
}
}
},
rules: {
"jsx-a11y/no-autofocus": "off",
"react/react-in-jsx-scope": "off",
"import/no-unresolved": "off",
"@typescript-eslint/consistent-type-imports": ["error", {
prefer: "type-imports",
disallowTypeAnnotations: true,
fixStyle: "separate-type-imports"
}]
}
};
-7
View File
@@ -1,7 +0,0 @@
crates-tauri/yaak-app/vendored/**/* linguist-generated=true
crates-tauri/yaak-app/gen/schemas/**/* linguist-generated=true
**/bindings/* linguist-generated=true
crates/yaak-templates/pkg/* linguist-generated=true
# Ensure consistent line endings for test files that check exact content
crates/yaak-http/tests/test.txt text eol=lf
-3
View File
@@ -1,3 +0,0 @@
# These are supported funding model platforms
github: gschier
-38
View File
@@ -1,38 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.
-5
View File
@@ -1,5 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Bugs, Feedback, Feature Requests, and Questions
url: https://feedback.yaak.app
about: "Please report to Yaak's public feedback board. Issues will be created and linked here when applicable."
+72
View File
@@ -0,0 +1,72 @@
name: Generate Artifacts
on:
push:
tags: [ v* ]
permissions: write-all
jobs:
build-artifacts:
name: Build
strategy:
fail-fast: false
matrix:
include:
- os: macos-latest
target: aarch64-apple-darwin
- os: macos-latest
target: x86_64-apple-darwin
- os: windows-latest
target: x86_64-pc-windows-msvc
- os: ubuntu-20.04
target: x86_64-unknown-linux-gnu
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Cache Rust
uses: actions/cache@v2
with:
path: |
~/.cargo/registry
~/.cargo/git
./src-tauri/target
key: ${{ runner.os }}-cargo-${{ hashFiles('src-tauri/Cargo.lock') }}
- uses: actions/setup-node@v3
with:
node-version: 20
cache: 'npm'
- name: install dependencies (ubuntu only)
if: matrix.os == 'ubuntu-20.04'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
# Pin dev version to get non-default targets
# https://github.com/tauri-apps/tauri-action/issues/356
- uses: tauri-apps/tauri-action@dev
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
ENABLE_CODE_SIGNING: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
APPLE_ID: ${{ secrets.APPLE_ID }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
with:
tagName: 'v__VERSION__'
releaseName: 'Release __VERSION__'
releaseBody: 'https://yaak.app/changelog/__VERSION__'
releaseDraft: true
prerelease: false
args: '--target ${{ matrix.target }}'
-30
View File
@@ -1,30 +0,0 @@
on:
pull_request:
push:
branches:
- main
name: Lint and Test
permissions:
contents: read
jobs:
test:
name: Lint/Test
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci
cache-on-failure: true
- run: npm ci
- run: npm run bootstrap
- run: npm run lint
- name: Run JS Tests
run: npm test
- name: Run Rust Tests
run: cargo test --all
-50
View File
@@ -1,50 +0,0 @@
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
issues:
types: [opened, assigned]
pull_request_review:
types: [submitted]
jobs:
claude:
if: |
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||
(github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
actions: read # Required for Claude to read CI results on PRs
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Run Claude Code
id: claude
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# This is an optional setting that allows Claude to read CI results on PRs
additional_permissions: |
actions: read
# Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.
# prompt: 'Update the pull request description to include a summary of changes.'
# Optional: Add claude_args to customize behavior and configuration
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://code.claude.com/docs/en/cli-reference for available options
# claude_args: '--allowed-tools Bash(gh pr:*)'
-155
View File
@@ -1,155 +0,0 @@
name: Generate Artifacts
on:
push:
tags: [v*]
jobs:
build-artifacts:
permissions:
contents: write
name: Build
strategy:
fail-fast: false
matrix:
include:
- platform: "macos-latest" # for Arm-based Macs (M1 and above).
args: "--target aarch64-apple-darwin"
yaak_arch: "arm64"
os: "macos"
targets: "aarch64-apple-darwin"
- platform: "macos-latest" # for Intel-based Macs.
args: "--target x86_64-apple-darwin"
yaak_arch: "x64"
os: "macos"
targets: "x86_64-apple-darwin"
- platform: "ubuntu-22.04"
args: ""
yaak_arch: "x64"
os: "ubuntu"
targets: ""
- platform: "ubuntu-22.04-arm"
args: ""
yaak_arch: "arm64"
os: "ubuntu"
targets: ""
- platform: "windows-latest"
args: ""
yaak_arch: "x64"
os: "windows"
targets: ""
# Windows ARM64
- platform: "windows-latest"
args: "--target aarch64-pc-windows-msvc"
yaak_arch: "arm64"
os: "windows"
targets: "aarch64-pc-windows-msvc"
runs-on: ${{ matrix.platform }}
timeout-minutes: 40
steps:
- name: Checkout yaakapp/app
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.targets }}
- uses: Swatinem/rust-cache@v2
with:
shared-key: ci
cache-on-failure: true
- name: install dependencies (Linux only)
if: matrix.os == 'ubuntu'
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf xdg-utils
- name: Install Protoc for plugin-runtime
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install trusted-signing-cli (Windows only)
if: matrix.os == 'windows'
shell: pwsh
run: |
$ErrorActionPreference = 'Stop'
$dir = "$env:USERPROFILE\trusted-signing"
New-Item -ItemType Directory -Force -Path $dir | Out-Null
$url = "https://github.com/Levminer/trusted-signing-cli/releases/download/0.8.0/trusted-signing-cli.exe"
$exe = Join-Path $dir "trusted-signing-cli.exe"
Invoke-WebRequest -Uri $url -OutFile $exe
echo $dir >> $env:GITHUB_PATH
& $exe --version
- run: npm ci
- run: npm run bootstrap
env:
YAAK_TARGET_ARCH: ${{ matrix.yaak_arch }}
- run: npm run lint
- name: Run JS Tests
run: npm test
- name: Run Rust Tests
run: cargo test --all
- name: Set version
run: npm run replace-version
env:
YAAK_VERSION: ${{ github.ref_name }}
- name: Sign vendored binaries (macOS only)
if: matrix.os == 'macos'
env:
APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# Create keychain
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# Import certificate
echo "$APPLE_CERTIFICATE" | base64 --decode > certificate.p12
security import certificate.p12 -P "$APPLE_CERTIFICATE_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# Sign vendored binaries with hardened runtime and their specific entitlements
codesign --force --options runtime --entitlements crates-tauri/yaak-app/macos/entitlements.yaakprotoc.plist --sign "$APPLE_SIGNING_IDENTITY" crates-tauri/yaak-app/vendored/protoc/yaakprotoc || true
codesign --force --options runtime --entitlements crates-tauri/yaak-app/macos/entitlements.yaaknode.plist --sign "$APPLE_SIGNING_IDENTITY" crates-tauri/yaak-app/vendored/node/yaaknode || true
- uses: tauri-apps/tauri-action@v0
env:
YAAK_TARGET_ARCH: ${{ matrix.yaak_arch }}
ENABLE_CODE_SIGNING: ${{ secrets.APPLE_CERTIFICATE }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
# Apple signing stuff
APPLE_CERTIFICATE: ${{ matrix.os == 'macos' && secrets.APPLE_CERTIFICATE }}
APPLE_CERTIFICATE_PASSWORD: ${{ matrix.os == 'macos' && secrets.APPLE_CERTIFICATE_PASSWORD }}
APPLE_ID: ${{ matrix.os == 'macos' && secrets.APPLE_ID }}
APPLE_PASSWORD: ${{ matrix.os == 'macos' && secrets.APPLE_PASSWORD }}
APPLE_SIGNING_IDENTITY: ${{ matrix.os == 'macos' && secrets.APPLE_SIGNING_IDENTITY }}
APPLE_TEAM_ID: ${{ matrix.os == 'macos' && secrets.APPLE_TEAM_ID }}
# Windows signing stuff
AZURE_CLIENT_ID: ${{ matrix.os == 'windows' && secrets.AZURE_CLIENT_ID }}
AZURE_CLIENT_SECRET: ${{ matrix.os == 'windows' && secrets.AZURE_CLIENT_SECRET }}
AZURE_TENANT_ID: ${{ matrix.os == 'windows' && secrets.AZURE_TENANT_ID }}
with:
tagName: "v__VERSION__"
releaseName: "Release __VERSION__"
releaseBody: "[Changelog __VERSION__](https://yaak.app/blog/__VERSION__)"
releaseDraft: true
prerelease: true
args: "${{ matrix.args }} --config ./crates-tauri/yaak-app/tauri.release.conf.json"
-44
View File
@@ -1,44 +0,0 @@
name: Generate Sponsors README
on:
workflow_dispatch:
schedule:
- cron: 30 15 * * 0-6
permissions:
contents: write
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v2
- name: Generate Sponsors
uses: JamesIves/github-sponsors-readme-action@v1
with:
token: ${{ secrets.SPONSORS_PAT }}
file: 'README.md'
maximum: 1999
template: '<a href="https://github.com/{{{ login }}}"><img src="{{{ avatarUrl }}}" width="50px" alt="User avatar: {{{ login }}}" /></a>&nbsp;&nbsp;'
active-only: false
include-private: true
marker: 'sponsors-base'
- name: Generate Sponsors
uses: JamesIves/github-sponsors-readme-action@v1
with:
token: ${{ secrets.SPONSORS_PAT }}
file: 'README.md'
minimum: 2000
template: '<a href="https://github.com/{{{ login }}}"><img src="{{{ avatarUrl }}}" width="80px" alt="User avatar: {{{ login }}}" /></a>&nbsp;&nbsp;'
active-only: false
include-private: true
marker: 'sponsors-premium'
# ⚠️ Note: You can use any deployment step here to automatically push the README
# changes back to your branch.
- name: Commit Changes
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: main
force: false
folder: '.'
-18
View File
@@ -15,8 +15,6 @@ dist-ssr
# Editor directories and files # Editor directories and files
.vscode/* .vscode/*
!.vscode/extensions.json !.vscode/extensions.json
!.vscode/settings.json
!.vscode/launch.json
.idea .idea
.DS_Store .DS_Store
*.suo *.suo
@@ -25,22 +23,6 @@ dist-ssr
*.sln *.sln
*.sw? *.sw?
.eslintcache .eslintcache
out
*.sqlite *.sqlite
*.sqlite-* *.sqlite-*
.cargo
.tmp
tmp
.zed
codebook.toml
target
# Per-worktree Tauri config (generated by post-checkout hook)
crates-tauri/yaak-app/tauri.worktree.conf.json
# Tauri auto-generated permission files
**/permissions/autogenerated
**/permissions/schemas
+1
View File
@@ -0,0 +1 @@
_
-1
View File
@@ -1 +0,0 @@
node scripts/git-hooks/post-checkout.mjs "$@"
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
node_modules/
dist/
out/
.prettierrc.cjs
+8
View File
@@ -0,0 +1,8 @@
module.exports = {
"trailingComma": "all",
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"printWidth": 100,
"bracketSpacing": true
}
+20
View File
@@ -0,0 +1,20 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Build Desktop" type="ShConfigurationType">
<option name="SCRIPT_TEXT" value="npm run tauri build -- --target universal-apple-darwin" />
<option name="INDEPENDENT_SCRIPT_PATH" value="true" />
<option name="SCRIPT_PATH" value="" />
<option name="SCRIPT_OPTIONS" value="" />
<option name="INDEPENDENT_SCRIPT_WORKING_DIRECTORY" value="true" />
<option name="SCRIPT_WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="INDEPENDENT_INTERPRETER_PATH" value="true" />
<option name="INTERPRETER_PATH" value="/bin/zsh" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="EXECUTE_IN_TERMINAL" value="true" />
<option name="EXECUTE_SCRIPT_FILE" value="false" />
<envs>
<env name="TAURI_KEY_PASSWORD" value="fishhook-upstream-wash-assured" />
<env name="TAURI_PRIVATE_KEY" value="dW50cnVzdGVkIGNvbW1lbnQ6IHJzaWduIGVuY3J5cHRlZCBzZWNyZXQga2V5ClJXUlRZMEl5OGxWaytTa3dIa2xXVUltQzRGUXIzd2lYQ2NpV0ZhQURSbWJWZ1NrK0tnY0FBQkFBQUFBQUFBQUFBQUlBQUFBQUV2M1VKdVRyVHpHSzhQdGc2ZVFtOVNsMU5tNEVSN280cFNrbXhncW9tdjNXaFJZUTJqUzQ5Q01zWTJWRVhaY1pGNHNjR1NFR3JmcWFRN09NdWdGMXpZVXhzejR4V3lDV1JpZHlnbW5LNS9vMFFtRlZjbUl4YjZSNzhlMmk3ait5SExYcG5QZUkxOFE9Cg==" />
</envs>
<method v="2" />
</configuration>
</component>
+13
View File
@@ -0,0 +1,13 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Dev Desktop" type="js.build_tools.npm">
<package-json value="$PROJECT_DIR$/package.json" />
<command value="run" />
<scripts>
<script value="start" />
</scripts>
<node-interpreter value="project" />
<envs>
</envs>
<method v="2" />
</configuration>
</component>
+5
View File
@@ -0,0 +1,5 @@
{
"name": "yaak-dev",
"adapter": "sqlite3",
"filename": "src-tauri/db.sqlite"
}
+1
View File
@@ -0,0 +1 @@
plugins
-3
View File
@@ -1,3 +0,0 @@
{
"recommendations": ["biomejs.biome", "rust-lang.rust-analyzer", "bradlc.vscode-tailwindcss"]
}
-26
View File
@@ -1,26 +0,0 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Dev App",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "start"]
},
{
"type": "node",
"request": "launch",
"name": "Build App",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "start"]
},
{
"type": "node",
"request": "launch",
"name": "Bootstrap",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "bootstrap"]
}
]
}
-6
View File
@@ -1,6 +0,0 @@
{
"editor.defaultFormatter": "biomejs.biome",
"editor.formatOnSave": true,
"biome.enabled": true,
"biome.lint.format.enable": true
}
Generated
-8669
View File
File diff suppressed because it is too large Load Diff
-69
View File
@@ -1,69 +0,0 @@
[workspace]
resolver = "2"
members = [
# Shared crates (no Tauri dependency)
"crates/yaak-core",
"crates/yaak-common",
"crates/yaak-crypto",
"crates/yaak-git",
"crates/yaak-grpc",
"crates/yaak-http",
"crates/yaak-models",
"crates/yaak-plugins",
"crates/yaak-sse",
"crates/yaak-sync",
"crates/yaak-templates",
"crates/yaak-tls",
"crates/yaak-ws",
# CLI crates
"crates-cli/yaak-cli",
# Tauri-specific crates
"crates-tauri/yaak-app",
"crates-tauri/yaak-fonts",
"crates-tauri/yaak-license",
"crates-tauri/yaak-mac-window",
"crates-tauri/yaak-tauri-utils",
]
[workspace.dependencies]
chrono = "0.4.42"
hex = "0.4.3"
keyring = "3.6.3"
log = "0.4.29"
reqwest = "0.12.20"
rustls = { version = "0.23.34", default-features = false }
rustls-platform-verifier = "0.6.2"
serde = "1.0.228"
serde_json = "1.0.145"
sha2 = "0.10.9"
tauri = "2.9.5"
tauri-plugin = "2.5.2"
tauri-plugin-dialog = "2.4.2"
tauri-plugin-shell = "2.3.3"
thiserror = "2.0.17"
tokio = "1.48.0"
ts-rs = "11.1.0"
# Internal crates - shared
yaak-core = { path = "crates/yaak-core" }
yaak-common = { path = "crates/yaak-common" }
yaak-crypto = { path = "crates/yaak-crypto" }
yaak-git = { path = "crates/yaak-git" }
yaak-grpc = { path = "crates/yaak-grpc" }
yaak-http = { path = "crates/yaak-http" }
yaak-models = { path = "crates/yaak-models" }
yaak-plugins = { path = "crates/yaak-plugins" }
yaak-sse = { path = "crates/yaak-sse" }
yaak-sync = { path = "crates/yaak-sync" }
yaak-templates = { path = "crates/yaak-templates" }
yaak-tls = { path = "crates/yaak-tls" }
yaak-ws = { path = "crates/yaak-ws" }
# Internal crates - Tauri-specific
yaak-fonts = { path = "crates-tauri/yaak-fonts" }
yaak-license = { path = "crates-tauri/yaak-license" }
yaak-mac-window = { path = "crates-tauri/yaak-mac-window" }
yaak-tauri-utils = { path = "crates-tauri/yaak-tauri-utils" }
[profile.release]
strip = false
-88
View File
@@ -1,88 +0,0 @@
# Developer Setup
Yaak is a combined Node.js and Rust monorepo. It is a [Tauri](https://tauri.app) project, so
uses Rust and HTML/CSS/JS for the main application but there is also a plugin system powered
by a Node.js sidecar that communicates to the app over gRPC.
Because of the moving parts, there are a few setup steps required before development can
begin.
## Prerequisites
Make sure you have the following tools installed:
- [Node.js](https://nodejs.org/en/download/package-manager)
- [Rust](https://www.rust-lang.org/tools/install)
Check the installations with the following commands:
```shell
node -v
npm -v
rustc --version
```
Install the NPM dependencies:
```shell
npm install
```
Run the `bootstrap` command to do some initial setup:
```shell
npm run bootstrap
```
## Run the App
After bootstrapping, start the app in development mode:
```shell
npm start
```
## SQLite Migrations
New migrations can be created from the `src-tauri/` directory:
```shell
npm run migration
```
Rerun the app to apply the migrations.
_Note: For safety, development builds use a separate database location from production builds._
## Lezer Grammar Generation
```sh
# Example
lezer-generator components/core/Editor/<LANG>/<LANG>.grammar > components/core/Editor/<LANG>/<LANG>.ts
```
## Linting & Formatting
This repo uses Biome for linting and formatting (replacing ESLint + Prettier).
- Lint the entire repo:
```sh
npm run lint
```
- Auto-fix lint issues where possible:
```sh
npm run lint:fix
```
- Format code:
```sh
npm run format
```
Notes:
- Many workspace packages also expose the same scripts (`lint`, `lint:fix`, and `format`).
- TypeScript type-checking still runs separately via `tsc --noEmit` in relevant packages.
-21
View File
@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2024 Yaak
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+13
View File
@@ -0,0 +1,13 @@
.PHONY: sqlx-prepare, dev, migrate, build
sqlx-prepare:
cd src-tauri && cargo sqlx prepare --database-url 'sqlite://db.sqlite'
dev:
npm run tauri-dev
migrate:
cd src-tauri && cargo sqlx migrate run --database-url 'sqlite://db.sqlite?mode=rw'
build:
./node_modules/.bin/tauri build
+12 -66
View File
@@ -1,70 +1,16 @@
<p align="center"> # Yaak Network Toolkit
<a href="https://github.com/JamesIves/github-sponsors-readme-action">
<img width="200px" src="https://github.com/mountain-loop/yaak/raw/main/crates-tauri/yaak-app/icons/icon.png">
</a>
</p>
<h1 align="center"> The most fun you'll ever have working with APIs.
💫 Yaak ➟ Desktop API Client 💫
</h1>
<p align="center"> ## Common Commands
A fast, privacy-first API client for REST, GraphQL, SSE, WebSocket, and gRPC built with Tauri, Rust, and React.
</p>
<p align="center">
Development is funded by community-purchased <a href="https://yaak.app/pricing">licenses</a>. You can also <a href="https://github.com/sponsors/gschier">become a sponsor</a> to have your logo appear below. 💖
</p>
<br>
```sh
# Start dev app
npm run tauri-dev
# Migration commands
<p align="center"> cd src-tauri
<!-- sponsors-premium --><a href="https://github.com/MVST-Solutions"><img src="https:&#x2F;&#x2F;github.com&#x2F;MVST-Solutions.png" width="80px" alt="User avatar: MVST-Solutions" /></a>&nbsp;&nbsp;<a href="https://github.com/dharsanb"><img src="https:&#x2F;&#x2F;github.com&#x2F;dharsanb.png" width="80px" alt="User avatar: dharsanb" /></a>&nbsp;&nbsp;<a href="https://github.com/railwayapp"><img src="https:&#x2F;&#x2F;github.com&#x2F;railwayapp.png" width="80px" alt="User avatar: railwayapp" /></a>&nbsp;&nbsp;<a href="https://github.com/caseyamcl"><img src="https:&#x2F;&#x2F;github.com&#x2F;caseyamcl.png" width="80px" alt="User avatar: caseyamcl" /></a>&nbsp;&nbsp;<a href="https://github.com/bytebase"><img src="https:&#x2F;&#x2F;github.com&#x2F;bytebase.png" width="80px" alt="User avatar: bytebase" /></a>&nbsp;&nbsp;<a href="https://github.com/"><img src="https:&#x2F;&#x2F;raw.githubusercontent.com&#x2F;JamesIves&#x2F;github-sponsors-readme-action&#x2F;dev&#x2F;.github&#x2F;assets&#x2F;placeholder.png" width="80px" alt="User avatar: " /></a>&nbsp;&nbsp;<!-- sponsors-premium --> cargo sqlx migrate add ${MIGRATION_NAME}
</p> cargo sqlx migrate run --database-url 'sqlite://db.sqlite?mode=rw'
<p align="center"> cargo sqlx prepare --database-url 'sqlite://db.sqlite'
<!-- sponsors-base --><a href="https://github.com/seanwash"><img src="https:&#x2F;&#x2F;github.com&#x2F;seanwash.png" width="50px" alt="User avatar: seanwash" /></a>&nbsp;&nbsp;<a href="https://github.com/jerath"><img src="https:&#x2F;&#x2F;github.com&#x2F;jerath.png" width="50px" alt="User avatar: jerath" /></a>&nbsp;&nbsp;<a href="https://github.com/itsa-sh"><img src="https:&#x2F;&#x2F;github.com&#x2F;itsa-sh.png" width="50px" alt="User avatar: itsa-sh" /></a>&nbsp;&nbsp;<a href="https://github.com/dmmulroy"><img src="https:&#x2F;&#x2F;github.com&#x2F;dmmulroy.png" width="50px" alt="User avatar: dmmulroy" /></a>&nbsp;&nbsp;<a href="https://github.com/timcole"><img src="https:&#x2F;&#x2F;github.com&#x2F;timcole.png" width="50px" alt="User avatar: timcole" /></a>&nbsp;&nbsp;<a href="https://github.com/VLZH"><img src="https:&#x2F;&#x2F;github.com&#x2F;VLZH.png" width="50px" alt="User avatar: VLZH" /></a>&nbsp;&nbsp;<a href="https://github.com/terasaka2k"><img src="https:&#x2F;&#x2F;github.com&#x2F;terasaka2k.png" width="50px" alt="User avatar: terasaka2k" /></a>&nbsp;&nbsp;<a href="https://github.com/andriyor"><img src="https:&#x2F;&#x2F;github.com&#x2F;andriyor.png" width="50px" alt="User avatar: andriyor" /></a>&nbsp;&nbsp;<a href="https://github.com/majudhu"><img src="https:&#x2F;&#x2F;github.com&#x2F;majudhu.png" width="50px" alt="User avatar: majudhu" /></a>&nbsp;&nbsp;<a href="https://github.com/axelrindle"><img src="https:&#x2F;&#x2F;github.com&#x2F;axelrindle.png" width="50px" alt="User avatar: axelrindle" /></a>&nbsp;&nbsp;<a href="https://github.com/jirizverina"><img src="https:&#x2F;&#x2F;github.com&#x2F;jirizverina.png" width="50px" alt="User avatar: jirizverina" /></a>&nbsp;&nbsp;<a href="https://github.com/chip-well"><img src="https:&#x2F;&#x2F;github.com&#x2F;chip-well.png" width="50px" alt="User avatar: chip-well" /></a>&nbsp;&nbsp;<a href="https://github.com/GRAYAH"><img src="https:&#x2F;&#x2F;github.com&#x2F;GRAYAH.png" width="50px" alt="User avatar: GRAYAH" /></a>&nbsp;&nbsp;<!-- sponsors-base --> ```
</p>
![Yaak API Client](https://yaak.app/static/screenshot.png)
## Features
Yaak is an offline-first API client designed to stay out of your way while giving you everything you need when you need it.
Built with [Tauri](https://tauri.app), Rust, and React, its fast, lightweight, and private. No telemetry, no VC funding, and no cloud lock-in.
### 🌐 Work with any API
- Import collections from Postman, Insomnia, OpenAPI, Swagger, or Curl.
- Send requests via REST, GraphQL, gRPC, WebSocket, or Server-Sent Events.
- Filter and inspect responses with JSONPath or XPath.
### 🔐 Stay secure
- Use OAuth 2.0, JWT, Basic Auth, or custom plugins for authentication.
- Secure sensitive values with encrypted secrets.
- Store secrets in your OS keychain.
### ☁️ Organize & collaborate
- Group requests into workspaces and nested folders.
- Use environment variables to switch between dev, staging, and prod.
- Mirror workspaces to your filesystem for versioning in Git or syncing with Dropbox.
### 🧩 Extend & customize
- Insert dynamic values like UUIDs or timestamps with template tags.
- Pick from built-in themes or build your own.
- Create plugins to extend authentication, template tags, or the UI.
## Contribution Policy
Yaak is open source but only accepting contributions for bug fixes. To get started,
visit [`DEVELOPMENT.md`](DEVELOPMENT.md) for tips on setting up your environment.
## Useful Resources
- [Feedback and Bug Reports](https://feedback.yaak.app)
- [Documentation](https://yaak.app/docs)
- [Yaak vs Postman](https://yaak.app/alternatives/postman)
- [Yaak vs Bruno](https://yaak.app/alternatives/bruno)
- [Yaak vs Insomnia](https://yaak.app/alternatives/insomnia)
-53
View File
@@ -1,53 +0,0 @@
{
"$schema": "https://biomejs.dev/schemas/2.3.11/schema.json",
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"a11y": {
"useKeyWithClickEvents": "off"
}
}
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 100,
"bracketSpacing": true
},
"css": {
"parser": {
"tailwindDirectives": true
},
"linter": {
"enabled": false
}
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"jsxQuoteStyle": "double",
"trailingCommas": "all",
"semicolons": "always"
}
},
"files": {
"includes": [
"**",
"!**/node_modules",
"!**/dist",
"!**/build",
"!target",
"!scripts",
"!crates",
"!crates-tauri",
"!src-web/tailwind.config.cjs",
"!src-web/postcss.config.cjs",
"!src-web/vite.config.ts",
"!src-web/routeTree.gen.ts",
"!packages/plugin-runtime-types/lib",
"!**/bindings"
]
}
}
-22
View File
@@ -1,22 +0,0 @@
[package]
name = "yaak-cli"
version = "0.1.0"
edition = "2024"
publish = false
[[bin]]
name = "yaakcli"
path = "src/main.rs"
[dependencies]
clap = { version = "4", features = ["derive"] }
dirs = "6"
env_logger = "0.11"
log = { workspace = true }
serde_json = { workspace = true }
tokio = { workspace = true, features = ["rt-multi-thread", "macros"] }
yaak-crypto = { workspace = true }
yaak-http = { workspace = true }
yaak-models = { workspace = true }
yaak-plugins = { workspace = true }
yaak-templates = { workspace = true }
-409
View File
@@ -1,409 +0,0 @@
use clap::{Parser, Subcommand};
use log::info;
use serde_json::Value;
use std::collections::BTreeMap;
use std::path::PathBuf;
use std::sync::Arc;
use tokio::sync::mpsc;
use yaak_crypto::manager::EncryptionManager;
use yaak_http::path_placeholders::apply_path_placeholders;
use yaak_http::sender::{HttpSender, ReqwestSender};
use yaak_http::types::{SendableHttpRequest, SendableHttpRequestOptions};
use yaak_models::models::{HttpRequest, HttpRequestHeader, HttpUrlParameter};
use yaak_models::render::make_vars_hashmap;
use yaak_models::util::UpdateSource;
use yaak_plugins::events::{PluginContext, RenderPurpose};
use yaak_plugins::manager::PluginManager;
use yaak_plugins::template_callback::PluginTemplateCallback;
use yaak_templates::{RenderOptions, parse_and_render, render_json_value_raw};
#[derive(Parser)]
#[command(name = "yaakcli")]
#[command(about = "Yaak CLI - API client from the command line")]
struct Cli {
/// Use a custom data directory
#[arg(long, global = true)]
data_dir: Option<PathBuf>,
/// Environment ID to use for variable substitution
#[arg(long, short, global = true)]
environment: Option<String>,
/// Enable verbose logging
#[arg(long, short, global = true)]
verbose: bool,
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
/// List all workspaces
Workspaces,
/// List requests in a workspace
Requests {
/// Workspace ID
workspace_id: String,
},
/// Send an HTTP request by ID
Send {
/// Request ID
request_id: String,
},
/// Send a GET request to a URL
Get {
/// URL to request
url: String,
},
/// Create a new HTTP request
Create {
/// Workspace ID
workspace_id: String,
/// Request name
#[arg(short, long)]
name: String,
/// HTTP method
#[arg(short, long, default_value = "GET")]
method: String,
/// URL
#[arg(short, long)]
url: String,
},
}
/// Render an HTTP request with template variables and plugin functions
async fn render_http_request(
r: &HttpRequest,
environment_chain: Vec<yaak_models::models::Environment>,
cb: &PluginTemplateCallback,
opt: &RenderOptions,
) -> yaak_templates::error::Result<HttpRequest> {
let vars = &make_vars_hashmap(environment_chain);
let mut url_parameters = Vec::new();
for p in r.url_parameters.clone() {
if !p.enabled {
continue;
}
url_parameters.push(HttpUrlParameter {
enabled: p.enabled,
name: parse_and_render(p.name.as_str(), vars, cb, opt).await?,
value: parse_and_render(p.value.as_str(), vars, cb, opt).await?,
id: p.id,
})
}
let mut headers = Vec::new();
for p in r.headers.clone() {
if !p.enabled {
continue;
}
headers.push(HttpRequestHeader {
enabled: p.enabled,
name: parse_and_render(p.name.as_str(), vars, cb, opt).await?,
value: parse_and_render(p.value.as_str(), vars, cb, opt).await?,
id: p.id,
})
}
let mut body = BTreeMap::new();
for (k, v) in r.body.clone() {
body.insert(k, render_json_value_raw(v, vars, cb, opt).await?);
}
let authentication = {
let mut disabled = false;
let mut auth = BTreeMap::new();
match r.authentication.get("disabled") {
Some(Value::Bool(true)) => {
disabled = true;
}
Some(Value::String(tmpl)) => {
disabled = parse_and_render(tmpl.as_str(), vars, cb, opt)
.await
.unwrap_or_default()
.is_empty();
info!(
"Rendering authentication.disabled as a template: {disabled} from \"{tmpl}\""
);
}
_ => {}
}
if disabled {
auth.insert("disabled".to_string(), Value::Bool(true));
} else {
for (k, v) in r.authentication.clone() {
if k == "disabled" {
auth.insert(k, Value::Bool(false));
} else {
auth.insert(k, render_json_value_raw(v, vars, cb, opt).await?);
}
}
}
auth
};
let url = parse_and_render(r.url.clone().as_str(), vars, cb, opt).await?;
// Apply path placeholders (e.g., /users/:id -> /users/123)
let (url, url_parameters) = apply_path_placeholders(&url, &url_parameters);
Ok(HttpRequest { url, url_parameters, headers, body, authentication, ..r.to_owned() })
}
#[tokio::main]
async fn main() {
let cli = Cli::parse();
// Initialize logging
if cli.verbose {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
}
// Use the same app_id for both data directory and keyring
let app_id = if cfg!(debug_assertions) { "app.yaak.desktop.dev" } else { "app.yaak.desktop" };
let data_dir = cli.data_dir.unwrap_or_else(|| {
dirs::data_dir().expect("Could not determine data directory").join(app_id)
});
let db_path = data_dir.join("db.sqlite");
let blob_path = data_dir.join("blobs.sqlite");
let (query_manager, _blob_manager, _rx) =
yaak_models::init_standalone(&db_path, &blob_path).expect("Failed to initialize database");
let db = query_manager.connect();
// Initialize encryption manager for secure() template function
// Use the same app_id as the Tauri app for keyring access
let encryption_manager = Arc::new(EncryptionManager::new(query_manager.clone(), app_id));
// Initialize plugin manager for template functions
let vendored_plugin_dir = data_dir.join("vendored-plugins");
let installed_plugin_dir = data_dir.join("installed-plugins");
// Use system node for CLI (must be in PATH)
let node_bin_path = PathBuf::from("node");
// Find the plugin runtime - check YAAK_PLUGIN_RUNTIME env var, then fallback to development path
let plugin_runtime_main =
std::env::var("YAAK_PLUGIN_RUNTIME").map(PathBuf::from).unwrap_or_else(|_| {
// Development fallback: look relative to crate root
PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("../../crates-tauri/yaak-app/vendored/plugin-runtime/index.cjs")
});
// Create plugin manager (plugins may not be available in CLI context)
let plugin_manager = Arc::new(
PluginManager::new(
vendored_plugin_dir,
installed_plugin_dir,
node_bin_path,
plugin_runtime_main,
false,
)
.await,
);
// Initialize plugins from database
let plugins = db.list_plugins().unwrap_or_default();
if !plugins.is_empty() {
let errors =
plugin_manager.initialize_all_plugins(plugins, &PluginContext::new_empty()).await;
for (plugin_dir, error_msg) in errors {
eprintln!("Warning: Failed to initialize plugin '{}': {}", plugin_dir, error_msg);
}
}
match cli.command {
Commands::Workspaces => {
let workspaces = db.list_workspaces().expect("Failed to list workspaces");
if workspaces.is_empty() {
println!("No workspaces found");
} else {
for ws in workspaces {
println!("{} - {}", ws.id, ws.name);
}
}
}
Commands::Requests { workspace_id } => {
let requests = db.list_http_requests(&workspace_id).expect("Failed to list requests");
if requests.is_empty() {
println!("No requests found in workspace {}", workspace_id);
} else {
for req in requests {
println!("{} - {} {}", req.id, req.method, req.name);
}
}
}
Commands::Send { request_id } => {
let request = db.get_http_request(&request_id).expect("Failed to get request");
// Resolve environment chain for variable substitution
let environment_chain = db
.resolve_environments(
&request.workspace_id,
request.folder_id.as_deref(),
cli.environment.as_deref(),
)
.unwrap_or_default();
// Create template callback with plugin support
let plugin_context = PluginContext::new(None, Some(request.workspace_id.clone()));
let template_callback = PluginTemplateCallback::new(
plugin_manager.clone(),
encryption_manager.clone(),
&plugin_context,
RenderPurpose::Send,
);
// Render templates in the request
let rendered_request = render_http_request(
&request,
environment_chain,
&template_callback,
&RenderOptions::throw(),
)
.await
.expect("Failed to render request templates");
if cli.verbose {
println!("> {} {}", rendered_request.method, rendered_request.url);
}
// Convert to sendable request
let sendable = SendableHttpRequest::from_http_request(
&rendered_request,
SendableHttpRequestOptions::default(),
)
.await
.expect("Failed to build request");
// Create event channel for progress
let (event_tx, mut event_rx) = mpsc::channel(100);
// Spawn task to print events if verbose
let verbose = cli.verbose;
let verbose_handle = if verbose {
Some(tokio::spawn(async move {
while let Some(event) = event_rx.recv().await {
println!("{}", event);
}
}))
} else {
// Drain events silently
tokio::spawn(async move { while event_rx.recv().await.is_some() {} });
None
};
// Send the request
let sender = ReqwestSender::new().expect("Failed to create HTTP client");
let response = sender.send(sendable, event_tx).await.expect("Failed to send request");
// Wait for event handler to finish
if let Some(handle) = verbose_handle {
let _ = handle.await;
}
// Print response
if verbose {
println!();
}
println!(
"HTTP {} {}",
response.status,
response.status_reason.as_deref().unwrap_or("")
);
if verbose {
for (name, value) in &response.headers {
println!("{}: {}", name, value);
}
println!();
}
// Print body
let (body, _stats) = response.text().await.expect("Failed to read response body");
println!("{}", body);
}
Commands::Get { url } => {
if cli.verbose {
println!("> GET {}", url);
}
// Build a simple GET request
let sendable = SendableHttpRequest {
url: url.clone(),
method: "GET".to_string(),
headers: vec![],
body: None,
options: SendableHttpRequestOptions::default(),
};
// Create event channel for progress
let (event_tx, mut event_rx) = mpsc::channel(100);
// Spawn task to print events if verbose
let verbose = cli.verbose;
let verbose_handle = if verbose {
Some(tokio::spawn(async move {
while let Some(event) = event_rx.recv().await {
println!("{}", event);
}
}))
} else {
tokio::spawn(async move { while event_rx.recv().await.is_some() {} });
None
};
// Send the request
let sender = ReqwestSender::new().expect("Failed to create HTTP client");
let response = sender.send(sendable, event_tx).await.expect("Failed to send request");
if let Some(handle) = verbose_handle {
let _ = handle.await;
}
// Print response
if verbose {
println!();
}
println!(
"HTTP {} {}",
response.status,
response.status_reason.as_deref().unwrap_or("")
);
if verbose {
for (name, value) in &response.headers {
println!("{}: {}", name, value);
}
println!();
}
// Print body
let (body, _stats) = response.text().await.expect("Failed to read response body");
println!("{}", body);
}
Commands::Create { workspace_id, name, method, url } => {
let request = HttpRequest {
workspace_id,
name,
method: method.to_uppercase(),
url,
..Default::default()
};
let created = db
.upsert_http_request(&request, &UpdateSource::Sync)
.expect("Failed to create request");
println!("Created request: {}", created.id);
}
}
// Terminate plugin manager gracefully
plugin_manager.terminate().await;
}
-10
View File
@@ -1,10 +0,0 @@
# Generated by Cargo
# will have compiled files and executables
target/
vendored/*
gen/*
**/permissions/autogenerated
**/permissions/schemas
-76
View File
@@ -1,76 +0,0 @@
[package]
name = "yaak-app"
version = "0.0.0"
edition = "2024"
authors = ["Gregory Schier"]
publish = false
# Produce a library for mobile support
[lib]
name = "tauri_app_lib"
crate-type = ["staticlib", "cdylib", "lib"]
[features]
cargo-clippy = []
default = []
updater = []
license = ["yaak-license"]
[build-dependencies]
tauri-build = { version = "2.5.3", features = [] }
[target.'cfg(target_os = "linux")'.dependencies]
openssl-sys = { version = "0.9.105", features = ["vendored"] } # For Ubuntu installation to work
[dependencies]
charset = "0.1.5"
chrono = { workspace = true, features = ["serde"] }
cookie = "0.18.1"
eventsource-client = { git = "https://github.com/yaakapp/rust-eventsource-client", version = "0.14.0" }
http = { version = "1.2.0", default-features = false }
log = { workspace = true }
md5 = "0.8.0"
r2d2 = "0.8.10"
r2d2_sqlite = "0.25.0"
mime_guess = "2.0.5"
rand = "0.9.0"
reqwest = { workspace = true, features = ["multipart", "gzip", "brotli", "deflate", "json", "rustls-tls-manual-roots-no-provider", "socks", "http2"] }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, features = ["raw_value"] }
tauri = { workspace = true, features = ["devtools", "protocol-asset"] }
tauri-plugin-clipboard-manager = "2.3.2"
tauri-plugin-deep-link = "2.4.5"
tauri-plugin-dialog = { workspace = true }
tauri-plugin-fs = "2.4.4"
tauri-plugin-log = { version = "2.7.1", features = ["colored"] }
tauri-plugin-opener = "2.5.2"
tauri-plugin-os = "2.3.2"
tauri-plugin-shell = { workspace = true }
tauri-plugin-single-instance = { version = "2.3.6", features = ["deep-link"] }
tauri-plugin-updater = "2.9.0"
tauri-plugin-window-state = "2.4.1"
thiserror = { workspace = true }
tokio = { workspace = true, features = ["sync"] }
tokio-stream = "0.1.17"
tokio-tungstenite = { version = "0.26.2", default-features = false }
url = "2"
tokio-util = { version = "0.7", features = ["codec"] }
ts-rs = { workspace = true }
uuid = "1.12.1"
yaak-common = { workspace = true }
yaak-tauri-utils = { workspace = true }
yaak-core = { workspace = true }
yaak-crypto = { workspace = true }
yaak-fonts = { workspace = true }
yaak-git = { workspace = true }
yaak-grpc = { workspace = true }
yaak-http = { workspace = true }
yaak-license = { workspace = true, optional = true }
yaak-mac-window = { workspace = true }
yaak-models = { workspace = true }
yaak-plugins = { workspace = true }
yaak-sse = { workspace = true }
yaak-sync = { workspace = true }
yaak-templates = { workspace = true }
yaak-tls = { workspace = true }
yaak-ws = { workspace = true }
@@ -1,3 +0,0 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type WatchResult = { unlistenEvent: string, };
-17
View File
@@ -1,17 +0,0 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type PluginUpdateInfo = { name: string, currentVersion: string, latestVersion: string, };
export type PluginUpdateNotification = { updateCount: number, plugins: Array<PluginUpdateInfo>, };
export type UpdateInfo = { replyEventId: string, version: string, downloaded: boolean, };
export type UpdateResponse = { "type": "ack" } | { "type": "action", action: UpdateResponseAction, };
export type UpdateResponseAction = "install" | "skip";
export type WatchResult = { unlistenEvent: string, };
export type YaakNotification = { timestamp: string, timeout: number | null, id: string, title: string | null, message: string, color: string | null, action: YaakNotificationAction | null, };
export type YaakNotificationAction = { label: string, url: string, };
@@ -1,5 +0,0 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type PluginUpdateInfo = { name: string, currentVersion: string, latestVersion: string, };
export type PluginUpdateNotification = { updateCount: number, plugins: Array<PluginUpdateInfo>, };
@@ -1,57 +0,0 @@
{
"identifier": "default",
"description": "Default capabilities for all build variants",
"windows": [
"*"
],
"permissions": [
"core:app:allow-identifier",
"core:event:allow-emit",
"core:event:allow-listen",
"core:event:allow-unlisten",
"core:path:allow-resolve-directory",
"core:path:allow-basename",
"os:allow-os-type",
"clipboard-manager:allow-clear",
"clipboard-manager:allow-write-text",
"clipboard-manager:allow-read-text",
"dialog:allow-open",
"dialog:allow-save",
"fs:allow-read-dir",
"fs:allow-read-file",
"fs:allow-read-text-file",
{
"identifier": "fs:scope",
"allow": [
{
"path": "$APPDATA"
},
{
"path": "$APPDATA/**"
}
]
},
"clipboard-manager:allow-read-text",
"clipboard-manager:allow-write-text",
"core:webview:allow-set-webview-zoom",
"core:window:allow-close",
"core:window:allow-internal-toggle-maximize",
"core:window:allow-is-fullscreen",
"core:window:allow-is-maximized",
"core:window:allow-maximize",
"core:window:allow-minimize",
"core:window:allow-set-decorations",
"core:window:allow-set-title",
"core:window:allow-show",
"core:window:allow-start-dragging",
"core:window:allow-theme",
"core:window:allow-unmaximize",
"opener:allow-default-urls",
"opener:allow-open-path",
"opener:allow-open-url",
"opener:allow-reveal-item-in-dir",
"shell:allow-open",
"yaak-fonts:default",
"yaak-mac-window:default"
]
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 848 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Some files were not shown because too many files have changed in this diff Show More