Compare commits

...

1265 Commits

Author SHA1 Message Date
Gregory Schier
3ecfb15c89 Fix lint 2024-11-16 15:31:14 -08:00
Gregory Schier
23c026126f Tweak schema menu 2024-11-16 15:17:26 -08:00
Gregory Schier
ff9abab547 More control over GraphQL introspection 2024-11-16 14:27:13 -08:00
Gregory Schier
c9c48c77e4 Update Tauri deps 2024-11-16 13:56:32 -08:00
Hao Xiang
83efc58f29 don't lost request's name and folder when updated by curl (#131) 2024-11-14 14:03:22 -08:00
Gregory Schier
632e1ff091 Update README.md 2024-11-12 19:31:55 -08:00
Gregory Schier
40286756b9 Update README.md 2024-11-11 07:48:39 -08:00
Hao Xiang
1050ac5e3c fix(grpc): proto dep topo order to solve panic (#130) 2024-10-29 14:19:11 -07:00
Gregory Schier
6d2c3712c0 Fix active cookie jar and improve routing 2024-10-28 10:06:43 -07:00
Gregory Schier
4a52095033 Better template function fetching 2024-10-24 08:17:58 -07:00
Gregory Schier
55b12d7329 Try fix for template tags not re-fetching on Windows 2024-10-24 07:47:20 -07:00
Gregory Schier
f4240e5229 Prevent bg flash on context menu in sidebar 2024-10-23 10:07:31 -07:00
Gregory Schier
7759649963 Update local model stores in all mutations (#129) 2024-10-23 09:54:43 -07:00
Gregory Schier
c5e6d6f2cb Some tweaks to request deletion 2024-10-23 06:27:38 -07:00
Gregory Schier
ec850f2cf0 Properly handle charset in content-type 2024-10-23 05:49:14 -07:00
Gregory Schier
ff52ad5345 Handle quotes around charset 2024-10-23 05:44:37 -07:00
Gregory Schier
5de50c70c6 Fix workspace/request creation race 2024-10-22 14:27:12 -07:00
Gregory Schier
94f8949ca2 Fix formatter < 0 error 2024-10-22 14:26:45 -07:00
Gregory Schier
44fc3c8d2d Add formatter test for escaped characters 2024-10-22 08:11:03 -07:00
Gregory Schier
57a05d5486 Fix up some of the new formatting stuff 2024-10-22 08:07:56 -07:00
Gregory Schier
e216214085 Custom JSON formatter that works with template syntax (#128) 2024-10-21 15:17:14 -07:00
Gregory Schier
aa7f18a16f Order cmd+k results by match score 2024-10-21 12:54:15 -07:00
Gregory Schier
b9f397e04a Fix response filtering 2024-10-21 07:26:50 -07:00
Gregory Schier
57c3a86799 Animate up instead of down when dropdowns open up 2024-10-18 11:22:05 -07:00
Gregory Schier
52ac41b0c6 Move elapsed calculation 2024-10-18 10:53:04 -07:00
Gregory Schier
741ccbe741 Add labels to plugin event subscribers 2024-10-18 10:46:30 -07:00
Gregory Schier
2ecd86da78 Update README.md 2024-10-18 08:27:24 -07:00
Gregory Schier
30e4e7665a Remove ios config 2024-10-18 07:59:28 -07:00
Gregory Schier
516dfd1f19 Fix GraphQL introspection 2024-10-18 06:57:44 -07:00
Gregory Schier
0cd08499aa Render sending gRPC events 2024-10-17 12:03:35 -07:00
Gregory Schier
c652df82a3 Fix SSE event selection 2024-10-17 11:28:10 -07:00
Gregory Schier
c8342fb0a9 Delete send history for workspace 2024-10-17 11:17:27 -07:00
Gregory Schier
d0b59a0fb4 Show folder structure in request selection 2024-10-17 10:53:48 -07:00
Gregory Schier
6f50f35519 Bump Tauri to fix macOS 13 launch issue 2024-10-15 09:54:21 -07:00
Gregory Schier
4e775b2b49 Undo minimumSystemVersion 2024-10-15 07:49:27 -07:00
Gregory Schier
e77a9e5d44 Rebuild plugins 2024-10-15 07:48:26 -07:00
Gregory Schier
a381e44d8c Prevent stale content flash after editing request name 2024-10-15 07:32:00 -07:00
Gregory Schier
4acf0969e8 Only sync models from active workspace 2024-10-15 07:31:42 -07:00
Gregory Schier
30c4178269 Disable autocomplete/correct/etc in plain input 2024-10-14 21:46:48 -07:00
Gregory Schier
dffe6e0a16 Intelligent readonly editor updates, to preserve scroll 2024-10-14 10:40:09 -07:00
Gregory Schier
8090e67b9e Revert hyper v1 for gRPC 2024-10-12 22:05:17 -07:00
Gregory Schier
f1beabcb6f Try again 2024-10-12 21:33:45 -07:00
Gregory Schier
647b8e2313 Try fix windows build 2024-10-12 21:17:44 -07:00
Gregory Schier
f5b4697608 Npm i 2024-10-12 21:06:19 -07:00
Gregory Schier
f201857d51 Bump Tauri to fix settings window 2024-10-12 20:57:01 -07:00
Gregory Schier
0d982057a5 Add proxy setting for HTTP requests (#127) 2024-10-12 20:55:09 -07:00
Gregory Schier
6fb94384b9 Better fuzzy matching in cmd palette 2024-10-12 07:41:01 -07:00
Gregory Schier
d754e7233d Server sent event response viewer (#126) 2024-10-11 06:52:32 -07:00
Gregory Schier
f974a66086 Fix double-click-maximize and backdrop 2024-10-10 07:11:43 -07:00
Gregory Schier
250625fc0e Always show window controls, and open Linux settings in dialog 2024-10-10 06:22:11 -07:00
Gregory Schier
16e090b520 Fix content type detection 2024-10-09 17:20:09 -07:00
Gregory Schier
be9fbbcb6e Fix content type detection 2024-10-09 17:19:41 -07:00
Gregory Schier
8be3c3d0e1 Disable response copy until response is done 2024-10-09 16:38:12 -07:00
Gregory Schier
c680e15cb5 Max width on request name in header 2024-10-09 16:38:03 -07:00
Gregory Schier
da6baf72f5 Response Streaming (#124) 2024-10-09 16:27:37 -07:00
Gregory Schier
2ca30bcb31 Fix Codemirror undo history 2024-10-09 12:00:52 -07:00
Gregory Schier
2e2b3128c5 Fix cookie jar query 2024-10-09 11:26:19 -07:00
Gregory Schier
4a81818d05 Add descriptions to template functions 2024-10-09 11:25:51 -07:00
Gregory Schier
0eb98a3882 Log query errors 2024-10-09 11:25:05 -07:00
Gregory Schier
d28100d682 Add new plugins 2024-10-09 09:54:15 -07:00
Gregory Schier
0f4d3bdbb5 Allow space in dropdown filter text 2024-10-09 09:54:07 -07:00
Gregory Schier
c7eccddac9 Fix performance related to having 100s of requests (#123) 2024-10-08 14:16:57 -07:00
Gregory Schier
4b7712df80 Better Dropdown size calculation for scrolling when not enough room 2024-10-02 16:17:28 -07:00
Gregory Schier
e5c6c31e02 Fix prompt again 2024-10-02 12:53:58 -07:00
Gregory Schier
7e62bb6b68 Fix prompt 2024-10-02 12:19:43 -07:00
Gregory Schier
3b2ee25d75 Fix tauri dialog API usage 2024-10-02 11:45:42 -07:00
Gregory Schier
4a9e2ac9b6 Specify minimum macOS version 13 in tauri conf 2024-10-02 11:39:48 -07:00
Gregory Schier
d890b8be0a Tauri 2.0.0 stable 2024-10-02 11:30:39 -07:00
Gregory Schier
bb1ba93676 Better KeyValueRow sizing 2024-10-02 11:22:20 -07:00
Gregory Schier
f8c3f71cfe Increase node download timeout 2024-10-02 10:14:51 -07:00
Gregory Schier
c9050bd3bb Add CLI to release.yml 2024-10-02 10:04:21 -07:00
Gregory Schier
d0fe1beee0 Fix lint errors 2024-10-02 10:00:58 -07:00
Gregory Schier
e401e8f1cf Fix response header table sizing 2024-10-02 08:22:38 -07:00
Gregory Schier
4160e5b1c4 Make prompt() to return null on cancel 2024-10-02 05:54:44 -07:00
Gregory Schier
89ff25cd54 Fix variables in bulk editor 2024-10-02 05:10:34 -07:00
Gregory Schier
7a941016a9 Fix plugin types 2024-10-01 11:02:38 -07:00
Gregory Schier
7e4f807f75 Add prompt() plugin API (#121) 2024-10-01 08:32:42 -07:00
Gregory Schier
be60e4648a Apply Request path parameters during render (#120) 2024-10-01 08:26:59 -07:00
Gregory Schier
6060ddcd87 Add aliases field to template functions 2024-09-30 18:28:52 -07:00
Gregory Schier
9915c57817 Plugin execution context (#119) 2024-09-30 17:45:51 -07:00
Gregory Schier
917adcfb2e Better plugin development experience (#118) 2024-09-29 10:41:07 -07:00
Gregory Schier
1c5e62a468 Set max-width on toast 2024-09-29 07:20:56 -07:00
Gregory Schier
f5e8c525e9 Add brackets to URL regex 2024-09-28 14:31:18 -07:00
Gregory Schier
6583615885 Update package.json 2024-09-27 06:01:31 -07:00
Gregory Schier
0f0eba244c Update config.yml 2024-09-27 05:59:23 -07:00
Gregory Schier
3911b7b583 Update README.md 2024-09-27 05:58:29 -07:00
Gregory Schier
3634d315ed Update config.yml 2024-09-27 05:49:58 -07:00
Gregory Schier
89b85c2e27 Update issue description 2024-09-27 05:49:20 -07:00
Gregory Schier
bbff3f5969 Remove bug report template 2024-09-27 05:47:24 -07:00
Gregory Schier
eb8f66dca2 Add npm start command back 2024-09-27 05:46:12 -07:00
Gregory Schier
08531fa1ff Update development doc 2024-09-27 05:45:48 -07:00
i-usebruno
662bc41cb3 Improve dev docs (#117)
Co-authored-by: i-usebruno <anon.repressed498@passinbox.com>
Co-authored-by: Gregory Schier <gschier1990@gmail.com>
2024-09-27 05:34:15 -07:00
Gregory Schier
974425afee Fix JSONPath/XPath filtering 2024-09-26 06:45:03 -07:00
Gregory Schier
9f7f06a142 Don't adhere to wrapLines in single-line inputs 2024-09-25 22:16:35 -07:00
Gregory Schier
598bbd6f69 Prevent theme flashing on initial window load (#115) 2024-09-25 14:01:24 -07:00
Gregory Schier
b19748c42e Make settings menu a regular window (#113) 2024-09-25 12:52:12 -07:00
Gregory Schier
2be45d6101 Simpler Tauri resource paths (#112) 2024-09-25 09:25:51 -07:00
Gregory Schier
d2c33f821c Preserve invalid GraphQL variables (#111) 2024-09-25 09:02:31 -07:00
Gregory Schier
215fcef3ea bump 2024-09-25 08:08:49 -07:00
Gregory Schier
7d97404c11 Improved querystring import on paste (#110) 2024-09-25 08:03:19 -07:00
Gregory Schier
de7097ff1d Faster time-to-theme (#109) 2024-09-25 07:35:27 -07:00
Gregory Schier
0100a3983d Code split <Workspace> and <Settings> routes 2024-09-24 11:18:39 -07:00
Gregory Schier
aa82ef8636 Revert codemirror-json-schema due to bundle bloat 2024-09-24 10:50:09 -07:00
Gregory Schier
4e316dcf60 Fix tauri-before-build 2024-09-24 10:29:23 -07:00
Gregory Schier
296221a22e Lazily render variables (#108) 2024-09-24 10:18:56 -07:00
Gregory Schier
3818154e82 Show all requests in template fn dialog 2024-09-24 07:14:36 -07:00
Gregory Schier
574a92f5b7 Only download protoc if necessary 2024-09-24 07:14:15 -07:00
Gregory Schier
44e5c2b1d7 Fix plugin runtime (response fn) deadlock 2024-09-24 07:13:34 -07:00
Gregory Schier
c938b62d35 Fix plugin runtime 2024-09-23 07:46:32 -07:00
Gregory Schier
9bb1e1232f Don't build internal TS packages 2024-09-23 07:22:25 -07:00
Gregory Schier
164865c845 Delete unused files 2024-09-23 07:05:17 -07:00
Gregory Schier
921f1de62a Bootstrap command 2024-09-22 22:17:45 -07:00
Gregory Schier
38b36b80a5 Fix Vite build dir 2024-09-22 21:59:31 -07:00
Gregory Schier
2ab4f79aed Fix scripts 2024-09-22 21:33:46 -07:00
Gregory Schier
101b6284d6 [WIP] Refactor to NPM workspaces (#104) 2024-09-22 21:27:10 -07:00
Gregory Schier
93633875ac snake_case icons and better toast styles 2024-09-20 07:30:11 -07:00
Gregory Schier
a18271d306 Sort Codemirror widgets Fixes #101 2024-09-20 05:45:04 -07:00
Gregory Schier
32d7af94a5 Fix environment dialog hotkey 2024-09-20 05:36:56 -07:00
Gregory Schier
48dbd5f9f8 Regenerate icons 2024-09-19 15:00:34 -07:00
Gregory Schier
085580b94a Add migration steps to DEVELOPMENT.md 2024-09-19 14:20:57 -07:00
Gregory Schier
53b8463223 All generated TS models in two files 2024-09-19 13:22:56 -07:00
Gregory Schier
3ee9ed8bf4 Env dropdown becomes button when no sub envs 2024-09-19 13:01:22 -07:00
Gregory Schier
ed368cd251 Fix pair editor adding new entry when clicking below 2024-09-19 08:55:35 -07:00
Gregory Schier
d9fb7f1b21 Fix autoSelect for PlainInput.tsx 2024-09-19 08:03:18 -07:00
Gregory Schier
1c6c979278 Use PlainInput for Prompt.tsx 2024-09-19 07:56:29 -07:00
Gregory Schier
17f835e713 Fix app header selection on double click 2024-09-19 07:53:17 -07:00
Gregory Schier
99e91a692b Fix lint issue 2024-09-19 06:27:02 -07:00
Gregory Schier
24ea76e753 Better native app styling. Hopefully this fixes the issue!
Fixes #97
2024-09-19 06:19:16 -07:00
Gregory Schier
1d9a001036 Only replace path params when starting with :
Fixes #99
2024-09-19 06:07:19 -07:00
Gregory Schier
7e056aa93a Maximize window on header double-click 2024-09-19 06:03:46 -07:00
Gregory Schier
6247603cec Fix gRPC basic auth encoding
Fixes #98
2024-09-19 06:00:33 -07:00
Gregory Schier
a3b64423fd Refactor plugin manager and gRPC server (#96) 2024-09-19 05:58:12 -07:00
Gregory Schier
844d795014 Namespaced template functions (#95) 2024-09-18 05:36:37 -07:00
dependabot[bot]
d48b29c6e9 Bump vite from 5.4.5 to 5.4.6 (#94)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-17 19:05:03 -07:00
Gregory Schier
e0c00579af Reload template functions on window focus 2024-09-17 09:48:53 -07:00
Gregory Schier
024edb6674 Cargo lock 2024-09-17 09:13:23 -07:00
Gregory Schier
4a79a67b8d Bump Tauri deps 2024-09-17 06:59:23 -07:00
Gregory Schier
61c333fd04 Fix Tauri config 2024-09-16 08:58:39 -07:00
Gregory Schier
94654cddef Update tauri config 2024-09-16 08:57:20 -07:00
Gregory Schier
2951023ee8 Fix all lint errors 2024-09-16 08:36:02 -07:00
Gregory Schier
974ecd511d Fix replacement 2024-09-16 08:11:38 -07:00
dependabot[bot]
606bfb6a83 Bump quinn-proto from 0.11.6 to 0.11.8 in /src-tauri (#91)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-16 08:08:56 -07:00
Gregory Schier
72649b670e Link to docs in plugin settings 2024-09-16 08:06:32 -07:00
Gregory Schier
d70c8be85d Add publisher/copyright 2024-09-16 06:45:42 -07:00
Gregory Schier
a55e27ec20 Remove unused Makefile 2024-09-16 06:41:13 -07:00
Gregory Schier
873d02ea37 Re-gen proto stuff 2024-09-16 06:35:46 -07:00
Gregory Schier
ebc45ca687 Account for zoom for macOS stoplight padding 2024-09-16 06:20:50 -07:00
Gregory Schier
8913833157 Parse and import querystring on paste (#89) 2024-09-15 11:41:26 -07:00
Samuel Marks
75552cbb7d Upgrade dependencies (#74) 2024-09-15 10:33:50 -07:00
Gregory Schier
ea67304151 Update README.md 2024-09-14 08:39:03 -07:00
Gregory Schier
db416cea31 Update README.md 2024-09-12 10:20:36 -07:00
Gregory Schier
a479c5627c Update README.md 2024-09-12 10:06:58 -07:00
Gregory Schier
fad2702218 Update bug-report.yml 2024-09-12 08:26:55 -07:00
Mohammed Kafeel Shahjahan Sheikh
95e7dc3e6c Update README.md (#82)
Minor spelling mistake change.

Co-authored-by: Gregory Schier <gschier1990@gmail.com>
2024-09-12 07:22:14 -07:00
Teymour Aldridge
6b76753f56 Update README.md (#83) 2024-09-12 07:21:19 -07:00
Gregory Schier
db344454be Merge remote-tracking branch 'origin/master' 2024-09-12 07:19:43 -07:00
Gregory Schier
590ea559e3 Make variable dialog more clear
Closes #73
2024-09-12 07:19:32 -07:00
Gregory Schier
f0f629f26f Update bug-report.yml 2024-09-12 07:17:45 -07:00
Gregory Schier
3d74d29775 Update bug-report.yml 2024-09-12 07:16:50 -07:00
Gregory Schier
aeb550034d Update config.yml 2024-09-12 07:11:28 -07:00
Gregory Schier
b8fdf7ec94 Update bug-report.yml 2024-09-12 07:11:02 -07:00
Gregory Schier
9900b09793 Update config.yml 2024-09-12 07:09:47 -07:00
Gregory Schier
31dc76727a Update config.yml 2024-09-12 07:08:29 -07:00
Gregory Schier
aab0386565 Require OS in bug report 2024-09-12 07:06:03 -07:00
Gregory Schier
77153525fb Update and rename bug-report.md to bug-report.yml 2024-09-12 07:04:40 -07:00
Gregory Schier
aeecac7ded Issue Template 2024-09-12 06:58:52 -07:00
Gregory Schier
b08750a72b Rename config.yaml to config.yml 2024-09-12 06:54:19 -07:00
Gregory Schier
a0c7090fda Create config.yaml 2024-09-12 06:53:41 -07:00
Gregory Schier
a805e39da9 Update issue templates 2024-09-12 06:51:46 -07:00
Michal Polko
65b7db873e Use padding for Basic auth (#77) 2024-09-11 22:26:03 -07:00
Gregory Schier
ed48e1d52a Fix * breaking response URL detection
Fixes #71
2024-09-11 07:34:58 -07:00
Gregory Schier
b5fa3efb9e Update README.md 2024-09-10 15:36:18 -07:00
Gregory Schier
b616c5d78f Create LICENSE 2024-09-10 11:29:31 -07:00
Gregory Schier
f7bf245a4c Update README.md 2024-09-10 10:38:43 -07:00
Gregory Schier
e1fdf174c1 Mention open source in README 2024-09-10 10:29:09 -07:00
Gregory Schier
7907dcc220 Don't notify twice 2024-09-09 15:44:35 -07:00
Gregory Schier
36890b9a32 Show toast after plugin reload 2024-09-09 12:36:05 -07:00
Gregory Schier
c0707bb246 Reload plugins on change 2024-09-09 11:34:52 -07:00
Gregory Schier
3bf192953d Update workflow 2024-09-06 11:09:03 -07:00
Gregory Schier
0c8953c471 Fix lint issues 2024-09-06 10:59:14 -07:00
Gregory Schier
c02aa4f2d0 Dynamic plugins (#68) 2024-09-06 10:43:25 -07:00
Gregory Schier
e4e888c47a Don't introspect schema on interval 2024-09-06 10:37:10 -07:00
Gregory Schier
d032495861 Bump plugin-runtime-types version 2024-09-06 06:32:35 -07:00
Gregory Schier
167a446ad8 re-gen plugin-runtime-types 2024-09-06 06:26:05 -07:00
Gregory Schier
74edadf7c4 Remove prints 2024-09-06 06:21:21 -07:00
Gregory Schier
021dceeac5 Fix import order for nested folders to prevent foreign key constraint error 2024-09-06 06:20:27 -07:00
Gregory Schier
c663537ca9 Support non-utf8 charsets 2024-09-05 13:58:06 -07:00
Gregory Schier
48b288b1a6 Fix banner overflow 2024-09-04 07:33:21 -07:00
Gregory Schier
9600d8ba1c Fix interface zoom 2024-09-03 14:37:44 -07:00
Gregory Schier
7ef264223f Create request/folder with proper folderId 2024-09-03 08:06:30 -07:00
Gregory Schier
d99fe98347 Separate active tabs per request 2024-09-03 07:52:35 -07:00
Gregory Schier
ff459d1570 Separate active tabs per request 2024-09-03 07:33:48 -07:00
Gregory Schier
7f952300b3 Print plugin dir on failure to read 2024-09-03 07:18:00 -07:00
Gregory Schier
90e2eb67e5 Clean up 2024-09-03 06:44:51 -07:00
Gregory Schier
942f959c36 Request pane context (#70) 2024-09-03 06:18:25 -07:00
Gregory Schier
0b9483954d Request pane context (#69) 2024-09-02 14:36:55 -07:00
Gregory Schier
3e8c556999 Fix white screen 2024-09-02 12:52:42 -07:00
Gregory Schier
155d0ce3ba Placeholder CM tags working 2024-09-02 12:35:05 -07:00
Gregory Schier
bdc0ecfcd8 Rename var 2024-08-30 05:39:58 -07:00
Gregory Schier
71d9e7ddb5 Check for updates less often on stable 2024-08-30 05:39:29 -07:00
Gregory Schier
737da7e0ae Only check for updates once per day 2024-08-30 05:36:30 -07:00
Gregory Schier
afa64acf83 URL path placeholders 2024-08-30 05:24:07 -07:00
Gregory Schier
b3865d383b Detect JSON APIs returning HTML content-type 2024-08-29 10:52:41 -07:00
Gregory Schier
fdc60445c8 Better content-type detection for editor 2024-08-29 06:07:31 -07:00
Gregory Schier
690ef02a38 Fix Windows/linux close icon color 2024-08-28 09:46:35 -07:00
Gregory Schier
a92a85be0d Kill plugin manager before NSIS update on Windows 2024-08-28 09:14:39 -07:00
Gregory Schier
5f1286ef6f Remove tauri "unstable" feature to fix Codemirror selection 2024-08-28 06:48:02 -07:00
Gregory Schier
ffd0010a59 Hotfix for window focusing 2024-08-27 16:56:04 -07:00
Gregory Schier
9320162e22 Special case Response()->response() 2024-08-26 15:26:43 -07:00
Gregory Schier
959ace8720 Clean up code 2024-08-26 15:10:29 -07:00
Gregory Schier
55122b042b Default template fn args 2024-08-26 13:10:22 -07:00
Gregory Schier
f404aa53c6 Option to disable telemetry 2024-08-26 12:06:56 -07:00
Gregory Schier
c80ebdb156 Node syntaxTree to parse template tags 2024-08-26 11:30:10 -07:00
Gregory Schier
6f6bec5764 Force codemirror to parse more to be able to show code folding 2024-08-23 14:09:28 -07:00
Gregory Schier
e89905fd04 Publish plugin-runtime-types 2024-08-23 13:37:47 -07:00
Gregory Schier
ad81d35c71 Fix recursive plugin call locking 2024-08-23 13:20:48 -07:00
Gregory Schier
e36f61b2c7 Surface plugin error on import 2024-08-23 11:53:40 -07:00
Gregory Schier
8d03ba5bdd Fix initial apply text 2024-08-22 12:49:42 -07:00
Gregory Schier
11f811d900 Switch to single quotes for template strings 2024-08-22 12:48:14 -07:00
Gregory Schier
9cdc13b632 Pass render purpose to render 2024-08-22 11:27:55 -07:00
Gregory Schier
e5ec86bfcf Move to workspace crate 2024-08-22 10:49:51 -07:00
Gregory Schier
e35f34eaf5 Fix compile 2024-08-22 06:30:19 -07:00
Gregory Schier
503b7f1c87 Fix deadlock on getting the focused window 2024-08-22 05:46:09 -07:00
Gregory Schier
4c6684623f Some tweaks for beta 2024-08-19 19:10:08 -07:00
Gregory Schier
dbfe2dc93d A bit more chaining cleanup 2024-08-19 16:38:28 -07:00
Gregory Schier
96125a0741 A bunch of improvements to chaining 2024-08-19 14:10:44 -07:00
Gregory Schier
0f8aea3afd Actually call template functions 2024-08-19 10:34:22 -07:00
Gregory Schier
1fbcfeaa30 Async template functions working 2024-08-19 06:21:03 -07:00
Gregory Schier
ec22191409 Colored autocompletion icons 2024-08-17 05:47:05 -07:00
Gregory Schier
aa85ecb618 Template Tag Function Editor (#67)
![CleanShot 2024-08-15 at 16 53
09@2x](https://github.com/user-attachments/assets/8c0eb655-1daf-4dc8-811f-f606c770f7dc)
2024-08-16 08:31:19 -07:00
Gregory Schier
a7f0fadeae Fix sidebar scroll into view 2024-08-15 09:09:18 -07:00
Gregory Schier
6bc697e4a7 Fix some more styles 2024-08-15 05:58:09 -07:00
Gregory Schier
795aaae2f5 Keep sidebar and cmd+p items in view 2024-08-15 05:50:38 -07:00
Gregory Schier
522d293087 Request actions in command palette 2024-08-15 05:37:10 -07:00
Gregory Schier
637e5196c3 Request actions (#65) 2024-08-14 15:31:52 -07:00
Gregory Schier
c484dd4041 Start on plugin ctx API (#64) 2024-08-14 06:42:54 -07:00
Gregory Schier
5eef910b8c Variable value as title attr 2024-08-13 10:19:21 -07:00
Gregory Schier
ed214367d3 Fix dollar sign in Twig grammar 2024-08-13 10:12:09 -07:00
Gregory Schier
c69bee251d Fix rose pine themes 2024-08-13 07:51:26 -07:00
Gregory Schier
c9b4e6181c Use new theme vars (#63)
This PR swaps the theme to use the new stuff from the Theme Studio
2024-08-13 07:44:28 -07:00
Gregory Schier
ecc7192bde Don't persist settings tab 2024-08-10 08:10:14 -07:00
Gregory Schier
08ea48b996 Better curl import 2024-08-10 07:53:26 -07:00
Gregory Schier
2f9532cf53 Catch clipboard errors 2024-08-10 07:33:10 -07:00
Gregory Schier
dab10d79fe Don't show unnamed variables in autocomplete 2024-08-10 07:09:23 -07:00
Gregory Schier
d5b0b5481c Append [DEV] to window title in dev 2024-08-09 15:35:21 -07:00
Gregory Schier
d280df4a0b Fix gRPC request creation 2024-08-09 14:37:43 -07:00
Gregory Schier
fbaf750c91 Correctly wrap small dialog text 2024-08-09 14:28:20 -07:00
Gregory Schier
877f9ce15a GraphQL variables now reset if entire thing deleted 2024-08-09 14:05:38 -07:00
Gregory Schier
00367c2b18 Fix Windows paths for new plugin runtime 2024-08-09 12:43:56 -07:00
Gregory Schier
23f8f5ff7f Better Windows pathing 2024-08-09 11:52:18 -07:00
Gregory Schier
b3bd070a8a UNC paths for plugins 2024-08-09 11:33:54 -07:00
Gregory Schier
1a9dfda90c Fix up DB creation and migration 2024-08-09 11:20:04 -07:00
Gregory Schier
411fd4f530 Vendor in build script 2024-08-09 08:51:21 -07:00
Gregory Schier
6232a46ca8 Fix body change setting headers/method 2024-08-09 08:33:49 -07:00
Gregory Schier
0c9d532c1f Remove problematic tests from release.yml 2024-08-09 08:33:01 -07:00
Gregory Schier
d907b0bdcd Fix release script 2024-08-09 07:53:33 -07:00
Gregory Schier
fb847ac1f0 Switch to proper log plugin 2024-08-09 07:49:48 -07:00
Gregory Schier
5a5a443ff9 Fix release script 2024-08-09 07:42:39 -07:00
Gregory Schier
ffb7ab55be Fix variable regex 2024-08-09 07:41:52 -07:00
Gregory Schier
da29d80c82 Run build before test as well 2024-08-09 07:29:48 -07:00
Gregory Schier
209af3d149 Fix 2024-08-09 07:12:32 -07:00
Gregory Schier
3c4df087ea Fix lint errors 2024-08-09 06:58:36 -07:00
Gregory Schier
4bf6ddec9f Run vendor as separate script 2024-08-09 06:49:18 -07:00
Gregory Schier
b5eed9bf9d Fix xpath filtering 2024-08-08 22:54:15 -07:00
Gregory Schier
3153a38b7b Better TS type generation 2024-08-08 22:07:05 -07:00
Gregory Schier
063e6cf00c Plugin runtime v2 (#62) 2024-08-08 21:30:59 -07:00
Gregory Schier
f967820f12 Model and DB refactor (#61)
- [x] Move from `sqlx` to `rusqlite`
- [x] Generate TS types from Rust models
2024-08-05 07:58:20 -07:00
Gregory Schier
e5511922bf Use @yaakapp/api in models 2024-08-01 15:14:33 -07:00
Gregory Schier
d6e5bc6df5 Updated plugin APIs 2024-08-01 07:01:57 -07:00
Gregory Schier
5639e358bc Start of plugin types refactor 2024-07-31 14:56:55 -07:00
Gregory Schier
a3988188f3 More flexible placeholder match 2024-07-31 07:42:18 -07:00
Gregory Schier
082be6e1dd Template function return Result 2024-07-31 07:32:37 -07:00
Gregory Schier
c2d5ad7c9f Apply forceUpdateKey to bulk pair editor 2024-07-30 15:50:29 -07:00
Gregory Schier
3dfb435386 Always enable pairs from bulk editor 2024-07-30 15:35:06 -07:00
Gregory Schier
86856e3506 Add rename/delete/send to cmd+k 2024-07-30 15:10:24 -07:00
Gregory Schier
a75b1a3472 Fix hotkey state messing up on Enter->submit 2024-07-30 15:10:08 -07:00
Gregory Schier
ff3b32ba64 Add timestamp() to template fns 2024-07-30 14:04:33 -07:00
Gregory Schier
9d2de4a0b1 Fix fold gutter icon direction 2024-07-30 13:58:30 -07:00
Gregory Schier
84e5618307 Named arguments in templating 2024-07-30 08:02:10 -07:00
Gregory Schier
5efd0c9c10 Tweak release things 2024-07-29 14:38:57 -07:00
Gregory Schier
4803539dd4 Remove canny-specific links 2024-07-29 11:50:00 -07:00
Gregory Schier
71e0d846b7 Generate v1 updater artifacts 2024-07-28 18:32:50 -07:00
Gregory Schier
3001bafb7f Update vendor scripts again 2024-07-28 16:04:05 -07:00
Gregory Schier
430599d8b8 Refine vendor scripts 2024-07-28 15:56:48 -07:00
Gregory Schier
375287eeb3 Merge remote-tracking branch 'origin/master' 2024-07-28 15:40:37 -07:00
Gregory Schier
f91dd24a9b Fix killing command on Windows 2024-07-28 15:40:19 -07:00
Gregory Schier
3618fc198c Send full request to cmd_send_http_request to prevent
update->send race
2024-07-28 15:33:12 -07:00
Gregory Schier
410cb7969c Remove command group 2024-07-28 14:13:01 -07:00
Gregory Schier
c8a99a6603 Upgrade Tauri dependencies 2024-07-28 13:44:50 -07:00
Gregory Schier
def9a3cfd2 Better wait for kill signal 2024-07-27 09:13:34 -07:00
Gregory Schier
f925a0cc54 Fix spin lock 2024-07-27 09:05:43 -07:00
Gregory Schier
54090614ad Add sleep to child polling 2024-07-27 08:26:14 -07:00
Gregory Schier
307ca480f3 Better NodeJS vendoring 2024-07-26 00:01:21 -07:00
Gregory Schier
ff81ab4414 Put updater back into targets 2024-07-25 20:56:47 -07:00
Gregory Schier
0ff3ec304c Fix targets 2024-07-25 13:33:00 -07:00
Gregory Schier
203cbc5788 Log when plugin runtime exits 2024-07-25 09:28:08 -07:00
Gregory Schier
97947e5680 Remove unused import 2024-07-25 07:58:04 -07:00
Gregory Schier
4ed5489092 Fix dunce usage 2024-07-25 07:52:53 -07:00
Gregory Schier
3825280380 Convert UNC paths in more places 2024-07-25 07:47:00 -07:00
Gregory Schier
bd46e5bdb4 Use process group for node runtime 2024-07-24 10:14:40 -07:00
Gregory Schier
2a35decf8c Remove UNC prefix for protoc exec 2024-07-24 08:07:06 -07:00
Gregory Schier
9f268a9316 Protoc stderr into error 2024-07-24 07:41:51 -07:00
Gregory Schier
f51575508e Fix external bin names 2024-07-24 07:05:05 -07:00
Gregory Schier
2170a04ccc Unique sidecar names 2024-07-24 07:04:14 -07:00
Gregory Schier
2273bb2df5 Fix NodeJS vendoring on Linux 2024-07-23 20:41:50 -07:00
Gregory Schier
f622f12bee Fix nodejs vendoring 2024-07-23 15:37:27 -07:00
Gregory Schier
e05d73965a Fix Windows vendor tmp path 2024-07-23 15:28:31 -07:00
Gregory Schier
bf1ad208c5 NODE_ARCH -> YAAK_TARGET_ARCH 2024-07-23 14:52:25 -07:00
Gregory Schier
73e815d059 Fix protoc vendoring 2024-07-23 14:35:39 -07:00
Gregory Schier
b019496bca Fix NodeJS vendoring 2024-07-23 14:31:53 -07:00
Gregory Schier
25033dc831 Response info in new tab 2024-07-23 12:13:09 -07:00
Gregory Schier
fd2c6930f0 Use SelectFile component in more places 2024-07-23 11:54:35 -07:00
Gregory Schier
a4e223f261 Guess mime type on multi-part when not set 2024-07-23 11:39:21 -07:00
Gregory Schier
1db44a1f16 Set minimum windows size 2024-07-23 11:35:16 -07:00
Gregory Schier
38e0882dd1 Better handling of large responses 2024-07-23 08:59:15 -07:00
Gregory Schier
ac8b1c018b Better import flow 2024-07-23 08:29:09 -07:00
Gregory Schier
b7148d510b Revert version 2024-07-23 07:31:00 -07:00
Gregory Schier
ad6b8a126a Fix notification status code handling 2024-07-23 07:30:47 -07:00
Gregory Schier
2d422dab4b Back to @latest 2024-07-22 18:28:27 -07:00
Gregory Schier
5aa3c06112 Force bump Yaak CLI 2024-07-22 18:27:24 -07:00
Gregory Schier
c57096640d Remove test runs 2024-07-22 18:12:12 -07:00
Gregory Schier
01441b26db Checkout plugins later in the release workflow 2024-07-22 18:08:49 -07:00
Gregory Schier
8c2da49412 Various tweaks 2024-07-22 17:55:28 -07:00
Gregory Schier
680d599f04 Plugin tweaks 2024-07-22 12:17:46 -07:00
Gregory Schier
9c08c5fea8 Better wording for moving workspace 2024-07-22 09:46:46 -07:00
Gregory Schier
110ffc7529 Lowercase product name for Linux 2024-07-22 09:03:31 -07:00
Gregory Schier
5abf460fce Some small refactoring 2024-07-21 22:18:45 -07:00
Gregory Schier
f1433b59d4 From SEA to regular NodeJS 2024-07-21 22:14:17 -07:00
Gregory Schier
63ba00d1a7 Fixed plugins on Windows 2024-07-21 16:01:13 -07:00
Gregory Schier
a684d71033 Fix import plugin hook 2024-07-21 15:46:47 -07:00
Gregory Schier
eb782353a0 Change app name 2024-07-20 11:33:02 -07:00
Gregory Schier
72c58460e2 Fix Windows key map 2024-07-20 10:49:08 -07:00
Gregory Schier
63a193bb3e Don't resign SEA binary 2024-07-20 10:28:50 -07:00
Gregory Schier
54817fa6a4 Fix tool location 2024-07-19 17:38:57 -07:00
Gregory Schier
42127874e0 Fix deps 2024-07-19 17:31:37 -07:00
Gregory Schier
1e106015f7 Dynamic signtool.exe location 2024-07-19 17:30:20 -07:00
Gregory Schier
f1e1acdb22 Fix signtool path 2024-07-19 17:28:13 -07:00
Gregory Schier
1bf542d49a Add ampersand 2024-07-19 17:21:23 -07:00
Gregory Schier
c3a4b3f68a Fix signtool path? 2024-07-19 17:18:52 -07:00
Gregory Schier
a7a88ab490 Absolute signtool path 2024-07-19 17:11:53 -07:00
Gregory Schier
52ee0b524f Remove tmp dirs 2024-07-19 16:58:55 -07:00
Gregory Schier
f0f12f7606 Again 2024-07-19 16:53:37 -07:00
Gregory Schier
c480c8d6cf Better tmp dir creation 2024-07-19 16:51:05 -07:00
Gregory Schier
1d6ea42448 Fix tmpdir on Windows 2024-07-19 16:43:22 -07:00
Gregory Schier
c48ffb2b94 Fix script for Windows? 2024-07-19 16:30:20 -07:00
Gregory Schier
fa611df585 Add protoc back 2024-07-19 16:23:16 -07:00
Gregory Schier
0be8426af2 Install Yaak CLI 2024-07-19 16:13:39 -07:00
Gregory Schier
f5b8b92d95 Oops, fix arch 2024-07-19 16:10:40 -07:00
Gregory Schier
c1fae5951a Fix Node arch 2024-07-19 16:08:37 -07:00
Gregory Schier
7c1ccbec6d Debug log 2024-07-19 16:01:05 -07:00
Gregory Schier
12ab7ae045 Add repo token 2024-07-19 15:45:54 -07:00
Gregory Schier
9979dd3ca6 Add protoc installation 2024-07-19 15:38:44 -07:00
Gregory Schier
d8d338d5d4 Add download-protoc to build 2024-07-19 15:25:20 -07:00
Gregory Schier
bf265a2f22 Deps for plugin-runtime 2024-07-19 15:16:35 -07:00
Gregory Schier
0863c0f802 Ignore plugins checkout for eslint 2024-07-19 15:13:19 -07:00
Gregory Schier
66c6ebaacf Fix is valid 2024-07-19 15:09:45 -07:00
Gregory Schier
4e889b1688 Update yaak cli path 2024-07-19 14:39:48 -07:00
Gregory Schier
6c6250a41b Fix Go install 2024-07-19 14:28:59 -07:00
Gregory Schier
cf01ea7656 Fix again 2024-07-19 14:28:05 -07:00
Gregory Schier
3e6df98e51 Fix setup go 2024-07-19 14:26:47 -07:00
Gregory Schier
80e09c207c Install Yaak CLI with Go 2024-07-19 14:25:21 -07:00
Gregory Schier
b829f370cd Specify version 2024-07-19 14:06:33 -07:00
Gregory Schier
748d956eb0 Fix directory 2024-07-19 14:01:21 -07:00
Gregory Schier
544f6ff6b3 Install Yaak CLI in workflow 2024-07-19 13:57:04 -07:00
Gregory Schier
3f15ea85c2 Fix checkout 2024-07-19 11:16:15 -07:00
Gregory Schier
7ea20a3fb8 Fix working directory 2024-07-19 11:13:58 -07:00
Gregory Schier
6df1af4f94 Remove failing step 2024-07-19 11:10:45 -07:00
Gregory Schier
1d6624602f Move ci/build to workflow 2024-07-19 11:09:07 -07:00
Gregory Schier
ac42767aaf Debug where npm is 2024-07-19 11:06:39 -07:00
Gregory Schier
a722797b6a Inherit env for exec 2024-07-19 11:04:03 -07:00
Gregory Schier
d630f4362c TRy again 2024-07-19 11:02:15 -07:00
Gregory Schier
0ed5c61fac Add debug 2024-07-19 10:58:48 -07:00
Gregory Schier
c3442f4326 Fix copy plugins script 2024-07-19 10:53:39 -07:00
Gregory Schier
9617ee95e0 Fix workflow 2024-07-19 10:49:29 -07:00
Gregory Schier
102bd588c2 NodeJS Plugin Runtime (#53) 2024-07-19 10:41:47 -07:00
Gregory Schier
7e5408fc92 Update useSaveResponse.tsx 2024-06-27 22:05:41 -07:00
Gregory Schier
408f42b86b Fix RadioDropdown key 2024-06-24 11:18:38 -07:00
Gregory Schier
94abb6838a Better performance on large workspaces 2024-06-21 10:53:11 -07:00
Gregory Schier
fdc96001db Better active workspace change notification 2024-06-21 10:11:00 -07:00
Gregory Schier
b6cd6e415a Consolidate any* hooks 2024-06-21 10:01:45 -07:00
Gregory Schier
146fc133f0 Add mutationKey everywhere 2024-06-21 09:25:25 -07:00
Gregory Schier
3b784378bf Move request to another workspace (#52) 2024-06-21 09:01:18 -07:00
Gregory Schier
bc35195ca8 Bump CI node version 2024-06-20 16:45:59 -07:00
Gregory Schier
0d106bdd90 Safe URI for reflection 2024-06-20 13:11:40 -07:00
Gregory Schier
ba9b914303 Fix button styles 2024-06-20 12:55:13 -07:00
Gregory Schier
3c12b14572 Refactor gRPC reflection! 2024-06-20 12:49:58 -07:00
Gregory Schier
907836a751 Update script 2024-06-20 09:23:50 -07:00
Gregory Schier
c993a5e658 Actually write the file 2024-06-20 09:20:04 -07:00
Gregory Schier
4275169005 Generic build version 2024-06-20 09:17:28 -07:00
Gregory Schier
c511a053df Bump version 2024-06-20 09:07:38 -07:00
Gregory Schier
1b036aabc1 Better fallback request name generation 2024-06-20 09:03:24 -07:00
Gregory Schier
d29e503309 Fix GRPC with files not refreshing, and tight render loop 2024-06-20 08:40:10 -07:00
Gregory Schier
f81ffe249e Better gRPC reflection errors 2024-06-18 10:54:39 -07:00
Gregory Schier
5cdcbc8dce Bump version 2024-06-18 10:41:22 -07:00
Gregory Schier
0545c2d598 Editor autocomplete same font size as editor 2024-06-18 09:43:51 -07:00
Gregory Schier
9520359e62 Move GraphQL introspection out of LocalStorage 2024-06-18 09:43:28 -07:00
Gregory Schier
cbfd259436 REvert other thing 2024-06-17 17:05:51 -07:00
Gregory Schier
f2213ff4e8 Fix editor tags wrapping behavior 2024-06-17 17:05:29 -07:00
Gregory Schier
82abb4b004 Change version 2024-06-17 15:09:44 -07:00
Gregory Schier
73b2e44094 Recursive environments 2024-06-17 12:24:06 -07:00
Gregory Schier
0317c46f8f Fix flash loading response viewer 2024-06-17 11:43:45 -07:00
Gregory Schier
ab1224c997 Fix parsing notification timestamp 2024-06-17 11:43:20 -07:00
Gregory Schier
2589e3e0dd More dynamic plugin access 2024-06-15 22:13:01 -07:00
Gregory Schier
b49081cd06 Workspace dropdown to RadioDropdown 2024-06-14 17:07:35 -07:00
Gregory Schier
6c331ed734 Fix plugins 2024-06-13 07:03:50 -07:00
Gregory Schier
4469b84ad6 Support nested functions 2024-06-12 23:13:36 -07:00
Gregory Schier
f9cd2fa7fa Parse window title and theme better 2024-06-12 10:15:14 -07:00
Gregory Schier
0674bae787 Move binary detection to TextViewer 2024-06-12 09:47:34 -07:00
Gregory Schier
53833e1345 Bump version 2024-06-12 00:23:50 -07:00
Gregory Schier
b9c6d9d877 Entitlement for v8/Deno 2024-06-12 00:23:32 -07:00
Gregory Schier
a5041d4229 Variables in pair editor 2024-06-11 12:33:43 -07:00
Gregory Schier
44ad8c7f30 Put toast on top 2024-06-11 12:04:46 -07:00
Gregory Schier
a479df5254 Fix bulk edit label 2024-06-11 09:02:11 -07:00
Gregory Schier
ec0a84d588 Bump version 2024-06-11 08:35:29 -07:00
Gregory Schier
43ca9a9390 Adjust fuzzy threshold 2024-06-10 23:25:57 -07:00
Gregory Schier
06707ed54c Fix window drag above cmd+k 2024-06-10 23:24:03 -07:00
Gregory Schier
6e4ee0045f Fix delete request in sidebar 2024-06-10 23:17:12 -07:00
Gregory Schier
55a426fc85 Don't arrow-nav to hidden dropdown items 2024-06-10 23:16:37 -07:00
Gregory Schier
81ff405874 Bulk edit environments 2024-06-10 23:16:21 -07:00
Gregory Schier
8c7f7a7a03 Fix hotkey react keys 2024-06-10 22:29:06 -07:00
Gregory Schier
47fcb8bad4 Cmd Palette Improvements (#50)
- Fuzzy matching
- Show hotkeys
- Add actions
2024-06-10 21:37:41 -07:00
Gregory Schier
f0c7a83134 Download Active Response (#49)
This PR prompts you to save un-previewable file types and adds an option
to save to the response history.
2024-06-10 16:36:09 -07:00
Gregory Schier
3875f90fea Remove jump to request hotkey 2024-06-10 09:00:26 -07:00
Gregory Schier
016c3f7dac Response viewer for PDF (#48)
This PR adds a response viewer for PDF files using `react-pdf`
2024-06-10 08:57:08 -07:00
Gregory Schier
302a69ed98 Don't focus sidebar on cmd+0 2024-06-09 08:36:12 -07:00
Gregory Schier
526b64cc5a Try fix CI 2024-06-09 08:09:47 -07:00
Gregory Schier
f1f1a02d79 Bump version 2024-06-09 07:56:44 -07:00
Gregory Schier
d277c5677f Remove CI again 2024-06-09 07:56:09 -07:00
Gregory Schier
d63dabe2fb Add it back 2024-06-09 07:23:28 -07:00
Gregory Schier
a0bc0ff87c Remove CI in release stage 2024-06-09 07:22:49 -07:00
Gregory Schier
35072669ec Remove GH Action step names 2024-06-09 07:16:53 -07:00
Gregory Schier
9bfd0d1fbf Back to other 2024-06-09 07:14:07 -07:00
Gregory Schier
c9a798c9cd Fix action step 2024-06-09 07:10:44 -07:00
Gregory Schier
4dad19db31 Rust cache release 2024-06-09 07:09:46 -07:00
Gregory Schier
dd483dbdd8 Cmd jump to request 2024-06-09 07:03:16 -07:00
Gregory Schier
7b2cb64b14 Only CI on PR 2024-06-09 06:47:47 -07:00
Gregory Schier
b6927435e5 Fix Rust lint 2024-06-09 06:43:53 -07:00
Gregory Schier
a576ba7a23 Remove slow udeps from CI 2024-06-08 21:03:17 -07:00
Gregory Schier
714a96120a Rust CI to release 2024-06-08 20:51:03 -07:00
Gregory Schier
6585c049c3 Try again 2024-06-08 20:47:48 -07:00
Gregory Schier
c89359cf55 Remove cache 2024-06-08 20:47:18 -07:00
Gregory Schier
2c060e5769 Try removing git db 2024-06-08 20:44:58 -07:00
Gregory Schier
595a92c324 Cargo check 2024-06-08 20:36:56 -07:00
Gregory Schier
53b922cc7c Remove Cargo fmt 2024-06-08 20:34:24 -07:00
Gregory Schier
117b4bd285 Fix tests 2024-06-08 20:30:52 -07:00
Gregory Schier
a522236885 Cargo format 2024-06-08 20:28:45 -07:00
Gregory Schier
acb629919b Set max dropdown width 2024-06-08 19:55:25 -07:00
Gregory Schier
99c8ffe121 Bump version 2024-06-08 19:46:32 -07:00
Gregory Schier
c7cc086d1d Upgrade reqwest and add ALPN for http/2 2024-06-08 19:40:35 -07:00
Gregory Schier
0e3918d5a2 Fix curl exporter 2024-06-08 19:40:11 -07:00
Gregory Schier
3a09752322 Fix cmd+k filtering 2024-06-07 22:52:23 -07:00
Gregory Schier
aa8c1649f9 Remove delete hotkey for request 2024-06-07 22:52:10 -07:00
Gregory Schier
b456e8ce94 Short method tags and hide active in cmd+k 2024-06-07 22:39:11 -07:00
Gregory Schier
f9412e6d8f Add command palette (#46)
This PR finished the initial PoC command palette. It currently only
supports switching between requests and workspaces, but can easily be
extended for more.
2024-06-07 21:59:57 -07:00
Gregory Schier
4a88e80669 Bulk editor (#45)
Bulk editor for all pair editors except multipart/form-data
2024-06-07 13:42:08 -07:00
Gregory Schier
e9bf97bd3f Fix rose pine and method tags 2024-06-07 12:01:31 -07:00
Gregory Schier
3ed78d1088 Generate things 2024-06-07 11:58:08 -07:00
Gregory Schier
1c1a794c2a Remove tauri-plugin-deep-link 2024-06-07 11:57:44 -07:00
Gregory Schier
0e47622e64 Update CI script 2024-06-07 11:01:21 -07:00
Gregory Schier
dbf5b5bdd7 Fix workflow 2024-06-07 10:54:50 -07:00
Gregory Schier
acfc254a58 Deno plugins (#42)
Switch from BoaJS to Deno core
2024-06-07 10:47:41 -07:00
Gregory Schier
f43b38c893 Open workspace pref (#44)
Ability to remember workspace window opening selection.
2024-06-07 09:04:53 -07:00
Gregory Schier
372588f541 Templating (#43)
Add new `templating` crate with custom parser/renderer for dealing with
variables
2024-06-07 08:39:12 -07:00
Gregory Schier
558b429807 Fix copy-as-curl variables 2024-06-05 06:53:38 -07:00
Gregory Schier
cc1b3a9f25 Bump version 2024-06-04 23:53:45 -07:00
Gregory Schier
366dbc9f2a Only release on tag again 2024-06-04 23:53:31 -07:00
Gregory Schier
30ee2bea34 Fix default workspace settings on initial Workspace 2024-06-04 17:06:40 -07:00
Gregory Schier
6992436fc7 Better analytics error log 2024-06-04 16:27:22 -07:00
Gregory Schier
71afaa74d3 Merge branch 'beta' into master 2024-06-04 15:01:55 -07:00
Gregory Schier
bcb991c83b Bump version 2024-06-04 15:00:34 -07:00
Gregory Schier
83c6250a8c Hopefully fix AppImage build not finding migrations. I think it was because the productName had a capital Yaak in it. 2024-06-04 14:59:40 -07:00
Gregory Schier
6d2e9b29d4 Remove Windows plugin 2024-06-04 02:56:52 -07:00
Gregory Schier
3135f9c187 2024.5.0-beta.2 (#38) 2024-06-03 14:03:25 -07:00
Gregory Schier
ba166cc509 Bump version 2024-06-03 14:00:49 -07:00
Gregory Schier
c53df99105 Move Postman to first plugin 2024-06-03 14:00:40 -07:00
Gregory Schier
a0b08614f0 Preserve JSON/XPath filter (Closes #22) 2024-06-03 13:49:51 -07:00
Gregory Schier
f4c91d131c Don't send request on completion (Fixes #27) 2024-06-03 07:49:13 -07:00
Gregory Schier
28e396cb1b Don't always change request method. Closes #29 2024-06-03 07:26:40 -07:00
Gregory Schier
a669ed2c6d Tweak settings labels 2024-06-02 23:54:00 -07:00
Gregory Schier
4a418be11f Fix dropdown icon color 2024-06-02 23:50:26 -07:00
Gregory Schier
09953ff7d5 Don't call is_fullscreen so much 2024-06-02 23:38:56 -07:00
Gregory Schier
5127de831a Fix autocomplete for environment editor names 2024-06-02 17:52:51 -07:00
Gregory Schier
0b6997f59c <Select> uses custom component on Windows 2024-06-02 16:57:23 -07:00
Gregory Schier
ddbd342033 Tweak Moonlight theme 2024-06-02 15:48:27 -07:00
Gregory Schier
d8d0622773 Fix font size 2024-06-02 11:53:41 -07:00
Gregory Schier
23dec8e96f Better invalid URL errors 2024-06-02 11:53:35 -07:00
Gregory Schier
cc9e8c4f1e Import content-type from Postman multi-part form 2024-06-02 11:53:25 -07:00
Gregory Schier
ee6c7b6b1a Also release on beta branch 2024-05-31 10:37:21 -07:00
Gregory Schier
8d605f3190 Bump version 2024-05-31 09:46:57 -07:00
Gregory Schier
6ddaa99ef1 Fix multipart files 2024-05-31 09:32:16 -07:00
Gregory Schier
a1102d2ba6 Fade in window contents (Layout) 2024-05-31 09:16:52 -07:00
Gregory Schier
0133432049 Window border on Linux 2024-05-31 08:43:35 -07:00
Gregory Schier
bb9f0b1607 Try tweaking settings/theme for Windows. Setting the theme didn't work. 2024-05-30 23:38:49 -07:00
Gregory Schier
ac1902c18b Ignore stoplights when centering settings title 2024-05-30 12:33:59 -07:00
Gregory Schier
b13207072a Tweak appearance settings 2024-05-30 12:32:12 -07:00
Gregory Schier
3efb5bb4eb Dracula theme 2024-05-30 11:56:57 -07:00
Gregory Schier
606977d795 Tweak 2024-05-30 11:45:40 -07:00
Gregory Schier
9e8afc3cc9 Theme analytics and Moonlight 2024-05-30 11:00:50 -07:00
Gregory Schier
a481cf403d Tweak settings for release 2024-05-30 10:28:59 -07:00
Gregory Schier
0b4e367dfc Unlisten to window event and fix hotkeys 2024-05-30 00:29:01 -07:00
Gregory Schier
e4022cf532 Window title working again 2024-05-30 00:11:55 -07:00
Gregory Schier
b942c22b20 Fix window stoplights 2024-05-29 22:59:34 -07:00
Gregory Schier
fbc684140b Custom font sizes and better zoom 2024-05-29 12:10:01 -07:00
Gregory Schier
7c71d8b751 Merge branch 'refs/heads/release'
# Conflicts:
#	src-tauri/src/updates.rs
2024-05-26 09:11:29 -07:00
Gregory Schier
d5c52e2ae5 Initial handler for yaak:// protocol 2024-05-26 08:45:15 -07:00
Gregory Schier
4f736b4656 Better theme export 2024-05-24 18:54:30 -07:00
Gregory Schier
f3024a259e More theme stuff 2024-05-24 17:36:48 -07:00
Gregory Schier
11814b56f1 Tweak themes 2024-05-23 10:16:29 -07:00
Gregory Schier
a936038f23 Hotdog stand 2024-05-23 10:14:07 -07:00
Gregory Schier
9e6bce0e41 More themes! 2024-05-23 09:40:11 -07:00
Gregory Schier
ab33630ef6 Set window title on Mac 2024-05-23 09:40:00 -07:00
Gregory Schier
656c90b54f More tweaks 2024-05-22 23:44:47 -07:00
Gregory Schier
33768af571 Tweak Yaak default themes 2024-05-22 23:28:53 -07:00
Gregory Schier
56acec473b A bunch more theme stuff 2024-05-22 23:14:53 -07:00
Gregory Schier
4c5087659b Theme system refactor (#31) 2024-05-21 17:56:06 -07:00
Gregory Schier
f1db72eb77 Move is_dev check for updates 2024-05-16 10:28:25 -07:00
Gregory Schier
6465d8732e Fix release (#30) 2024-05-14 15:35:53 -07:00
Gregory Schier
9780584f82 Merge remote-tracking branch 'refs/remotes/origin/release'
# Conflicts:
#	src-tauri/tauri.conf.json
2024-05-14 15:35:33 -07:00
Gregory Schier
aad4110cc7 Bump version 2024-05-14 15:34:34 -07:00
Gregory Schier
636a73d151 Oops 2024-05-14 15:33:27 -07:00
Gregory Schier
ed371c8cb7 Release 2024.4.1 (#28) 2024-05-14 15:01:55 -07:00
Gregory Schier
92709774f1 Fix maximize permission 2024-05-14 14:54:09 -07:00
Gregory Schier
8925fe9892 Fix autocomplete 2024-05-14 14:47:33 -07:00
Gregory Schier
5dd9539ab3 Add num launches to notification call 2024-05-14 14:25:10 -07:00
Gregory Schier
2c70b8bb0f Fix window clicking on Linux 2024-05-14 12:19:19 -07:00
Gregory Schier
1f88b7a41a Slight refactor 2024-05-14 08:44:15 -07:00
Gregory Schier
c9e69b4b35 Build plugin 2024-05-14 08:28:20 -07:00
Gregory Schier
4842832468 Improve Curl imports 2024-05-14 08:28:01 -07:00
Gregory Schier
affa7fec29 Bump version for release 2024-05-14 07:50:01 -07:00
Gregory Schier
77e7bfbbc1 Fix upgrade cancel 2024-05-14 07:08:57 -07:00
Gregory Schier
cbbc01a7c6 Toast after data export 2024-05-14 00:36:15 -07:00
Gregory Schier
0a98f08f2a Fix selection of HTTP Request on create dropdown hotkey 2024-05-14 00:17:33 -07:00
Gregory Schier
9875d2353d Fix curl export with multi-line body 2024-05-14 00:05:54 -07:00
Gregory Schier
4894677599 Autocomplete URLs of other requests 2024-05-13 23:54:52 -07:00
Gregory Schier
3f40f36217 Fixed asset:// loading and tweak curl stuff 2024-05-13 23:20:30 -07:00
Gregory Schier
9480117be5 Bump version 2024-05-13 16:52:32 -07:00
Gregory Schier
50dc494b58 Better notifications 2024-05-13 16:52:20 -07:00
Gregory Schier
22aa14cdc2 Improve copy-as-curl 2024-05-13 11:30:10 -07:00
Gregory Schier
b18c042483 Refactor UpdateMode 2024-05-13 07:28:45 -07:00
Gregory Schier
80ea4c14a4 Hide large GRPC messages by default 2024-05-13 07:19:26 -07:00
Gregory Schier
0e22228766 Bump version 2024-05-12 12:11:14 -07:00
Gregory Schier
9ce1732d75 Add curl banner to import dialog 2024-05-10 13:36:30 -07:00
Gregory Schier
fd6ad952fe Change curl import to post-toast 2024-05-10 13:06:40 -07:00
Gregory Schier
582da26574 Toast component and use for copy-as-curl 2024-05-10 12:37:04 -07:00
Gregory Schier
b533a01677 Insomnia YAML and loading state on import 2024-05-10 09:46:20 -07:00
Gregory Schier
acc07780a7 Some fixes after upgrading react-query 2024-05-10 09:19:29 -07:00
Gregory Schier
9f4c80ecf1 Update deps 2024-05-10 08:52:06 -07:00
Gregory Schier
19d2574e33 Fix paste handler in Editor.tsx 2024-05-09 23:17:43 -07:00
Gregory Schier
2e3af37d16 Fix release targets 2024-05-09 15:38:27 -07:00
Gregory Schier
9e14aae069 Don't commit .cargo 2024-05-09 10:17:35 -07:00
Gregory Schier
d67c0a614d Fix args 2024-05-09 09:35:39 -07:00
Gregory Schier
1c9a3512a0 Update GH action 2024-05-09 09:33:47 -07:00
Gregory Schier
6b354413f3 Try fix linux 2024-05-09 08:37:18 -07:00
Gregory Schier
819b54f376 Fix env var in GH Action 2024-05-09 08:29:45 -07:00
Gregory Schier
53ce4bfc4f Fix curl export tests 2024-05-09 08:18:06 -07:00
Gregory Schier
a14f41a77a Default .app/.dev/etc domains to https protos 2024-05-09 08:16:06 -07:00
Gregory Schier
0f0cbe7bcb Bump version for beta 2024-05-09 07:52:36 -07:00
Gregory Schier
657153beff Fix GRPC event.emit permissions 2024-05-09 07:45:00 -07:00
Gregory Schier
bf4eee72df Import from Curl 2024-05-09 07:31:52 -07:00
Gregory Schier
c64c794f86 Package lock 2024-05-08 15:37:53 -07:00
Gregory Schier
e10ff3d136 Slight refactor to copy-as-curl 2024-05-08 00:28:40 -07:00
Gregory Schier
b4d268b202 Add rename request to context menu
Closes #21
2024-05-08 00:08:18 -07:00
Gregory Schier
88ee60c97f Copy as curl 2024-05-08 00:00:50 -07:00
Gregory Schier
82e2a6b73e Curl import (#24) 2024-05-07 21:57:03 -07:00
Gregory Schier
896e3d5831 Upgrade to Tauri 2.0 (#23) 2024-05-04 14:14:19 -07:00
Gregory Schier
7f02060b9c Fix horizontal scroll on GraphQL variables editor 2024-04-18 10:53:36 -07:00
Gregory Schier
91fdbe4d33 Oops 2024-04-02 10:11:37 +02:00
Gregory Schier
ba5bfd07f7 Postman text body import 2024-04-02 10:10:16 +02:00
Gregory Schier
fd2132994b Bump version 2024-04-01 08:48:26 +02:00
Gregory Schier
612a38d6e1 Separate floating sidebar hidden state 2024-03-22 10:43:10 -07:00
Gregory Schier
d2211c5e9e Filtering for cmd palette 2024-03-22 10:42:45 -07:00
Gregory Schier
b8d5e5cecb Space between var placeholders and code fold cursor 2024-03-22 10:42:35 -07:00
Gregory Schier
6779251ff3 Fix Postman variable import 2024-03-22 10:40:51 -07:00
Gregory Schier
2904caea79 Adjust highlight color 2024-03-22 10:37:45 -07:00
Gregory Schier
290636c098 Some scrolling tweaks 2024-03-20 17:27:47 -07:00
Gregory Schier
0a44635bcf Fix URL bar buttons in expanded state 2024-03-20 16:17:05 -07:00
Gregory Schier
1683271198 Bump version 2024-03-20 16:05:14 -07:00
Gregory Schier
cf46243e6d Fix dialog height 2024-03-20 16:05:01 -07:00
Gregory Schier
d2d5f2b957 Remove openOnHotKeyAction in favor of putting hotkey on the trigger button= 2024-03-20 15:56:39 -07:00
Gregory Schier
e2220f771d Use SQLite connect options 2024-03-20 13:33:11 -07:00
Gregory Schier
6096199174 Pass workspace id to import 2024-03-20 07:30:59 -07:00
Gregory Schier
09a23ce357 Handle import errors 2024-03-20 07:27:12 -07:00
Gregory Schier
a49ead969e Postman bearer, global auth, global vars 2024-03-20 07:26:46 -07:00
Gregory Schier
8d24e8c282 Implement select for command palette 2024-03-19 17:24:57 -07:00
Gregory Schier
25de5460ad Tweak checkbox and autocomplete styles 2024-03-19 17:08:06 -07:00
Gregory Schier
776679e2c3 Fix sidebar border 2024-03-19 16:44:37 -07:00
Gregory Schier
351cfae042 Export multiple workspaces 2024-03-19 13:43:33 -07:00
Gregory Schier
bb561d7b98 Fix settings query store and analytics 2024-03-19 10:23:21 -07:00
Gregory Schier
88ae30101a Start of command palette 2024-03-18 17:09:01 -07:00
Gregory Schier
2d6caa1126 useRequests hook 2024-03-18 13:49:36 -07:00
Gregory Schier
e2166d8a26 Fix editor key events 2024-03-18 13:40:15 -07:00
Gregory Schier
c49e81cde4 Simple tests for Postman and Yaak importers 2024-03-18 13:40:00 -07:00
Gregory Schier
fa46611d76 Set filename on Multipart part 2024-03-18 13:24:27 -07:00
Gregory Schier
93f9eee884 Fix GraphQL editor large variables quirk 2024-03-18 13:10:55 -07:00
Gregory Schier
9d547dee3d Fix postman import and import Insomnia gRPC 2024-03-18 08:18:04 -07:00
Gregory Schier
f75446de87 Better padding 2024-03-16 13:59:06 -07:00
Gregory Schier
e4bd257bae Remove debug log 2024-03-16 12:50:27 -07:00
Gregory Schier
901cf53cd2 Custom content-type for multipart items 2024-03-16 12:49:17 -07:00
Gregory Schier
4b33a696ac Content menu on entire sidebar 2024-03-16 10:47:10 -07:00
Gregory Schier
3a9d4045d0 Obfuscate environment variables 2024-03-16 10:42:46 -07:00
Gregory Schier
d514880cd8 Fix light mode text selection 2024-03-16 09:48:55 -07:00
Gregory Schier
49da0e5aa8 Stubbed out global commands helper 2024-03-16 09:46:11 -07:00
Gregory Schier
40f8a41a8d Fix deleting workspace staying on deleted workspace path 2024-03-15 13:07:02 -07:00
Gregory Schier
76d1478f19 Bump version 2024-03-10 18:15:00 -07:00
Gregory Schier
8c09558f62 Fix recent workspaces 2024-03-10 17:42:25 -07:00
Gregory Schier
b177993f8a Fix adding header if not exist 2024-03-10 17:10:16 -07:00
Gregory Schier
6e102175c0 Remove completion debug blur thing 2024-03-10 16:46:18 -07:00
Gregory Schier
dc1af2faec Adjust detected content-type header 2024-03-10 16:26:06 -07:00
Gregory Schier
ef8528d2b4 Clickable links in response viewer 2024-03-10 13:41:44 -07:00
Gregory Schier
d51c58aa3d Better error handling for file not found 2024-03-10 11:02:32 -07:00
Gregory Schier
11e7fb88cb Cancel file selection sets to undefined 2024-03-10 10:57:49 -07:00
Gregory Schier
efd7e7bf84 Binary file uploads and missing workspace empty state 2024-03-10 10:56:38 -07:00
Gregory Schier
ce9ccd34e7 Fix GraphQL Header backend 2024-02-28 13:38:22 -08:00
Gregory Schier
9dc2435e43 Fix GraphQL content type on creation, and placeholder 2024-02-28 13:04:17 -08:00
Gregory Schier
4f6a678ca6 Include default protoc includes 2024-02-28 09:45:11 -08:00
Gregory Schier
5804344bbf Bump version 2024-02-28 08:51:34 -08:00
Gregory Schier
18caa927b7 Fix dropdown arrow keys 2024-02-28 08:51:08 -08:00
Gregory Schier
e5bafd088c Track GRPC 2024-02-28 07:32:05 -08:00
Gregory Schier
33b15c52c2 Analytics ID 2024-02-28 07:27:19 -08:00
Gregory Schier
796ceb56c4 Analytics ID 2024-02-28 07:26:02 -08:00
Gregory Schier
597664d6f9 Remove Escape from hotkeys 2024-02-27 18:58:41 -08:00
Gregory Schier
a40437a7fb Fix sidebar focus 2024-02-27 10:33:20 -08:00
Gregory Schier
902030bfff Fix gap in dropdown menu items 2024-02-27 10:27:04 -08:00
Gregory Schier
5e7b2db28d Methods in recent dropdown 2024-02-27 10:20:35 -08:00
Gregory Schier
e12b85daae Many hotkey improvements 2024-02-27 10:10:38 -08:00
Gregory Schier
2705e90016 Info logs in build 2024-02-26 17:27:08 -08:00
Gregory Schier
fd9056179d Introspection tweak 2024-02-26 17:24:44 -08:00
Gregory Schier
ac1f4395d2 Tweak editor find/replace 2024-02-26 17:17:37 -08:00
Gregory Schier
d5afc37dd7 Fix find/replace CM styling 2024-02-26 17:07:09 -08:00
Gregory Schier
4876ff587a Fix lint errors 2024-02-26 07:43:08 -08:00
Gregory Schier
c2f3fac22b Autocomplete icons and transfer proto files on duplicate 2024-02-26 07:39:53 -08:00
Gregory Schier
eae1177365 Prompt folder name on create 2024-02-26 07:14:27 -08:00
Gregory Schier
5a3596478a Better creation from folder menu 2024-02-26 07:09:59 -08:00
Gregory Schier
629e92a98e Auto-fill link to changelog in release script 2024-02-25 18:42:04 -08:00
Gregory Schier
964e6ddb63 Protoc sidecar 2024-02-25 17:43:29 -08:00
Gregory Schier
31b5032817 Fix deletion in sidebar 2024-02-25 12:56:57 -08:00
Gregory Schier
520ff0f68c Fix create dropdown hotkey 2024-02-24 22:02:04 -08:00
Gregory Schier
3d61bac030 Try changing macOS version 2024-02-24 21:25:58 -08:00
Gregory Schier
34a7c39637 Bump some things 2024-02-24 21:23:02 -08:00
Gregory Schier
4d481b82a5 Fix response pane height 2024-02-24 19:31:59 -08:00
Gregory Schier
79ee5a29b1 Don't build plugins 2024-02-24 18:58:51 -08:00
Gregory Schier
73f0e29c59 Remove npm ci plugins 2024-02-24 18:28:07 -08:00
Gregory Schier
9a28a28ae6 Check in built plugins again 2024-02-24 18:27:36 -08:00
Gregory Schier
06177c8077 Add pkg locks 2024-02-24 18:19:16 -08:00
Gregory Schier
ea61428ff5 Install plugins in CI 2024-02-24 16:29:22 -08:00
Gregory Schier
2e980660c8 Bump version 2024-02-24 16:22:55 -08:00
Gregory Schier
ad890e01b0 Got json-schema autocomplete working again 2024-02-24 16:22:22 -08:00
Gregory Schier
5bd2d0959a Proto files off model 2024-02-24 14:16:58 -08:00
Gregory Schier
046a569ebe Better gRPC status on error 2024-02-24 12:41:43 -08:00
Gregory Schier
fd044005a6 More analytics, and cancel requests 2024-02-24 11:30:07 -08:00
Gregory Schier
0857ef9afd Hook up empty state buttons for first-launch experience 2024-02-23 16:34:19 -08:00
Gregory Schier
3dfb8b3fb2 gRPC in import/export 2024-02-23 16:16:13 -08:00
Gregory Schier
4571d7dc93 Everything in messages now 2024-02-22 19:51:30 -08:00
Gregory Schier
321b013ce6 Format XML responses 2024-02-22 01:00:02 -08:00
Gregory Schier
ca4d9b1ad6 Refactor into grpc events 2024-02-22 00:49:22 -08:00
Gregory Schier
bb628e699f Fix split layout placeholder 2024-02-18 09:12:44 -08:00
Gregory Schier
a9d0bb3915 Add other body type 2024-02-18 08:59:14 -08:00
Gregory Schier
555389b667 Add metadata and squash migrations 2024-02-18 08:35:31 -08:00
Gregory Schier
ed55eb2238 Better environment edit dialog 2024-02-18 07:44:53 -08:00
Gregory Schier
e934ca9586 Allow editing base environment 2024-02-18 00:14:47 -08:00
Gregory Schier
d953a75073 Render gRPC message body 2024-02-18 00:14:26 -08:00
Gregory Schier
8d29fad261 gRPC authentication 2024-02-17 23:47:28 -08:00
Gregory Schier
ab8503d87c Even better dropdown filtering 2024-02-17 22:27:01 -08:00
Gregory Schier
daf138c967 Started gRPC tabs 2024-02-17 22:15:44 -08:00
Gregory Schier
2205464e1e Better dropdown filtering 2024-02-17 22:03:42 -08:00
Gregory Schier
44b45fc900 Prevent dragging folders into itself 2024-02-17 15:32:15 -08:00
Gregory Schier
323449b205 Fix deps 2024-02-17 15:20:13 -08:00
Gregory Schier
63f762a891 Upgrade Vite deps and fix windows DnD 2024-02-17 14:57:12 -08:00
Gregory Schier
2679f5ebdf Fix postman importer TS ref 2024-02-17 11:05:57 -08:00
Gregory Schier
29571b4942 Add more info to settings 2024-02-17 11:04:19 -08:00
Gregory Schier
4d97dce6b1 Adjust placeholder error colors 2024-02-15 21:15:18 -08:00
Gregory Schier
c8fedd3d2c Tweak tab padding 2024-02-15 16:38:14 -08:00
Gregory Schier
939117d5c8 Responsive (scroll) workspace header 2024-02-15 16:30:08 -08:00
Gregory Schier
a1b4d24907 Better button highlight border 2024-02-15 15:55:32 -08:00
Gregory Schier
c8feb6482b Refactor recentRequest/Env/Workspace 2024-02-15 15:14:18 -08:00
Gregory Schier
b7d9f0bf92 Better sidebar collapse, debuonce container uqeries, fix recent requests 2024-02-15 15:07:15 -08:00
Gregory Schier
fe4696daf7 Better recent work/env/req logic 2024-02-13 17:21:54 -08:00
Gregory Schier
d63d9ca213 Fix active environment on workspace change 2024-02-13 16:42:07 -08:00
Gregory Schier
a57ad3bd7c Active environment in query param 2024-02-13 16:32:31 -08:00
Gregory Schier
b0a341b29f Better variable placeholder styles 2024-02-13 16:32:17 -08:00
Gregory Schier
8f8bd00487 Show GQL for graphql requests in sidebar 2024-02-13 16:32:00 -08:00
Gregory Schier
bd084cdf02 Better highlight on JSON tree 2024-02-13 16:31:38 -08:00
Gregory Schier
2cd184f0c7 Cmd+n to open dropdown 2024-02-11 14:17:09 -08:00
Gregory Schier
27112a39f8 Tab-to-indent in editor 2024-02-11 14:16:36 -08:00
Gregory Schier
0a33a32475 Make editor variables more prominent 2024-02-11 14:16:25 -08:00
Gregory Schier
eb08db3d4a Fix dropdown open index 2024-02-11 14:16:11 -08:00
Gregory Schier
630e573777 Catch URL error when URL = "{{HOST}}" 2024-02-11 09:04:27 -08:00
Gregory Schier
c71790195b Grap gRPC status codes 2024-02-11 08:52:12 -08:00
Gregory Schier
90b0112f14 Use basemsg 2024-02-11 08:29:57 -08:00
Gregory Schier
d274b85db1 Combine grpc handlers, fix duplicate 2024-02-10 10:41:45 -08:00
Gregory Schier
a55cf9e216 Fix response emit and sidebar flex 2024-02-09 16:16:02 -08:00
Gregory Schier
7a960574a5 Sidebar methods and fix model hooks 2024-02-09 16:09:24 -08:00
Gregory Schier
017de296a0 Fix editor selection/cursor and lint errors 2024-02-09 14:32:58 -08:00
Gregory Schier
c7620e90a1 Remove built plugins from source control 2024-02-09 05:09:37 -08:00
Gregory Schier
0d8203da47 Merge branch 'grpc' 2024-02-09 05:07:45 -08:00
Gregory Schier
671d0fe847 Move plugins to build folder 2024-02-09 05:07:34 -08:00
Gregory Schier
9f54eb77a0 gRPC Support (#20) 2024-02-09 05:01:00 -08:00
Gregory Schier
bc4ef2d9f7 Better message serialization 2024-02-09 05:00:48 -08:00
Gregory Schier
9c35f7c85c Working sidebar actions for grpc 2024-02-07 00:02:02 -08:00
Gregory Schier
d668244f9b Change hotkey handling to capture phase 2024-02-06 23:44:10 -08:00
Gregory Schier
a2a36ceb54 Fix pool management 2024-02-06 23:26:24 -08:00
Gregory Schier
14582e6bf4 Minor tweaks 2024-02-06 19:32:03 -08:00
Gregory Schier
2ea7e6ba27 gRPC schema from files! 2024-02-06 19:20:32 -08:00
Gregory Schier
395481b5cb Proto selection UI/models 2024-02-06 12:29:23 -08:00
Gregory Schier
0dc6b2d9e7 Better reflect failure UI 2024-02-05 14:50:47 -08:00
Gregory Schier
5ad13a61e6 Async connection management 2024-02-05 11:29:27 -08:00
Gregory Schier
3ed00c0955 Refactor model emit, and recent conn dropdown 2024-02-05 10:39:47 -08:00
Gregory Schier
e113f86c5d db to app_handle! 2024-02-04 22:52:04 -08:00
Gregory Schier
236087fdc8 Single upserted_model event 2024-02-04 21:19:15 -08:00
Gregory Schier
7bb620e6d5 Fix DB mutex deadlock 2024-02-04 21:17:05 -08:00
Gregory Schier
acb01cf086 More messages 2024-02-04 19:08:31 -08:00
Gregory Schier
07cad2e337 Client streaming working 2024-02-04 17:53:15 -08:00
Gregory Schier
4ac0f20f2a Bidirectional working 2024-02-04 14:10:38 -08:00
Gregory Schier
be0cc4bfe4 Messages are flowing! 2024-02-04 12:09:10 -08:00
Gregory Schier
6d6f865fb7 Use req/conn/msg models in unary/server 2024-02-04 11:57:12 -08:00
Gregory Schier
d2b44cb7d2 Remove console log 2024-02-03 13:39:45 -08:00
Gregory Schier
1c7bdb346a Grpc layout use new models 2024-02-03 13:28:31 -08:00
Gregory Schier
4360b3658f Show gRPC requests in sidebar 2024-02-03 13:08:24 -08:00
Gregory Schier
47a8f06c90 gRPC models and tables 2024-02-03 11:14:42 -08:00
Gregory Schier
2a10113a57 Tiny fixes 2024-02-02 18:41:00 -08:00
Gregory Schier
fb817bc2d5 Better formatting 2024-02-02 13:37:44 -08:00
Gregory Schier
6c69fff27d A bit better handling of responses 2024-02-02 13:32:06 -08:00
Gregory Schier
d8948bb061 Split layouts and things 2024-02-02 12:41:37 -08:00
Gregory Schier
fdedb9bd28 bidi hacked! 2024-02-02 01:10:54 -08:00
Gregory Schier
4e781b752d Implement cancel 2024-02-02 00:18:37 -08:00
Gregory Schier
b526ea506b Better connection management 2024-02-01 20:29:32 -08:00
Gregory Schier
e3a2b7146b gRPC manager mostly working 2024-02-01 15:36:50 -08:00
Gregory Schier
1ae123bb51 Small refactor 2024-02-01 02:42:59 -08:00
Gregory Schier
c655557313 Refactor commands and DB 2024-02-01 02:29:24 -08:00
Gregory Schier
3ab1f5308c Some minor tweaks 2024-02-01 00:48:03 -08:00
Gregory Schier
9a2688617d Revert response JSON tree 2024-02-01 00:38:57 -08:00
Gregory Schier
a3c979a987 Even better styles 2024-02-01 00:36:49 -08:00
Gregory Schier
1628d0c843 Styled it up a bit 2024-02-01 00:16:09 -08:00
Gregory Schier
393df4e269 Merge remote-tracking branch 'origin/grpc' into grpc 2024-01-31 22:14:15 -08:00
Gregory Schier
1e309e821e Hacky server streaming done 2024-01-31 22:14:08 -08:00
Gregory Schier
acdec8c96d Hacky client streaming done 2024-01-31 22:13:46 -08:00
Gregory Schier
c64f1108f0 Initial frontend for gRPC UI 2024-01-30 16:43:54 -08:00
Gregory Schier
c51d5c5377 Hooked up test call from frontend! 2024-01-29 20:50:43 -08:00
Gregory Schier
373915671e Fix cookie jar 2024-01-28 17:49:04 -08:00
Gregory Schier
650aa240ea Track dialogs 2024-01-28 16:33:36 -08:00
Gregory Schier
2983f2544d Fix dropdown separator 2024-01-28 16:21:41 -08:00
Gregory Schier
2be41475e6 Better format 2024-01-28 16:19:46 -08:00
Gregory Schier
65c023c8b8 More response info 2024-01-28 16:02:49 -08:00
Gregory Schier
a54fff93a6 Better BG color 2024-01-28 14:43:04 -08:00
Gregory Schier
6104a8b3c2 Cookie Support (#19) 2024-01-28 14:39:51 -08:00
Gregory Schier
6c44035d2b Add shift to hotkey dialog hotkey 2024-01-19 22:11:20 -08:00
Gregory Schier
29e7bb1dcb Show alert after force checking updates 2024-01-19 22:11:02 -08:00
Gregory Schier
ae9c23b740 Better dialog padding 2024-01-19 22:08:32 -08:00
Gregory Schier
1df65fbf87 Change env hotkey to use shift 2024-01-19 21:53:48 -08:00
Gregory Schier
13fdf9d9e4 Fix URL 2px grow on focus 2024-01-19 21:49:51 -08:00
Gregory Schier
7da01e21e2 Bump version 2024-01-19 13:42:02 -08:00
Gregory Schier
05e8841e82 Fix analytics again 2024-01-18 22:28:25 -08:00
Gregory Schier
a837ffd7bb Fix dialog close button 2024-01-18 20:57:42 -08:00
Gregory Schier
def44d3266 Fix URLBar expanded state inner buttons 2024-01-18 20:40:56 -08:00
Gregory Schier
60acc86e52 Some analytics fixes 2024-01-18 20:23:02 -08:00
Gregory Schier
874c73b50f Launch analytics events, changelog, better filter styles 2024-01-18 14:42:02 -08:00
Gregory Schier
99d69687b6 Bump version 2024-01-17 14:56:47 -08:00
Gregory Schier
a49ae3d89d Custom HTTP method names 2024-01-17 14:52:19 -08:00
Gregory Schier
59f723827e Workspace header tweak Windows 2024-01-17 18:48:43 -08:00
Gregory Schier
b1e14a6dc4 Fix header in fullscreen mode on Mac 2024-01-17 09:34:47 -08:00
Gregory Schier
e459674338 Download response, and some fixes 2024-01-16 17:02:55 -08:00
Gregory Schier
e196f1d98e Fix editor toolbar blocking things 2024-01-15 21:44:53 -08:00
Gregory Schier
dc552b8099 Better request creation (Closes #14) 2024-01-15 21:39:27 -08:00
Gregory Schier
9658434503 XPath plugin 2024-01-15 21:27:47 -08:00
Gregory Schier
ade6c1c4f7 Fix send icon 2024-01-15 15:43:55 -08:00
Gregory Schier
2a759144d6 Switch to Lucide icons 2024-01-15 15:42:28 -08:00
Gregory Schier
b0e1614aac Improve response filter UX 2024-01-15 15:19:29 -08:00
Gregory Schier
13307a76af JSONPath filter plugins working 2024-01-15 15:06:49 -08:00
Gregory Schier
d23de93917 Move plugin stuff around 2024-01-15 14:33:51 -08:00
Gregory Schier
f55c8aba56 Fix request duplication 2024-01-15 13:47:44 -08:00
Gregory Schier
009036b004 Fix workspace defaults 2024-01-15 12:25:13 -08:00
Gregory Schier
8887d2a8e9 Better settings dialog 2024-01-15 12:16:44 -08:00
Gregory Schier
4df7356950 Fix resize observer 2024-01-15 12:02:08 -08:00
Gregory Schier
34a8fc4e22 Move request-related settings to workspace 2024-01-15 11:52:36 -08:00
Gregory Schier
b01747299f Bump beta version 2024-01-14 20:30:25 -08:00
Gregory Schier
3e9a89a4c9 fix mac decorations 2024-01-14 17:22:31 -08:00
Gregory Schier
2ef6885949 Integrated titlebar windows 2024-01-14 16:44:04 -08:00
Gregory Schier
218b593bfa Further titlebar tweaks 2024-01-14 12:02:44 -08:00
Gregory Schier
b60bc091b8 Better titlebar control icons 2024-01-14 11:56:21 -08:00
Gregory Schier
55a2d92c8b Basic Linux/Windows integrated titlebar 2024-01-13 23:40:32 -08:00
Gregory Schier
b212b80927 Fix hotkey formatting 2024-01-12 22:12:01 -08:00
Gregory Schier
9c4cd898a2 beta tag 2024-01-12 22:00:55 -08:00
Gregory Schier
93d1ff778e fix appearance init 2024-01-12 21:59:46 -08:00
Gregory Schier
a8630ede38 Vendor Openssl 2024-01-12 21:03:28 -08:00
Gregory Schier
3600f3aa26 Hotkeys for request switcher 2024-01-12 21:03:20 -08:00
Gregory Schier
905bce0322 Appearance setting and gzip/etc support 2024-01-12 13:39:08 -08:00
Gregory Schier
202e272e90 Initial settings implementation 2024-01-11 21:13:17 -08:00
Gregory Schier
11161fda51 Dropdown manages hotkeys now 2024-01-11 10:18:05 -08:00
Gregory Schier
9f75497f15 Hotkey for keyboard shortcut help 2024-01-10 22:05:16 -08:00
Gregory Schier
8dcf9a8921 Bump version number 2024-01-10 16:25:55 -08:00
Gregory Schier
d414709d1a Add hotkey dialog and rust-only analytics 2024-01-10 16:18:08 -08:00
Gregory Schier
94361f7c27 Fix beta icon 2024-01-08 17:07:42 -08:00
Gregory Schier
6056859da6 Bump version to 2024.0.0 2024-01-08 15:57:59 -08:00
Gregory Schier
b1692b41f0 Hotkey labels 2024-01-08 15:57:21 -08:00
Gregory Schier
312c01e405 Show hotkeys on empty views 2024-01-08 15:13:44 -08:00
Gregory Schier
6f15d1352b Remove base env, fix hotkeys, and QoL improvements 2024-01-07 22:24:19 -08:00
Gregory Schier
cb9960bbc8 Fix hotkeys getting stuck on cmd+tab 2024-01-07 21:32:25 -08:00
Gregory Schier
9e31bbcfa3 Always show settings dropdown 2023-11-22 09:39:30 -08:00
Gregory Schier
43706009a2 Tweak margin 2023-11-22 09:37:50 -08:00
Gregory Schier
c11a0ca823 Fix bottom-up dropdown positioning 2023-11-22 09:35:56 -08:00
Gregory Schier
77e3f4cc40 Bump version 2023-11-22 09:06:47 -08:00
Gregory Schier
884909d449 Better linux/Windows support for hotkeys 2023-11-22 09:06:22 -08:00
Gregory Schier
e5e356a822 Good hotkey support 2023-11-22 09:01:48 -08:00
Gregory Schier
1d9aa6748d Reset URL bar when request changes 2023-11-21 23:26:29 -08:00
Gregory Schier
7742cde11a Env dialog hotkey 2023-11-21 22:35:28 -08:00
Gregory Schier
7381dcec05 Remove response body and basic hotkeys 2023-11-21 22:15:01 -08:00
Gregory Schier
2c7bf29ec6 Remove app-specific menu items 2023-11-21 19:18:40 -08:00
Gregory Schier
dafaa5940a Fix macOS menu and fallback URL 2023-11-21 09:24:13 -08:00
Gregory Schier
0281396d58 Hide menu on windows/linux 2023-11-21 08:17:37 -08:00
Gregory Schier
e98081b9f2 Disable sandboxing (again) 2023-11-19 21:59:55 -08:00
Gregory Schier
0f7839bfaf Fix drag-drop reorder 2023-11-19 21:43:01 -08:00
Gregory Schier
d2f0e690e0 Postman ID generation 2023-11-19 20:54:02 -08:00
Gregory Schier
c7581d283e Bump beta.3 2023-11-19 20:46:55 -08:00
Gregory Schier
a68024604b Postman variables + urlencoded forms 2023-11-19 20:29:24 -08:00
Gregory Schier
ceb55bc56b Add back Windows/Linux builds 2023-11-19 18:22:13 -08:00
Gregory Schier
c9b2842e62 Remove Tauri context menu plugin 2023-11-19 18:21:10 -08:00
Gregory Schier
cb55bc1746 Fix header padding windows/linux 2023-11-19 18:14:49 -08:00
Gregory Schier
af59695a55 Some tweaks 2023-11-19 18:13:32 -08:00
Gregory Schier
a7a2608c44 Beta 2 2023-11-19 17:41:58 -08:00
Gregory Schier
78b8b96b8f Network entitlement 2023-11-19 17:41:46 -08:00
Gregory Schier
ed1427d421 Try sandboxing again 2023-11-19 17:06:31 -08:00
Gregory Schier
5c3f1af87b Remove sandboxing 2023-11-17 09:33:16 -08:00
Gregory Schier
8872b96efa Out of beta 2023-11-17 07:53:26 -08:00
Gregory Schier
44fa2c8dbb Tweak 2023-11-17 07:52:03 -08:00
Gregory Schier
3ad06be9d6 Format GraphQL variables 2023-11-17 07:51:03 -08:00
Gregory Schier
21bbb29a4f Drag into folder (Closes #8) 2023-11-17 07:36:01 -08:00
Gregory Schier
48923634d9 Mostly move some stuff around 2023-11-16 18:53:34 -08:00
Gregory Schier
f9703fbc1d Better update logic 2023-11-14 14:28:06 -08:00
Gregory Schier
8839a0b7af Better dropdown menu 2023-11-14 10:56:56 -08:00
Gregory Schier
edb820c7d9 Version to beta 2023-11-14 10:07:39 -08:00
Gregory Schier
8584f0aa33 Beta channel updates 2023-11-14 08:57:46 -08:00
Gregory Schier
f60cb35b5e Multipart form UI and fixes 2023-11-14 00:32:02 -08:00
Gregory Schier
a4f5e4a6b8 Got multipart working (text-only) 2023-11-13 23:26:11 -08:00
Gregory Schier
ecb3ace6a9 Fix window title moving stoplights (for now) 2023-11-13 23:25:47 -08:00
Gregory Schier
5f2b20a0da Postman import form data 2023-11-13 11:48:28 -08:00
Gregory Schier
2158692291 Some small improvements 2023-11-13 11:44:29 -08:00
Gregory Schier
feab2abe0c Form urlencoded bodies! 2023-11-13 11:28:37 -08:00
Gregory Schier
ae62a581a2 Url parameters done 2023-11-13 10:52:11 -08:00
Gregory Schier
92dcbedf2a Minor tweaks 2023-11-12 21:16:42 -08:00
Gregory Schier
356b8acd5b Custom updater code 2023-11-12 21:16:33 -08:00
Gregory Schier
5fd16b922c Request body is now an object 2023-11-12 11:16:12 -08:00
Gregory Schier
f1fc57830d Some postman import improvements 2023-11-11 10:43:11 -08:00
Gregory Schier
8951973f02 Sync window title (Closes #13) 2023-11-10 15:55:50 -08:00
Gregory Schier
2377b29d86 Dev app icon 2023-11-10 13:06:12 -08:00
Gregory Schier
f9879824d2 Upgrade sqlx 2023-11-10 12:28:33 -08:00
Gregory Schier
184ce2cb72 Clean up importers 2023-11-10 11:39:17 -08:00
Gregory Schier
2a2fb07c60 Fix is_empty check 2023-11-10 09:12:20 -08:00
Gregory Schier
feb542fd2b Postman importer semi-complete 2023-11-10 09:08:20 -08:00
Gregory Schier
d5295efd82 Tidy up logs and general cleanup 2023-11-09 20:33:09 -08:00
Gregory Schier
8156b51bda Move error alert to hook 2023-11-09 20:02:42 -08:00
Gregory Schier
b04b56d240 Show import errors 2023-11-09 20:00:19 -08:00
Gregory Schier
3685786cb5 Hacky Yaak import complete! 2023-11-09 19:40:31 -08:00
Gregory Schier
0d94306b28 More fallback request handing 2023-11-09 17:42:10 -08:00
Gregory Schier
895fdce1b7 Request fallback name in header 2023-11-09 17:34:57 -08:00
Gregory Schier
29e0b9e5d2 Better default request names 2023-11-09 17:26:04 -08:00
Gregory Schier
3f717d4c5a Better non-named requests 2023-11-09 17:17:03 -08:00
Gregory Schier
4ce2436ac5 Better Yaak export 2023-11-09 17:03:29 -08:00
Gregory Schier
8ec735a419 Refactor previous commit 2023-11-09 16:50:57 -08:00
Gregory Schier
c09bea29a2 Default request name to URL(ish) 2023-11-09 16:47:00 -08:00
Gregory Schier
97c5d2c7eb Rename initial workspace to "Yaak" 2023-11-09 13:17:21 -08:00
Gregory Schier
95b2e0ae62 No analytics in dev 2023-11-09 11:46:52 -08:00
Gregory Schier
6dd9a112fe Analytics event properties 2023-11-09 11:44:59 -08:00
Gregory Schier
95b428dcd6 Context menu, logs in DevTools, export, tweaks 2023-11-09 09:28:01 -08:00
Gregory Schier
d0c08fc8ef Fix plugin (again) 2023-11-08 13:33:15 -08:00
Gregory Schier
53452875da Bundle plugin in Git 2023-11-08 13:06:49 -08:00
Gregory Schier
a6609833c2 Move plugins back 2023-11-08 12:34:14 -08:00
Gregory Schier
6f68e11c4d Fix permissions 2023-11-08 12:02:17 -08:00
Gregory Schier
fe8365e860 Bump version 2023-11-08 10:12:01 -08:00
Gregory Schier
81188acac1 Tweak theme 2023-11-08 10:11:29 -08:00
Gregory Schier
bdb5305d16 Tweak theme 2023-11-08 09:56:13 -08:00
Gregory Schier
c4926f430a Track screen size, os, and version 2023-11-08 09:49:29 -08:00
Gregory Schier
98ed12a2df Rust analytics and a few tweaks 2023-11-08 09:13:32 -08:00
Gregory Schier
b35c692d58 Add basic analytics 2023-11-07 09:53:59 -08:00
Gregory Schier
7657166bfa Cancel responses on startup 2023-11-06 13:06:15 -08:00
Gregory Schier
bed0e034aa Send all in a folder 2023-11-06 10:53:39 -08:00
Gregory Schier
0ecb16a2e7 Rework workspace header 2023-11-06 10:42:59 -08:00
Gregory Schier
a30adb1fe9 Fix sidebar focus max recursion 2023-11-06 10:40:02 -08:00
Gregory Schier
1db78af0ad Save after formatting GraphQL (Closes #9) 2023-11-06 07:20:47 -08:00
Gregory Schier
0d2eb509e8 Move plugins back to root dir 2023-11-06 07:18:53 -08:00
Gregory Schier
5bfcccbb2f Persist sidebar collapsed state (Closes #10) 2023-11-06 07:18:42 -08:00
Gregory Schier
7eafff082c Vite to bundle insomnia plugin 2023-11-05 22:13:22 -08:00
Gregory Schier
8c51cb94b8 Better import conversion 2023-11-05 14:46:08 -08:00
Gregory Schier
b0612b8632 Basic import of request body and bearer auth 2023-11-05 14:35:25 -08:00
Gregory Schier
36a44c9ca6 Recursive Insomnia import! 2023-11-05 13:33:23 -08:00
Gregory Schier
94048a0337 Remove numbers from recent requests 2023-11-04 16:19:21 -07:00
Gregory Schier
11166470aa Fix drop marker indent 2023-11-04 11:16:41 -07:00
Gregory Schier
de190ca8fa Folder actions 2023-11-04 10:48:18 -07:00
Gregory Schier
9471009b8b Folder chevron icon 2023-11-03 23:10:44 -07:00
Gregory Schier
de165b5c55 Fix arrow navigation for nested sidebar 2023-11-03 17:29:33 -07:00
Gregory Schier
99e4b08653 Folder-based drag-n-drop complete! 2023-11-03 16:29:21 -07:00
Gregory Schier
65648ac877 Sidebar ordering 95% done! 2023-11-03 15:02:17 -07:00
Gregory Schier
b8a859895b Nested sidebar ordering almost working 2023-11-03 14:08:46 -07:00
Gregory Schier
60fa9dcf13 Add folder model 2023-11-03 07:49:44 -07:00
Gregory Schier
9f7fa3709e Even better focus state 2023-11-02 22:23:21 -07:00
Gregory Schier
1bf711826e Remove focus on env sidebar buttons 2023-11-02 22:18:13 -07:00
Gregory Schier
ff6969d41c Rearrange menus 2023-11-02 21:41:35 -07:00
Gregory Schier
1e7f629b28 Refactor environment edit dialog 2023-11-02 20:38:33 -07:00
Gregory Schier
68ea718c77 Base environments fully working 2023-11-02 18:43:39 -07:00
Gregory Schier
1cd6e0af06 Initial "plugin" system with importer (#7) 2023-11-02 18:08:43 -07:00
Gregory Schier
749025640f Fix cursor color in single-line mode 2023-10-31 15:10:33 -07:00
Gregory Schier
2e72cad591 Fix sending of ephemeral requests 2023-10-30 08:24:49 -07:00
Gregory Schier
7ce4ac3239 Fix GQL introspection and bearer auth templating 2023-10-30 08:07:34 -07:00
Gregory Schier
9d4f4bef5d Fix button styles 2023-10-30 07:27:27 -07:00
Gregory Schier
3b1e4f538d Fix editor stale callbacks and recent item deletion 2023-10-30 07:07:14 -07:00
Gregory Schier
8a73636f43 Refactored some core UI 2023-10-30 06:35:52 -07:00
Gregory Schier
451ffad24a Plugin module loading 2023-10-29 20:50:23 -07:00
Gregory Schier
851082be9d Bump version 2023-10-29 17:22:27 -07:00
Gregory Schier
bc3515d71e Fix sidebar scroll 2023-10-29 17:19:03 -07:00
Gregory Schier
ed87192468 A bit more playing with JS runtime 2023-10-29 17:05:48 -07:00
Gregory Schier
9a56b2f331 Initial "Hello World" for plugins 2023-10-29 16:43:28 -07:00
Gregory Schier
46470160a9 Fix request creation 2023-10-29 12:05:05 -07:00
Gregory Schier
9dd4489049 Restore recent environment on workspace change
Fixes #6
2023-10-29 11:32:55 -07:00
Gregory Schier
7dac299edd Fix var complete and env dialog actions 2023-10-29 11:18:55 -07:00
Gregory Schier
a9c67f59fc Remove broken key/value enter/backspace logic 2023-10-29 10:45:05 -07:00
Gregory Schier
c37c020cf0 Delete key/value on backspace 2023-10-29 10:26:38 -07:00
Gregory Schier
4d93892249 Move workspace menu, better env mgmt, QoL 2023-10-29 09:45:16 -07:00
Gregory Schier
b1764d0508 Bump version 2023-10-28 23:41:58 -07:00
Gregory Schier
76218365fc Better listening for path changes 2023-10-28 23:41:24 -07:00
Gregory Schier
aebaa8d4b7 Bump version 2023-10-28 22:14:51 -07:00
Gregory Schier
235ab2056d Fixed auto-focus in prompt and env dropdown 2023-10-28 22:14:12 -07:00
Gregory Schier
7b7e43a185 Clear selected sidebar index on drag-drop end 2023-10-28 21:47:00 -07:00
Gregory Schier
8baaa9beb2 Revert debug name 2023-10-28 21:43:09 -07:00
Gregory Schier
b9d1e70e04 Fix drag-n-drop things 2023-10-28 21:42:35 -07:00
Gregory Schier
b2150181b3 Persist window paths 2023-10-28 21:23:46 -07:00
Gregory Schier
e8b5e9de02 Bump version to 2023.1.0 2023-10-28 19:15:33 -07:00
Gregory Schier
9c68e62db3 Update placeholders when env changes 2023-10-28 19:14:51 -07:00
Gregory Schier
73190958fa Placeholder error and fix env nav 2023-10-28 19:08:31 -07:00
Gregory Schier
68fbb1a3ff Recent requests/workspaces. Closes #1 2023-10-28 18:46:54 -07:00
Gregory Schier
ac036ff814 Fix recent requests loading on startup 2023-10-28 18:27:18 -07:00
Gregory Schier
34bfc6840c Add tauri window save state plugin 2023-10-28 13:14:27 -07:00
Gregory Schier
805ea4a656 Fix rustfmt 2023-10-28 12:45:25 -07:00
Gregory Schier
677f436bcb Handle enabled/disabled variables and render multi 2023-10-28 11:36:40 -07:00
Gregory Schier
a44e88f53d Remove unused Variable type 2023-10-28 11:31:45 -07:00
Gregory Schier
3ad132d77d Variables under Environment, and render all props 2023-10-28 11:29:29 -07:00
Gregory Schier
d0387bdf76 Native Codemirror cursor 2023-10-27 13:14:41 -07:00
Gregory Schier
9f2577db66 Only wrap URLBar on focus and hotkey to open recent requests 2023-10-27 12:40:43 -07:00
Gregory Schier
ede0f1890f Resizing window no longer changes sidebar visibility
Fixes #4
2023-10-27 11:21:59 -07:00
Gregory Schier
439af5e8f2 Auto-expand URL bar height 2023-10-27 10:57:07 -07:00
Gregory Schier
4bf82ec3e9 Environment deletion and better actions menu 2023-10-26 16:18:47 -07:00
Gregory Schier
0e85d40f47 Stop autocomplete from jumping around 2023-10-26 15:27:48 -07:00
Gregory Schier
d62702f7dd Fix request creation from menu 2023-10-26 10:41:14 -07:00
Gregory Schier
d1bc5900fb Send requests with active environment 2023-10-26 10:32:06 -07:00
Gregory Schier
cba8a055d5 Move create request and fix slow HTML highlighting 2023-10-26 09:42:19 -07:00
Gregory Schier
8fd7979474 Better project selector, Fixes #2, and a bunch more 2023-10-26 09:11:44 -07:00
Gregory Schier
598cef948a Fixed some routing and introspection requests 2023-10-25 21:53:18 -07:00
Gregory Schier
51cadaf53b Environments in URL and better rendering 2023-10-25 11:13:00 -07:00
Gregory Schier
7715668e96 Move responses dropdown to separate component 2023-10-25 07:59:10 -07:00
Gregory Schier
4c2c0dd1de Fix dialog height 2023-10-25 00:02:51 -07:00
Gregory Schier
2567e72bfe Better style when no active environment 2023-10-24 23:58:12 -07:00
Gregory Schier
8665ca9acb Environment dropdown and actions 2023-10-24 09:17:29 -07:00
Gregory Schier
fa16e1f957 Started on environment edit dialog 2023-10-23 21:00:36 -07:00
Gregory Schier
83e2cab1b6 Hacky implementation of variable autocomplete 2023-10-23 10:31:21 -07:00
Gregory Schier
4ad5d7f291 Rendered first variable! 2023-10-22 22:30:29 -07:00
Gregory Schier
51f48d3883 Updating environments! 2023-10-22 22:06:51 -07:00
Gregory Schier
5cf59d7d70 Update .gitignore 2023-10-22 20:40:00 -07:00
Gregory Schier
39a441d118 Prettier and start of env editor 2023-10-22 20:38:57 -07:00
Gregory Schier
adea2c0e81 Environments data model 2023-10-22 18:28:56 -07:00
Gregory Schier
5821e4c232 Environment data model backend 2023-10-22 16:05:09 -07:00
Gregory Schier
75b108c6cd Fix some eslint warnings 2023-10-22 11:02:39 -07:00
Gregory Schier
66c80d4d9a Add APPLE_TEAM_ID 2023-10-18 14:12:08 -07:00
Gregory Schier
cd83d7d7ea Revert artifacts things 2023-10-18 13:25:35 -07:00
Gregory Schier
ee868203f6 Bump cargo deps 2023-10-18 13:25:20 -07:00
Gregory Schier
add21457ec Bump version 2023-10-18 12:14:38 -07:00
Gregory Schier
a43fa761c7 Fix sidebar drag-n-drop 2023-10-18 11:58:58 -07:00
Gregory Schier
5dae591c79 Retry button on introspection errors 2023-06-12 13:20:42 -07:00
Gregory Schier
e02954f396 Fix autocomplete doc font size 2023-05-31 21:32:48 -07:00
Gregory Schier
2297ee2a1d Persist introspection queries and also improve 2023-05-31 21:29:41 -07:00
Gregory Schier
0fec8d117b Update tauri NPM 2023-05-29 12:49:50 -07:00
Gregory Schier
465ccdd2b2 Fix graphql instrospection 2023-05-29 12:31:34 -07:00
Gregory Schier
6decba8a4a Change version 2023-04-27 16:53:39 -07:00
Gregory Schier
5a4fa40ab4 Version 1.0.0 2023-04-27 16:47:49 -07:00
Gregory Schier
f3ff0b660b Fix window methods on Linux/Windows 2023-04-27 16:27:02 -07:00
Gregory Schier
2a4889bc01 Cross platform window controls 2023-04-27 10:19:49 -07:00
Gregory Schier
8dfd3579e4 Fix ubuntu build 2023-04-26 17:00:30 -07:00
Gregory Schier
4741791673 Windows and Linux 2023-04-26 16:54:51 -07:00
Gregory Schier
2edfa9bd75 Bump version 2023-04-26 16:47:50 -07:00
Gregory Schier
8d37497eb7 Very basic CSV viewer 2023-04-22 21:53:04 +08:00
Gregory Schier
f4dcb67caa Truncate response files 2023-04-14 14:15:33 -07:00
Gregory Schier
d5774c6067 Randomly offset new windows 2023-04-14 14:05:23 -07:00
Gregory Schier
67007b1f5c Fix text encoding and delete responses 2023-04-14 13:50:41 -07:00
Gregory Schier
9755833577 Delete response files 2023-04-14 12:17:11 -07:00
Gregory Schier
b7909de566 Readonly editor disable tabindex 2023-04-13 22:36:11 -07:00
Gregory Schier
114ae4285d Fix imageview padding 2023-04-13 22:33:47 -07:00
Gregory Schier
a22154e8ce Duration and size tags 2023-04-13 20:50:17 -07:00
Gregory Schier
f33ef73f43 Comment 2023-04-13 18:55:32 -07:00
Gregory Schier
55c879abc2 Always store response on filesystem 2023-04-13 18:52:56 -07:00
Gregory Schier
c941cb6989 Support binary responses! 2023-04-13 18:48:40 -07:00
Gregory Schier
f8c5960156 Blur backdrop 2023-04-11 16:12:26 -07:00
Gregory Schier
6f625cdfd9 Autofocus buttons 2023-04-11 14:04:23 -07:00
Gregory Schier
11200677a0 Better opening workspaces and redirect workspace to recent request 2023-04-11 11:11:36 -07:00
Gregory Schier
f802d9d655 Button disabled style opacity 2023-04-10 16:03:45 -07:00
Gregory Schier
8c7409a24f Dropdown keys and pointer events 2023-04-10 16:02:29 -07:00
Gregory Schier
db2dc823f2 Upgrade deno core 2023-04-10 11:16:25 -07:00
Gregory Schier
ce26d1b86f Tweak response history 2023-04-09 23:15:51 -07:00
Gregory Schier
6c5ae5fcaa Fixed multi-window model sync 2023-04-09 22:32:47 -07:00
Gregory Schier
45c35eae31 Tweak recent requests 2023-04-09 22:25:00 -07:00
Gregory Schier
cb4ce9fdba Toggle settings 2023-04-09 22:12:16 -07:00
Gregory Schier
d9916f520e Fix sidebar request focus 2023-04-09 22:03:41 -07:00
Gregory Schier
0f33fd2588 More stuff on sidebar 2023-04-09 21:52:04 -07:00
Gregory Schier
5cc5f27420 Small tweaks 2023-04-09 15:32:13 -07:00
Gregory Schier
feec6fedfa Request history navigator 2023-04-09 15:26:54 -07:00
Gregory Schier
fb38708fad Enter name on create workspace 2023-04-09 12:27:02 -07:00
Gregory Schier
b82798bf49 Rename workspace 2023-04-09 12:23:41 -07:00
Gregory Schier
37f0eca79f Sidebar hover transitions 2023-04-06 16:30:46 -07:00
Gregory Schier
72bcc17799 Remove some more key value usage 2023-04-06 16:26:56 -07:00
Gregory Schier
b2524c1de0 A bunch of tweaks 2023-04-06 16:05:25 -07:00
Gregory Schier
0b3bd6313f macOS 12 2023-04-06 08:39:30 -07:00
Gregory Schier
afe075829a Remove system tray icon 2023-04-06 08:15:40 -07:00
Gregory Schier
d008324c3e Minor tweaks 2023-04-04 17:21:02 -07:00
Gregory Schier
79634532fd Fix some things 2023-04-04 16:56:45 -07:00
Gregory Schier
95622bc44b Editor line wrapping support (not used yet) 2023-04-04 16:40:37 -07:00
Gregory Schier
197bc38b69 remove janky last location tracking 2023-04-04 16:23:08 -07:00
Gregory Schier
fe9a06185d Fix resize cursor 2023-04-04 16:12:45 -07:00
Gregory Schier
8eb2a14737 Better button styles 2023-04-04 15:40:25 -07:00
Gregory Schier
7c7eba5f63 Bump version 2023-04-04 13:56:24 -07:00
Gregory Schier
302f1402cf Some small fixes 2023-04-04 13:56:14 -07:00
Gregory Schier
0ffe459a8b A few fixes 2023-04-04 13:31:48 -07:00
Gregory Schier
54310983a3 Better status tags and delete request on key 2023-04-04 12:36:30 -07:00
Gregory Schier
fcbe923770 Remove expects from request sending 2023-04-04 08:14:32 -07:00
Gregory Schier
b2a7d95922 Fix web view height 2023-04-04 07:51:41 -07:00
Gregory Schier
7da45506d4 Fix autocomplete spacing 2023-04-04 07:51:19 -07:00
Gregory Schier
51445b0d99 Fix input focus border 2023-04-03 12:19:37 -07:00
Gregory Schier
712626ac1f Hot keys and cleanup 2023-04-03 07:59:49 -07:00
Gregory Schier
c1d7f6e544 Add entitlemet for v8 2023-04-02 20:23:21 -07:00
Gregory Schier
5a81c5de17 Debug codesigned build 2023-04-02 19:09:14 -07:00
Gregory Schier
2faf2986cf Disable code signing 2023-04-02 18:27:14 -07:00
Gregory Schier
8c2e058ced Fix tauri script command 2023-04-02 17:25:24 -07:00
Gregory Schier
5a31c2c930 Fix universal binary 2023-04-02 17:12:20 -07:00
Gregory Schier
0931faeeb8 Bump version 2023-04-02 15:44:41 -07:00
Gregory Schier
79ecc0ae38 Fix toolchain 2023-04-02 15:44:21 -07:00
Gregory Schier
2ba401dde1 Add proper target 2023-04-02 15:42:19 -07:00
Gregory Schier
7d93dc7d62 Try universal binary 2023-04-02 15:33:13 -07:00
Gregory Schier
427d786ef1 Fix version 2023-04-02 15:25:24 -07:00
Gregory Schier
2accf518c3 Bump version 2023-04-02 14:54:41 -07:00
Gregory Schier
91e10e6a0a Notorization (hopefully) 2023-04-02 14:53:49 -07:00
Gregory Schier
01f12c5161 Change tabs again 2023-04-02 11:11:53 -07:00
Gregory Schier
62a367cd0c Better response headers 2023-04-02 10:45:41 -07:00
Gregory Schier
ceefbd1de1 Show response headers 2023-04-01 23:43:22 -07:00
Gregory Schier
3f713d878c Some more refactoring 2023-04-01 21:48:30 -07:00
Gregory Schier
bc35429670 Refactor debounce and tauri event listeners 2023-04-01 21:39:46 -07:00
Gregory Schier
5b563b8a16 Fix dropdown and dialog key handling 2023-04-01 21:04:39 -07:00
Gregory Schier
35e25842be Refactor sidebar display 2023-04-01 20:58:53 -07:00
Gregory Schier
55ce39e39d Better GraphQL schema fetching 2023-04-01 17:53:36 -07:00
Gregory Schier
9ab1df1c99 More eslint fixes 2023-04-01 15:48:37 -07:00
Gregory Schier
b23e56c3af Add React hooks eslint 2023-04-01 15:26:57 -07:00
Gregory Schier
604254257d Fix Tauri listeners 2023-04-01 00:02:17 -07:00
Gregory Schier
d7c9fe7991 Memo editor 2023-03-31 23:19:15 -07:00
Gregory Schier
ebc9939498 Fix request duplication 2023-03-31 22:54:32 -07:00
Gregory Schier
3fc5f72074 Fix tauri listeners causing too many updates 2023-03-31 22:48:34 -07:00
Gregory Schier
625abf2acb Remove import 2023-03-31 22:42:41 -07:00
Gregory Schier
0ad5ebde47 Fix 2023-03-31 22:42:26 -07:00
Gregory Schier
9a8c208a15 Upgrade Deno 2023-03-31 22:42:08 -07:00
Gregory Schier
72223c2dea Tweak 2023-03-31 16:14:25 -07:00
Gregory Schier
0b1f3466ec Fix send hotkey 2023-03-31 16:13:34 -07:00
Gregory Schier
f9206c7a01 Better schema fetching 2023-03-31 16:02:09 -07:00
Gregory Schier
4feb31390d Finally fix the editor! 2023-03-31 15:56:35 -07:00
Gregory Schier
3c517e0739 Fix editor blurring bug! 2023-03-31 13:53:28 -07:00
Gregory Schier
4f1c8b0d53 Better model updates 2023-03-31 13:21:02 -07:00
Gregory Schier
68159dfa95 Fix text obscuring 2023-03-30 17:22:52 -07:00
Gregory Schier
60d4ecda1a Button ring colors 2023-03-30 17:17:07 -07:00
Gregory Schier
6843823efc Remove dummy button 2023-03-30 17:12:38 -07:00
Gregory Schier
8998b8ab17 Confirm deletions 2023-03-30 17:09:11 -07:00
Gregory Schier
728d30f360 Dedicated event for model creation 2023-03-30 16:49:49 -07:00
Gregory Schier
90a96ef8e5 Unify text selection color 2023-03-30 16:36:24 -07:00
Gregory Schier
42de045263 Some icon tweaks 2023-03-30 16:29:14 -07:00
Gregory Schier
801b29402d Fix strict mode editor blur bug 2023-03-30 10:38:33 -07:00
Gregory Schier
bb2ba21bbd Better tauri listeners and stuff 2023-03-30 09:05:54 -07:00
Gregory Schier
7fcf709efe Remove updated_by, remember last location 2023-03-30 08:11:51 -07:00
Gregory Schier
904d20b9b8 Remove hardcoded window config 2023-03-29 22:16:21 -07:00
Gregory Schier
fa32829b2e Fix build 2023-03-29 22:15:55 -07:00
Gregory Schier
968e80b3ad Remove unused import 2023-03-29 21:53:49 -07:00
Gregory Schier
b721396340 Better multi-window updates 2023-03-29 21:53:20 -07:00
Gregory Schier
4b2c1b18a9 Fixed key/value stuff 2023-03-29 14:46:36 -07:00
Gregory Schier
06ce7abfb9 Fix bundle parts 2023-03-29 14:00:34 -07:00
Gregory Schier
ab15782019 Fix(ish) multiwindow updates 2023-03-29 11:15:37 -07:00
Gregory Schier
3548945202 Obscure text 2023-03-29 10:16:51 -07:00
Gregory Schier
5852877f4d Simple auth schemes 2023-03-29 09:03:38 -07:00
Gregory Schier
e96527ab27 Good start to multi-window 2023-03-28 18:29:40 -07:00
Gregory Schier
314b51db49 Focus traps for dialog and dropdown 2023-03-26 23:07:09 -07:00
Gregory Schier
d3d64b38a5 Confirmation Dialogs 2023-03-26 12:02:20 -07:00
Gregory Schier
9eb0fcd441 Floating sidebar 2023-03-26 10:09:28 -07:00
Gregory Schier
56a30aa7c4 Panel icons 2023-03-25 23:29:04 -07:00
Gregory Schier
def3c712c9 Update dialog 2023-03-25 21:59:18 -07:00
Gregory Schier
1589235b3f Optimistically-update key values 2023-03-25 21:54:00 -07:00
Gregory Schier
567b516bd0 More tweaks 2023-03-25 21:40:14 -07:00
Gregory Schier
1e8498b52c Animate dropdown 2023-03-25 21:36:17 -07:00
Gregory Schier
e3ef29bdfd Animate sidebar transition 2023-03-25 21:31:52 -07:00
Gregory Schier
ae4a43f406 Refactor and improve layout resizing 2023-03-25 21:16:10 -07:00
Gregory Schier
391a436ed3 Even better layouts 2023-03-25 18:33:01 -07:00
Gregory Schier
8f86c46f49 Better grid layouts 2023-03-25 18:12:09 -07:00
Gregory Schier
44710a8021 Global layout component 2023-03-25 13:26:31 -07:00
Gregory Schier
09c574bf30 Better dropdown separator 2023-03-25 11:06:05 -07:00
Gregory Schier
41390e9142 Fix sidebar drag 2023-03-24 08:37:52 -07:00
Gregory Schier
dcc2c053f8 Upgrade TYpescript 2023-03-23 15:37:36 -07:00
Gregory Schier
5ea45537d3 Fix resize 2023-03-23 07:47:58 -07:00
Gregory Schier
ae82bdc225 Style tweak 2023-03-21 23:59:09 -07:00
Gregory Schier
aeda504e64 GraphQL autocomplete and duplicate request 2023-03-21 23:54:45 -07:00
Gregory Schier
225b0956a8 Tweak sidebar drag resizer 2023-03-21 19:36:32 -07:00
Gregory Schier
7a6f0ccc46 Minor style tweaks 2023-03-21 18:31:05 -07:00
Gregory Schier
c51805fe69 Pull out resize bar 2023-03-21 16:53:49 -07:00
Gregory Schier
2caa13fdec Resize titlebar and tweak things 2023-03-21 16:42:52 -07:00
Gregory Schier
55970f0a92 Remove icon generation from build script 2023-03-21 14:21:07 -07:00
Gregory Schier
6f873fa186 query client cache and better body types 2023-03-21 11:38:37 -07:00
Gregory Schier
4adb8274ab Fix workspace deletion 2023-03-21 09:32:15 -07:00
Gregory Schier
a3783205b8 Use proper gray for syntax 2023-03-20 17:15:12 -07:00
Gregory Schier
a98487634c fix import 2023-03-20 17:13:14 -07:00
Gregory Schier
3bd4795def Minor tweaks 2023-03-20 17:12:19 -07:00
Gregory Schier
5a3b47846a Fix URL bar spacing 2023-03-20 17:01:29 -07:00
Gregory Schier
4b0793ebef Better radio dropdown type 2023-03-20 16:54:26 -07:00
Gregory Schier
f855d8ab16 Typesafe routing and CM line height issue 2023-03-20 16:47:36 -07:00
Gregory Schier
c5ca3daab3 Better tab dropdown handling 2023-03-20 14:14:30 -07:00
Gregory Schier
ec8bec32ba Fix request creation priority 2023-03-20 13:56:03 -07:00
Gregory Schier
54aa594a70 Remove log 2023-03-20 13:49:35 -07:00
Gregory Schier
15bc08390b Handle "no body" case 2023-03-20 13:49:21 -07:00
Gregory Schier
8b16258627 Small fix 2023-03-20 13:37:14 -07:00
Gregory Schier
6b5f1b4ade Fix pointer window drag 2023-03-20 13:34:49 -07:00
Gregory Schier
4de95e49e9 Fix extra dropdown element 2023-03-20 13:19:23 -07:00
Gregory Schier
e19ea612f5 Remove most of Radix UI 2023-03-20 13:16:58 -07:00
Gregory Schier
b84a5530be Better Header validation 2023-03-20 01:38:05 -07:00
Gregory Schier
9fc988b1de Tweak sidebar 2023-03-20 01:30:45 -07:00
Gregory Schier
c5b50c10f4 Fix pair editor container 2023-03-20 01:18:44 -07:00
Gregory Schier
b487938ffb Fix input thingy 2023-03-20 01:14:13 -07:00
Gregory Schier
e754dbc563 Container queries! 2023-03-20 01:08:41 -07:00
Gregory Schier
24ed6f0ee2 Better pair editor delete button 2023-03-20 00:30:42 -07:00
Gregory Schier
333b9319b6 Pair validation 2023-03-20 00:17:29 -07:00
Gregory Schier
b16d74d55b Don't send disabled headers 2023-03-20 00:05:19 -07:00
Gregory Schier
c5f5d72611 Small tweak 2023-03-20 00:04:40 -07:00
Gregory Schier
d57dfbf225 Pair checkboxes and fix twig indent 2023-03-20 00:03:33 -07:00
Gregory Schier
31e09aba4b Rewrote twig grammar 2023-03-19 22:12:11 -07:00
Gregory Schier
7314c8f36f Re-order of pair editor 2023-03-19 13:28:57 -07:00
Gregory Schier
05f20af9ed Better header editor and added completion data 2023-03-19 11:09:21 -07:00
Gregory Schier
c591394004 A couple tweaks 2023-03-19 01:01:13 -07:00
Gregory Schier
b586318d4b Persist sort priority! 2023-03-19 00:48:09 -07:00
Gregory Schier
9ac5572094 Create new workspace, and more optimizations 2023-03-18 19:36:31 -07:00
Gregory Schier
b1835561a8 Optimized a few components 2023-03-18 18:49:01 -07:00
Gregory Schier
6fc9b5a185 Fix sidebar drag-n-drop 2023-03-18 18:09:36 -07:00
Gregory Schier
1258550695 Got drag opacity working 2023-03-18 15:06:38 -07:00
Gregory Schier
0b6133efae Good start to drag-n-drop sidebar! 2023-03-18 14:41:07 -07:00
Gregory Schier
d02d4bc76f Fix mixed parser 2023-03-17 17:57:43 -07:00
Gregory Schier
43787a6b9e Dropdown highlight 2023-03-17 17:32:24 -07:00
Gregory Schier
e33085a7b4 Beginnings of autocomplete for headers 2023-03-17 16:51:20 -07:00
Gregory Schier
10616001df Flatten migrations, kvs lib, fix tabs 2023-03-17 08:36:21 -07:00
Gregory Schier
637c220475 Sidebar item dropdown 2023-03-16 15:37:53 -07:00
Gregory Schier
e472249133 Sidebar dragging 2023-03-16 14:34:49 -07:00
Gregory Schier
7b5df2feb4 Add devtools toggle hotkey 2023-03-16 11:25:38 -07:00
Gregory Schier
4bedcf3949 Adjust window sizes 2023-03-16 11:16:23 -07:00
Gregory Schier
cbe8cf3a05 Store appearance in k/v 2023-03-16 11:01:30 -07:00
Gregory Schier
48e43c3f9f Hotkeys and view mode kvs 2023-03-16 09:24:28 -07:00
Gregory Schier
03e36e7f1c Some fixes 2023-03-15 23:33:46 -07:00
Gregory Schier
e4d34c2943 Got key values working 2023-03-15 23:24:41 -07:00
Gregory Schier
ed468571d0 Fix editor padding 2023-03-15 17:29:35 -07:00
Gregory Schier
5292a03171 Minor style updates 2023-03-15 17:25:04 -07:00
Gregory Schier
0043c5fbda Add stuff to app header 2023-03-15 16:35:19 -07:00
Gregory Schier
3bbe9d9201 Better request delete and formatting 2023-03-15 09:41:38 -07:00
Gregory Schier
97db32fdf2 Fix graphql and other things 2023-03-15 09:06:56 -07:00
Gregory Schier
b599ab9f5b Header editor to pair editor 2023-03-15 08:09:45 -07:00
Gregory Schier
3aaf365e4a Better header editor 2023-03-15 07:54:04 -07:00
Gregory Schier
34589f8b06 Strict mode and tweak layout padding 2023-03-14 20:19:45 -07:00
Gregory Schier
b761e3d9c1 Add GraphQL variables editor 2023-03-14 19:56:02 -07:00
Gregory Schier
3247190a46 GraphQL query editor transformer works! 2023-03-14 19:08:18 -07:00
Gregory Schier
b9294ff994 Add body type to request and tab dropdown 2023-03-14 11:18:56 -07:00
Gregory Schier
e67118bfa9 Improved header editor 2023-03-14 00:54:41 -07:00
Gregory Schier
4a949b2720 Fix platform check 2023-03-14 00:15:01 -07:00
Gregory Schier
1e09f09bd6 Some small changes 2023-03-14 00:08:03 -07:00
Gregory Schier
a209a486aa Move stuff around 2023-03-13 23:30:14 -07:00
Gregory Schier
02574cf5e0 Refactor hooks to be easier to use 2023-03-13 23:25:41 -07:00
Gregory Schier
d7ff52038d Fix header editor and scroll in general 2023-03-13 19:37:36 -07:00
Gregory Schier
e2fa188ca3 Lazy load routes 2023-03-13 13:56:13 -07:00
Gregory Schier
90c873e37e Back to React 2023-03-13 09:50:49 -07:00
Gregory Schier
03461ffa77 Move some stuff around 2023-03-13 09:24:38 -07:00
Gregory Schier
9245805c92 Fix URL bar 2023-03-13 00:13:25 -07:00
Gregory Schier
7ad1bd54ac Fix ButtonLink and edit request names 2023-03-13 00:11:23 -07:00
Gregory Schier
4ad91b4553 Remove old rust cache action 2023-03-12 22:48:43 -07:00
Gregory Schier
8cf3b1ae02 Better rust cache 2023-03-12 22:47:43 -07:00
Gregory Schier
47c753045c Start GraphQL support 2023-03-12 22:43:25 -07:00
Gregory Schier
389a0d785c Fix artifact tag 2023-03-12 21:41:15 -07:00
Gregory Schier
364cdb06df Remove wasm stuff 2023-03-12 21:25:31 -07:00
Gregory Schier
1b6c32c7ac Use tauri action 2023-03-12 21:13:08 -07:00
Gregory Schier
3af720d93a Fix traffic lights thingy 2023-03-12 20:47:52 -07:00
Gregory Schier
babe9adc3d Cache cargo bin for "install" 2023-03-12 19:10:39 -07:00
Gregory Schier
790a3daddd Refformat 2023-03-12 19:03:27 -07:00
Gregory Schier
072d0ade88 Fix artifact upload 2023-03-12 19:01:48 -07:00
Gregory Schier
f6fcb54a6e Fix dev 2023-03-12 18:39:02 -07:00
Gregory Schier
1ffad989f9 Split out macos deps 2023-03-12 18:36:25 -07:00
Gregory Schier
f1326620bc Cache workflow 2023-03-12 18:28:14 -07:00
Gregory Schier
7e815444ff Add wasm-pack 2023-03-12 18:19:20 -07:00
Gregory Schier
37bae62a4d Install rsw 2023-03-12 18:14:38 -07:00
Gregory Schier
085916dfe4 Fix artifact names 2023-03-12 18:13:00 -07:00
Gregory Schier
6394c380fc Fix build command 2023-03-12 18:11:24 -07:00
Gregory Schier
e08d8414b7 Update secrets context 2023-03-12 18:07:57 -07:00
Gregory Schier
7e6e605cdb Update workflow name 2023-03-12 18:05:45 -07:00
Gregory Schier
f9e0c4bc24 Fix workflow 2023-03-12 18:05:13 -07:00
Gregory Schier
9dfe3db720 Start of auto updates 2023-03-12 18:04:11 -07:00
Gregory Schier
a709e4b19f Fix tabbing to tabs 2023-03-11 23:32:39 -08:00
Gregory Schier
971cd02142 Fix eslint errors 2023-03-11 23:29:25 -08:00
Gregory Schier
f846fa8dbc Got tab content scrolling working 2023-03-11 22:36:13 -08:00
Gregory Schier
df22285d15 Removed some debug stuff 2023-03-10 10:43:15 -08:00
Gregory Schier
0b3497e5a1 Refactor editor to update better 2023-03-10 10:39:23 -08:00
Gregory Schier
e9e3ba283c Fix headers persistence and better sending 2023-03-09 13:38:17 -08:00
Gregory Schier
de0bd57622 Hook up header editor! 2023-03-09 13:07:13 -08:00
Gregory Schier
109006db66 Fix 2023-03-09 10:58:27 -08:00
Gregory Schier
cb43f17efc Fix blur de-select speed 2023-03-09 10:57:34 -08:00
Gregory Schier
d8da396c2f Fix Codemirror performance!! 2023-03-09 10:50:55 -08:00
Gregory Schier
5fbc5edb15 Switch to Preact!!! 2023-03-09 00:47:25 -08:00
Gregory Schier
17c734af11 Move some things around 2023-03-08 23:20:15 -08:00
Gregory Schier
226781af8e Better scrollbar color 2023-03-08 19:23:24 -08:00
Gregory Schier
6c8f4c943a Zoom, better sizes, color picker, sidebar footer 2023-03-08 19:22:04 -08:00
Gregory Schier
c37cfaf0e4 Read-only editor 2023-03-08 16:53:13 -08:00
Gregory Schier
956a2ef5ce More theme tweaks 2023-03-08 16:37:20 -08:00
Gregory Schier
571293a34d Debounce autocomplete 2023-03-08 11:25:20 -08:00
Gregory Schier
6eaad1352a Minor theme updates again 2023-03-08 09:43:35 -08:00
Gregory Schier
eec65f8721 Editor tweaks 2023-03-07 23:05:33 -08:00
Gregory Schier
25fc0c2f07 Remove unneeded space 2023-03-07 22:58:13 -08:00
Gregory Schier
317ca24dcf Fix small view 2023-03-07 22:55:51 -08:00
Gregory Schier
366116ab1b Minor style tweaks 2023-03-07 22:21:58 -08:00
Gregory Schier
520db48234 Lots more theme stuff 2023-03-07 21:52:21 -08:00
Gregory Schier
5aa80d8ea8 Start of themes 2023-03-07 11:24:38 -08:00
Gregory Schier
b48a41aaec More subtle layout tweaks 2023-03-06 08:57:57 -08:00
Gregory Schier
986cd56662 More layout fiddling and error page 2023-03-04 22:26:00 -08:00
Gregory Schier
1ecf642181 More work on the layout 2023-03-04 21:51:17 -08:00
Gregory Schier
1f5e7dbaa9 Try new layout and a bunch of editor fixes 2023-03-04 19:06:12 -08:00
Gregory Schier
030ba26c5e Fix autocomplete inside dialog 2023-03-03 17:03:20 -08:00
Gregory Schier
7668a093a9 Beginnings of Header Editor 2023-03-03 13:18:57 -08:00
Gregory Schier
534d45bccf Fix tailwind dark selector 2023-03-03 07:54:19 -08:00
Gregory Schier
c30caf11fe Fix content type in URL 2023-03-02 23:17:09 -08:00
Gregory Schier
420f7aa7c3 Add Dialog component 2023-03-02 18:46:10 -08:00
Gregory Schier
77ca90779c More colors 2023-03-02 17:56:53 -08:00
Gregory Schier
a7488b389d Minor style tweaks 2023-03-02 16:16:41 -08:00
Gregory Schier
016adbcb30 Improved autocompletion! 2023-03-02 11:14:51 -08:00
Gregory Schier
132466f03b Rename, fix autocomplete and singleline, etc... 2023-03-02 10:42:43 -08:00
Gregory Schier
b5496f0f48 Editor placeholder 2023-03-01 14:22:10 -08:00
Gregory Schier
4d7df9023e Some minor bugs 2023-03-01 14:16:02 -08:00
Gregory Schier
c6ba978069 Fix migrations for build and iframe rendering 2023-03-01 10:31:50 -08:00
Gregory Schier
7490106014 Tweaks 2023-03-01 10:19:21 -08:00
Gregory Schier
569a9454ad Response streaming 2023-03-01 09:05:00 -08:00
Gregory Schier
5040d73a8b Autocomplete, and more CM stuff! 2023-02-28 22:54:54 -08:00
Gregory Schier
1e57890d2e Some small tweaks 2023-02-28 17:25:59 -08:00
Gregory Schier
af964ac383 Better editor updating 2023-02-28 12:41:03 -08:00
Gregory Schier
88c9df4577 URL highlighting with inline CM 2023-02-28 11:26:26 -08:00
Gregory Schier
74dd4ee979 Implement request deletion 2023-02-27 15:42:06 -08:00
Gregory Schier
8efd95fdbe Tauri events for request model updates 2023-02-27 13:28:50 -08:00
Gregory Schier
d0846dcd11 Split request upsert command 2023-02-27 10:00:57 -08:00
Gregory Schier
9dc8234f4b Add toggle for pretty view 2023-02-27 09:08:48 -08:00
Gregory Schier
fe18cd1806 Small tweaks 2023-02-26 15:25:55 -08:00
Gregory Schier
2c0a891838 Add variable highlighting widgets 2023-02-26 15:06:14 -08:00
Gregory Schier
640d2a1bb4 Dropdown scrolling 2023-02-25 23:33:07 -08:00
Gregory Schier
bf691017fd Show response body size 2023-02-25 23:08:19 -08:00
Gregory Schier
b166401d4f A bunch more small things 2023-02-25 23:04:31 -08:00
Gregory Schier
2cf7ced1f2 Added react-router 2023-02-25 18:04:14 -08:00
Gregory Schier
e4a257b807 Migrations and initial data stuff 2023-02-25 16:39:18 -08:00
Gregory Schier
b8bb9f43e3 Minor tweaks 2023-02-24 17:01:48 -08:00
Gregory Schier
5b2f1e40aa Dummy requests in sidebar 2023-02-24 16:46:56 -08:00
Gregory Schier
2b92b7ab01 Codemirror initial value support 2023-02-24 16:43:47 -08:00
Gregory Schier
a77e378730 Send request body 2023-02-24 16:09:19 -08:00
Gregory Schier
b3795d99b5 Vendor basicSetup 2023-02-24 14:51:56 -08:00
Gregory Schier
2d83a536b9 Additional methods and tweaks 2023-02-24 14:10:25 -08:00
Gregory Schier
a5829a9b6b Focus states 2023-02-24 12:35:13 -08:00
Gregory Schier
5a9fb5a3a7 Hook up theme and clear responses 2023-02-24 12:13:30 -08:00
Gregory Schier
4319ce9a7b SQLite store in proper dir 2023-02-22 20:18:14 -08:00
Gregory Schier
e5551c489f Started on grid layout 2023-02-22 19:44:44 -08:00
Gregory Schier
21a562c6fd Save responses in DB 2023-02-22 18:53:44 -08:00
Gregory Schier
302f0a1860 Better URL bar 2023-02-22 16:15:25 -08:00
Gregory Schier
3b591d241c Cleaner URL bar and some improvements 2023-02-22 15:58:04 -08:00
Gregory Schier
238bd3df78 Refactor classname usage 2023-02-21 18:03:57 -08:00
Gregory Schier
30b1b87fea Some minor tweaks 2023-02-21 17:56:48 -08:00
640 changed files with 246194 additions and 10603 deletions

View File

@@ -1,5 +1,6 @@
node_modules/
dist/
.prettierrc.cjs
.eslintrc.cjs
env.d.ts
.prettierrc.cjs
src-web/postcss.config.cjs
src-web/vite.config.ts

View File

@@ -1,25 +1,47 @@
module.exports = {
extends: [
'eslint:recommended',
'plugin:react/recommended',
'plugin:import/recommended',
'plugin:jsx-a11y/recommended',
'plugin:@typescript-eslint/recommended',
'eslint-config-prettier',
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: [
'scripts/**/*',
'plugin-runtime/**/*',
'plugin-runtime-types/**/*',
'src-tauri/**/*',
'src-web/tailwind.config.cjs',
'src-web/vite.config.ts',
],
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',
},
],
ignorePatterns: ['src-tauri/**/*'],
settings: {
react: {
version: 'detect',
},
'import/resolver': {
node: {
paths: ['src-web'],
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
},
},
rules: {
"react/react-in-jsx-scope": "off",
},
},
};

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
src-tauri/vendored/**/* linguist-generated=true
src-tauri/gen/schemas/**/* linguist-generated=true

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,5 @@
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."

18
.github/workflows/ci-js.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
on:
pull_request:
branches: [develop]
name: CI (JS)
jobs:
test:
name: Lint/Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm run lint
- run: npm test

36
.github/workflows/ci-rust.yml vendored Normal file
View File

@@ -0,0 +1,36 @@
on:
pull_request:
branches: [develop]
paths:
- src-tauri/**
- .github/workflows/**
name: CI (Rust)
defaults:
run:
working-directory: src-tauri
jobs:
test:
name: Check/Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev
- uses: dtolnay/rust-toolchain@stable
- uses: actions/cache@v3
continue-on-error: false
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- run: cargo check --all
- run: cargo test --all

113
.github/workflows/release.yml vendored Normal file
View File

@@ -0,0 +1,113 @@
name: Generate Artifacts
on:
push:
tags: [ v* ]
env:
YAAK_PLUGINS_DIR: checkout/plugins
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'
- platform: 'macos-latest' # for Intel-based Macs.
args: '--target x86_64-apple-darwin'
yaak_arch: 'x64'
- platform: 'ubuntu-22.04' # for Tauri v1, you could replace this with ubuntu-20.04.
args: ''
yaak_arch: 'x64'
- platform: 'windows-latest'
args: ''
yaak_arch: 'x64'
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout yaakapp/app
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
- uses: actions/setup-go@v5
with:
go-version: '1.22'
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
with:
# Those targets are only used on macos runners so it's in an `if` to slightly speed up windows and linux builds.
targets: ${{ matrix.platform == 'macos-latest' && 'aarch64-apple-darwin,x86_64-apple-darwin' || '' }}
- uses: actions/cache@v3
continue-on-error: false
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: ${{ runner.os }}-cargo-
- name: install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-22.04' # This must match the platform value defined above.
run: |
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install NPM Dependencies
run: |
npm ci
npm install @yaakapp/cli
- name: Install Protoc for plugin-runtime
uses: arduino/setup-protoc@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Run lint
run: npm run lint
- name: Checkout yaakapp/plugins
uses: actions/checkout@v4
with:
repository: yaakapp/plugins
path: ${{ env.YAAK_PLUGINS_DIR }}
- name: Set version
run: npm run replace-version
env:
YAAK_VERSION: ${{ github.ref_name }}
- uses: tauri-apps/tauri-action@v0
env:
YAAK_PLUGINS_DIR: ${{ env.YAAK_PLUGINS_DIR }}
YAAK_TARGET_ARCH: ${{ matrix.yaak_arch }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_SIGNING_PRIVATE_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/blog/__VERSION__'
releaseDraft: true
prerelease: false
args: ${{ matrix.args }}

9
.gitignore vendored
View File

@@ -22,5 +22,12 @@ dist-ssr
*.njsproj
*.sln
*.sw?
.eslintcache
.rsw
*.sqlite
*.sqlite-*
.cargo
.tmp
tmp

2
.nvmrc
View File

@@ -1 +1 @@
18
20

View File

@@ -1,3 +1,4 @@
node_modules/
dist/
out/
.prettierrc.cjs

62
DEVELOPMENT.md Normal file
View File

@@ -0,0 +1,62 @@
# 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
```
_NOTE: Run with `YAAK_PLUGINS_DIR=<Path to yaakapp/plugins>` to re-build bundled plugins_
## Run the App
After bootstrapping, start the app in development mode:
```shell
npm start
```
_NOTE: If working on bundled plugins, run with `YAAK_PLUGINS_DIR=<Path to yaakapp/plugins>`_
## SQLite Migrations
New migrations can be created from the `src-tauri/` directory:
```shell
cd src-tauri
sqlx migrate add migration-name
```
Run the app to apply the migrations.
If nothing happens, try `cargo clean` and run the app again.
_Note: Development builds use a separate database location from production builds._

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
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.

View File

@@ -1,3 +1,20 @@
# Tauri REST Client
# Yaak API Client
It's a REST client, yo.
Yaak is a desktop API client for organizing and executing REST, GraphQL, and gRPC
requests. It's built using [Tauri](https://tauri.app), Rust, and ReactJS.
![screenshot](https://github.com/user-attachments/assets/f18e963f-0b68-4ecb-b8b8-cb71aa9aec02)
## Feedback and Bug Reports
All feedback, bug reports, questions, and feature requests should be reported to
[feedback.yaak.app](https://feedback.yaak.app). Issues will be duplicated
in this repository if applicable.
## Contribution Policy
Yaak open source, but only accepting contributions for bug fixes. See the
[`good first issue`](https://github.com/yaakapp/app/labels/good%20first%20issue) label for
issues that are more approachable for contribution.
To get started, visit [`DEVELOPMENT.md`](DEVELOPMENT.md) for tips on setting up your environment.

View File

@@ -1,15 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Tauri + React + TS</title>
</head>
<body>
<div id="root"></div>
<div id="radix-portal"></div>
<script type="module" src="/src-web/main.tsx"></script>
</body>
</html>

17319
package-lock.json generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,51 +1,48 @@
{
"name": "tauri-app",
"name": "yaak-app",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"build": "rsw build && tsc && vite build",
"dev": "vite",
"lint": "eslint . --ext .ts,.tsx",
"preview": "vite preview",
"tauri-dev": "concurrently -n app,rsw \"tauri dev\" \"rsw watch\""
"repository": {
"type": "git",
"url": "git+https://github.com/yaakapp/app.git"
},
"dependencies": {
"@codemirror/lang-html": "^6.4.2",
"@codemirror/lang-javascript": "^6.1.4",
"@codemirror/lang-json": "^6.0.1",
"@radix-ui/react-dropdown-menu": "^2.0.2",
"@radix-ui/react-icons": "^1.2.0",
"@radix-ui/react-popover": "1.0.3",
"@tauri-apps/api": "^1.2.0",
"@typescript-eslint/eslint-plugin": "^5.52.0",
"@typescript-eslint/parser": "^5.52.0",
"classnames": "^2.3.2",
"codemirror": "^6.0.1",
"eslint": "^8.34.0",
"eslint-config-prettier": "^8.6.0",
"eslint-plugin-import": "^2.27.5",
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-plugin-react": "^7.32.2",
"framer-motion": "^9.0.4",
"prettier": "^2.8.4",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-helmet-async": "^1.3.0"
"workspaces": [
"plugin-runtime",
"plugin-runtime-types",
"src-tauri/yaak_models",
"src-tauri/yaak_plugin_runtime",
"src-tauri/yaak_sync",
"src-tauri/yaak_templates",
"src-tauri/yaak_sse",
"src-web"
],
"scripts": {
"start": "npm run app-dev",
"app-build": "tauri build",
"app-dev": "tauri dev --no-watch --config ./src-tauri/tauri-dev.conf.json",
"bootstrap": "run-p bootstrap:* && npm run --workspaces --if-present bootstrap",
"bootstrap:vendor-node": "node scripts/vendor-node.cjs",
"bootstrap:vendor-plugins": "node scripts/vendor-plugins.cjs",
"bootstrap:vendor-protoc": "node scripts/vendor-protoc.cjs",
"lint": "npm run --workspaces --if-present lint",
"replace-version": "node scripts/replace-version.cjs",
"tauri": "tauri",
"tauri-before-build": "npm run bootstrap && npm run --workspaces --if-present build",
"tauri-before-dev": "npm run --workspaces --if-present dev"
},
"devDependencies": {
"@tauri-apps/cli": "^1.2.2",
"@types/node": "^18.7.10",
"@types/react": "^18.0.15",
"@types/react-dom": "^18.0.6",
"@vitejs/plugin-react": "^3.0.0",
"autoprefixer": "^10.4.13",
"concurrently": "^7.6.0",
"postcss": "^8.4.21",
"tailwindcss": "^3.2.7",
"typescript": "^4.6.4",
"vite": "^4.0.0",
"vite-plugin-rsw": "^2.0.11",
"vite-plugin-top-level-await": "^1.2.4"
"@tauri-apps/cli": "^2.1.0",
"@typescript-eslint/eslint-plugin": "^8.5.0",
"@typescript-eslint/parser": "^8.5.0",
"eslint": "^8",
"eslint-config-prettier": "^8",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-jsx-a11y": "^6.10.0",
"eslint-plugin-react": "^7.35.2",
"eslint-plugin-react-hooks": "^4.6.2",
"nodejs-file-downloader": "^4.13.0",
"npm-run-all": "^4.1.5",
"prettier": "^3.3.3",
"typescript": "^5.6.2"
}
}

2
plugin-runtime-types/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
lib
node_modules

47
plugin-runtime-types/package-lock.json generated Normal file
View File

@@ -0,0 +1,47 @@
{
"name": "@yaakapp/api",
"version": "0.1.17",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@yaakapp/api",
"version": "0.1.17",
"dependencies": {
"@types/node": "^22.5.4"
},
"devDependencies": {
"typescript": "^5.6.2"
}
},
"node_modules/@types/node": {
"version": "22.5.4",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
"integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.19.2"
}
},
"node_modules/typescript": {
"version": "5.6.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
"integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/undici-types": {
"version": "6.19.8",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"license": "MIT"
}
}
}

View File

@@ -0,0 +1,26 @@
{
"name": "@yaakapp/api",
"version": "0.2.16",
"main": "lib/index.js",
"typings": "./lib/index.d.ts",
"files": [
"lib/**/*"
],
"scripts": {
"bootstrap": "npm run build",
"build": "run-s build:copy-types build:tsc",
"build:tsc": "tsc",
"build:copy-types": "run-p build:copy-types:*",
"build:copy-types:root": "cpy --flat ../src-tauri/yaak_plugin_runtime/bindings/*.ts ./src/bindings",
"build:copy-types:next": "cpy --flat ../src-tauri/yaak_plugin_runtime/bindings/serde_json/*.ts ./src/bindings/serde_json",
"prepublishOnly": "npm run build"
},
"dependencies": {
"@types/node": "^22.5.4"
},
"devDependencies": {
"cpy-cli": "^5.0.0",
"npm-run-all": "^4.1.5",
"typescript": "^5.6.2"
}
}

View File

@@ -0,0 +1,237 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Environment } from "./models";
import type { Folder } from "./models";
import type { GrpcRequest } from "./models";
import type { HttpRequest } from "./models";
import type { HttpResponse } from "./models";
import type { JsonValue } from "./serde_json/JsonValue";
import type { Workspace } from "./models";
export type BootRequest = { dir: string, watch: boolean, };
export type BootResponse = { name: string, version: string, capabilities: Array<string>, };
export type CallHttpRequestActionArgs = { httpRequest: HttpRequest, };
export type CallHttpRequestActionRequest = { key: string, pluginRefId: string, args: CallHttpRequestActionArgs, };
export type CallTemplateFunctionArgs = { purpose: RenderPurpose, values: { [key in string]?: string }, };
export type CallTemplateFunctionRequest = { name: string, args: CallTemplateFunctionArgs, };
export type CallTemplateFunctionResponse = { value: string | null, };
export type Color = "custom" | "default" | "primary" | "secondary" | "info" | "success" | "notice" | "warning" | "danger";
export type CopyTextRequest = { text: string, };
export type ExportHttpRequestRequest = { httpRequest: HttpRequest, };
export type ExportHttpRequestResponse = { content: string, };
export type FilterRequest = { content: string, filter: string, };
export type FilterResponse = { content: string, };
export type FindHttpResponsesRequest = { requestId: string, limit?: number, };
export type FindHttpResponsesResponse = { httpResponses: Array<HttpResponse>, };
export type GetHttpRequestActionsRequest = Record<string, never>;
export type GetHttpRequestActionsResponse = { actions: Array<HttpRequestAction>, pluginRefId: string, };
export type GetHttpRequestByIdRequest = { id: string, };
export type GetHttpRequestByIdResponse = { httpRequest: HttpRequest | null, };
export type GetTemplateFunctionsResponse = { functions: Array<TemplateFunction>, pluginRefId: string, };
export type HttpRequestAction = { key: string, label: string, icon?: Icon, };
export type Icon = "copy" | "info" | "check_circle" | "alert_triangle" | "_unknown";
export type ImportRequest = { content: string, };
export type ImportResources = { workspaces: Array<Workspace>, environments: Array<Environment>, folders: Array<Folder>, httpRequests: Array<HttpRequest>, grpcRequests: Array<GrpcRequest>, };
export type ImportResponse = { resources: ImportResources, };
export type InternalEvent = { id: string, pluginRefId: string, replyId: string | null, payload: InternalEventPayload, windowContext: WindowContext, };
export type InternalEventPayload = { "type": "boot_request" } & BootRequest | { "type": "boot_response" } & BootResponse | { "type": "reload_request" } | { "type": "reload_response" } | { "type": "terminate_request" } | { "type": "terminate_response" } | { "type": "import_request" } & ImportRequest | { "type": "import_response" } & ImportResponse | { "type": "filter_request" } & FilterRequest | { "type": "filter_response" } & FilterResponse | { "type": "export_http_request_request" } & ExportHttpRequestRequest | { "type": "export_http_request_response" } & ExportHttpRequestResponse | { "type": "send_http_request_request" } & SendHttpRequestRequest | { "type": "send_http_request_response" } & SendHttpRequestResponse | { "type": "get_http_request_actions_request" } & GetHttpRequestActionsRequest | { "type": "get_http_request_actions_response" } & GetHttpRequestActionsResponse | { "type": "call_http_request_action_request" } & CallHttpRequestActionRequest | { "type": "get_template_functions_request" } | { "type": "get_template_functions_response" } & GetTemplateFunctionsResponse | { "type": "call_template_function_request" } & CallTemplateFunctionRequest | { "type": "call_template_function_response" } & CallTemplateFunctionResponse | { "type": "copy_text_request" } & CopyTextRequest | { "type": "render_http_request_request" } & RenderHttpRequestRequest | { "type": "render_http_request_response" } & RenderHttpRequestResponse | { "type": "template_render_request" } & TemplateRenderRequest | { "type": "template_render_response" } & TemplateRenderResponse | { "type": "show_toast_request" } & ShowToastRequest | { "type": "prompt_text_request" } & PromptTextRequest | { "type": "prompt_text_response" } & PromptTextResponse | { "type": "get_http_request_by_id_request" } & GetHttpRequestByIdRequest | { "type": "get_http_request_by_id_response" } & GetHttpRequestByIdResponse | { "type": "find_http_responses_request" } & FindHttpResponsesRequest | { "type": "find_http_responses_response" } & FindHttpResponsesResponse | { "type": "empty_response" };
export type OpenFileFilter = { name: string,
/**
* File extensions to require
*/
extensions: Array<string>, };
export type PromptTextRequest = { id: string, title: string, label: string, description?: string, defaultValue?: string, placeholder?: string,
/**
* Text to add to the confirmation button
*/
confirmText?: string,
/**
* Text to add to the cancel button
*/
cancelText?: string,
/**
* Require the user to enter a non-empty value
*/
require?: boolean, };
export type PromptTextResponse = { value: string | null, };
export type RenderHttpRequestRequest = { httpRequest: HttpRequest, purpose: RenderPurpose, };
export type RenderHttpRequestResponse = { httpRequest: HttpRequest, };
export type RenderPurpose = "send" | "preview";
export type SendHttpRequestRequest = { httpRequest: HttpRequest, };
export type SendHttpRequestResponse = { httpResponse: HttpResponse, };
export type ShowToastRequest = { message: string, color?: Color, icon?: Icon, };
export type TemplateFunction = { name: string, description?: string,
/**
* Also support alternative names. This is useful for not breaking existing
* tags when changing the `name` property
*/
aliases?: Array<string>, args: Array<TemplateFunctionArg>, };
export type TemplateFunctionArg = { "type": "text" } & TemplateFunctionTextArg | { "type": "select" } & TemplateFunctionSelectArg | { "type": "checkbox" } & TemplateFunctionCheckboxArg | { "type": "http_request" } & TemplateFunctionHttpRequestArg | { "type": "file" } & TemplateFunctionFileArg;
export type TemplateFunctionBaseArg = {
/**
* The name of the argument. Should be `camelCase` format
*/
name: string,
/**
* Whether the user must fill in the argument
*/
optional?: boolean,
/**
* The label of the input
*/
label?: string,
/**
* The default value
*/
defaultValue?: string, };
export type TemplateFunctionCheckboxArg = {
/**
* The name of the argument. Should be `camelCase` format
*/
name: string,
/**
* Whether the user must fill in the argument
*/
optional?: boolean,
/**
* The label of the input
*/
label?: string,
/**
* The default value
*/
defaultValue?: string, };
export type TemplateFunctionFileArg = {
/**
* The title of the file selection window
*/
title: string,
/**
* Allow selecting multiple files
*/
multiple?: boolean, directory?: boolean, defaultPath?: string, filters?: Array<OpenFileFilter>,
/**
* The name of the argument. Should be `camelCase` format
*/
name: string,
/**
* Whether the user must fill in the argument
*/
optional?: boolean,
/**
* The label of the input
*/
label?: string,
/**
* The default value
*/
defaultValue?: string, };
export type TemplateFunctionHttpRequestArg = {
/**
* The name of the argument. Should be `camelCase` format
*/
name: string,
/**
* Whether the user must fill in the argument
*/
optional?: boolean,
/**
* The label of the input
*/
label?: string,
/**
* The default value
*/
defaultValue?: string, };
export type TemplateFunctionSelectArg = {
/**
* The options that will be available in the select input
*/
options: Array<TemplateFunctionSelectOption>,
/**
* The name of the argument. Should be `camelCase` format
*/
name: string,
/**
* Whether the user must fill in the argument
*/
optional?: boolean,
/**
* The label of the input
*/
label?: string,
/**
* The default value
*/
defaultValue?: string, };
export type TemplateFunctionSelectOption = { label: string, value: string, };
export type TemplateFunctionTextArg = {
/**
* Placeholder for the text input
*/
placeholder?: string,
/**
* The name of the argument. Should be `camelCase` format
*/
name: string,
/**
* Whether the user must fill in the argument
*/
optional?: boolean,
/**
* The label of the input
*/
label?: string,
/**
* The default value
*/
defaultValue?: string, };
export type TemplateRenderRequest = { data: JsonValue, purpose: RenderPurpose, };
export type TemplateRenderResponse = { data: JsonValue, };
export type WindowContext = { "type": "none" } | { "type": "label", label: string, };

View File

@@ -0,0 +1,25 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type Environment = { model: "environment", id: string, workspaceId: string, createdAt: string, updatedAt: string, name: string, variables: Array<EnvironmentVariable>, };
export type EnvironmentVariable = { enabled?: boolean, name: string, value: string, };
export type Folder = { model: "folder", id: string, createdAt: string, updatedAt: string, workspaceId: string, folderId: string | null, name: string, sortPriority: number, };
export type GrpcMetadataEntry = { enabled?: boolean, name: string, value: string, };
export type GrpcRequest = { model: "grpc_request", id: string, createdAt: string, updatedAt: string, workspaceId: string, folderId: string | null, authenticationType: string | null, authentication: Record<string, any>, message: string, metadata: Array<GrpcMetadataEntry>, method: string | null, name: string, service: string | null, sortPriority: number, url: string, };
export type HttpRequest = { model: "http_request", id: string, createdAt: string, updatedAt: string, workspaceId: string, folderId: string | null, authentication: Record<string, any>, authenticationType: string | null, body: Record<string, any>, bodyType: string | null, headers: Array<HttpRequestHeader>, method: string, name: string, sortPriority: number, url: string, urlParameters: Array<HttpUrlParameter>, };
export type HttpRequestHeader = { enabled?: boolean, name: string, value: string, };
export type HttpResponse = { model: "http_response", id: string, createdAt: string, updatedAt: string, workspaceId: string, requestId: string, bodyPath: string | null, contentLength: number | null, elapsed: number, elapsedHeaders: number, error: string | null, headers: Array<HttpResponseHeader>, remoteAddr: string | null, status: number, statusReason: string | null, state: HttpResponseState, url: string, version: string | null, };
export type HttpResponseHeader = { name: string, value: string, };
export type HttpResponseState = "initialized" | "connected" | "closed";
export type HttpUrlParameter = { enabled?: boolean, name: string, value: string, };
export type Workspace = { model: "workspace", id: string, createdAt: string, updatedAt: string, name: string, description: string, variables: Array<EnvironmentVariable>, settingValidateCertificates: boolean, settingFollowRedirects: boolean, settingRequestTimeout: number, };

View File

@@ -0,0 +1,3 @@
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
export type JsonValue = number | string | Array<JsonValue> | { [key in string]?: JsonValue };

View File

@@ -0,0 +1 @@
export type AtLeast<T, K extends keyof T> = Partial<T> & Pick<T, K>;

View File

@@ -0,0 +1,5 @@
export type * from './plugins';
export type * from './themes';
export * from './bindings/models';
export * from './bindings/events';

View File

@@ -0,0 +1,38 @@
import {
FindHttpResponsesRequest,
FindHttpResponsesResponse,
GetHttpRequestByIdRequest,
GetHttpRequestByIdResponse,
PromptTextRequest,
PromptTextResponse,
RenderHttpRequestRequest,
RenderHttpRequestResponse,
SendHttpRequestRequest,
SendHttpRequestResponse,
ShowToastRequest,
TemplateRenderRequest,
TemplateRenderResponse,
} from '..';
export type Context = {
clipboard: {
copyText(text: string): void;
};
toast: {
show(args: ShowToastRequest): void;
};
prompt: {
text(args: PromptTextRequest): Promise<PromptTextResponse['value']>;
};
httpRequest: {
send(args: SendHttpRequestRequest): Promise<SendHttpRequestResponse['httpResponse']>;
getById(args: GetHttpRequestByIdRequest): Promise<GetHttpRequestByIdResponse['httpRequest']>;
render(args: RenderHttpRequestRequest): Promise<RenderHttpRequestResponse['httpRequest']>;
};
httpResponse: {
find(args: FindHttpResponsesRequest): Promise<FindHttpResponsesResponse['httpResponses']>;
};
templates: {
render(args: TemplateRenderRequest): Promise<TemplateRenderResponse['data']>;
};
};

View File

@@ -0,0 +1,13 @@
import { Context } from './Context';
export type FilterPluginResponse = string[];
export type FilterPlugin = {
name: string;
description?: string;
canFilter(ctx: Context, args: { mimeType: string }): Promise<boolean>;
onFilter(
ctx: Context,
args: { payload: string; mimeType: string },
): Promise<FilterPluginResponse>;
};

View File

@@ -0,0 +1,6 @@
import { CallHttpRequestActionArgs, HttpRequestAction } from '..';
import { Context } from './Context';
export type HttpRequestActionPlugin = HttpRequestAction & {
onSelect(ctx: Context, args: CallHttpRequestActionArgs): Promise<void> | void;
};

View File

@@ -0,0 +1,16 @@
import { Environment, Folder, HttpRequest, Workspace } from '..';
import { AtLeast } from '../helpers';
import { Context } from './Context';
export type ImportPluginResponse = null | {
workspaces: AtLeast<Workspace, 'name' | 'id' | 'model'>[];
environments: AtLeast<Environment, 'name' | 'id' | 'model' | 'workspaceId'>[];
httpRequests: AtLeast<HttpRequest, 'name' | 'id' | 'model' | 'workspaceId'>[];
folders: AtLeast<Folder, 'name' | 'id' | 'model' | 'workspaceId'>[];
};
export type ImporterPlugin = {
name: string;
description?: string;
onImport(ctx: Context, args: { text: string }): Promise<ImportPluginResponse>;
};

View File

@@ -0,0 +1,6 @@
import { CallTemplateFunctionArgs, TemplateFunction } from '..';
import { Context } from './Context';
export type TemplateFunctionPlugin = TemplateFunction & {
onRender(ctx: Context, args: CallTemplateFunctionArgs): Promise<string | null>;
};

View File

@@ -0,0 +1,8 @@
import { Theme } from '../themes';
import { Context } from './Context';
export type ThemePlugin = {
name: string;
description?: string;
getTheme(ctx: Context, fileContents: string): Promise<Theme>;
};

View File

@@ -0,0 +1,18 @@
import { FilterPlugin } from './FilterPlugin';
import { HttpRequestActionPlugin } from './HttpRequestActionPlugin';
import { ImporterPlugin } from './ImporterPlugin';
import { TemplateFunctionPlugin } from './TemplateFunctionPlugin';
import { ThemePlugin } from './ThemePlugin';
export type { Context } from './Context';
/**
* The global structure of a Yaak plugin
*/
export type PluginDefinition = {
importer?: ImporterPlugin;
theme?: ThemePlugin;
filter?: FilterPlugin;
httpRequestActions?: HttpRequestActionPlugin[];
templateFunctions?: TemplateFunctionPlugin[];
};

View File

@@ -0,0 +1,44 @@
export type Colors = {
surface: string;
surfaceHighlight?: string;
surfaceActive?: string;
text: string;
textSubtle?: string;
textSubtlest?: string;
border?: string;
borderSubtle?: string;
borderFocus?: string;
shadow?: string;
backdrop?: string;
selection?: string;
primary?: string;
secondary?: string;
info?: string;
success?: string;
notice?: string;
warning?: string;
danger?: string;
};
export type Theme = Colors & {
id: string;
name: string;
components?: Partial<{
dialog: Partial<Colors>;
menu: Partial<Colors>;
toast: Partial<Colors>;
sidebar: Partial<Colors>;
responsePane: Partial<Colors>;
appHeader: Partial<Colors>;
button: Partial<Colors>;
banner: Partial<Colors>;
placeholder: Partial<Colors>;
urlBar: Partial<Colors>;
editor: Partial<Colors>;
input: Partial<Colors>;
}>;
};

View File

@@ -0,0 +1,15 @@
{
"compilerOptions": {
"module": "node16",
"target": "es6",
"lib": ["es2021"],
"declaration": true,
"declarationDir": "./lib",
"outDir": "./lib",
"strict": true,
"types": ["node"]
},
"files": [
"src/index.ts"
]
}

3
plugin-runtime/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
build
node_modules
*.blob

View File

@@ -0,0 +1,21 @@
{
"name": "@yaakapp-internal/plugin-runtime",
"scripts": {
"bootstrap": "npm run build",
"build": "run-p build:*",
"build:main": "esbuild src/index.ts --bundle --platform=node --outfile=../src-tauri/vendored/plugin-runtime/index.cjs",
"build:worker": "esbuild src/index.worker.ts --bundle --platform=node --outfile=../src-tauri/vendored/plugin-runtime/index.worker.cjs",
"build:proto": "grpc_tools_node_protoc --ts_proto_out=src/gen --ts_proto_opt=outputServices=nice-grpc,outputServices=generic-definitions,useExactTypes=false --proto_path=../proto ../proto/plugins/*.proto"
},
"dependencies": {
"intercept-stdout": "^0.1.2",
"long": "^5.2.3",
"nice-grpc": "^2.1.9",
"protobufjs": "^7.4.0"
},
"devDependencies": {
"@types/intercept-stdout": "^0.1.3",
"grpc-tools": "^1.12.4",
"ts-proto": "^2.2.0"
}
}

View File

@@ -0,0 +1,21 @@
import { InternalEvent } from '@yaakapp/api';
import EventEmitter from 'node:events';
import { EventStreamEvent } from './gen/plugins/runtime';
export class EventChannel {
emitter: EventEmitter = new EventEmitter();
emit(e: InternalEvent) {
this.emitter.emit('__plugin_event__', { event: JSON.stringify(e) });
}
async *listen(): AsyncGenerator<EventStreamEvent> {
while (true) {
yield new Promise<EventStreamEvent>((resolve) => {
this.emitter.once('__plugin_event__', (event: EventStreamEvent) => {
resolve(event);
});
});
}
}
}

View File

@@ -0,0 +1,56 @@
import { BootRequest, InternalEvent } from '@yaakapp-internal/plugin';
import path from 'node:path';
import { Worker } from 'node:worker_threads';
import { EventChannel } from './EventChannel';
import { PluginWorkerData } from './index.worker';
export class PluginHandle {
#worker: Worker;
constructor(
readonly pluginRefId: string,
readonly bootRequest: BootRequest,
readonly events: EventChannel,
) {
this.#worker = this.#createWorker();
}
sendToWorker(event: InternalEvent) {
this.#worker.postMessage(event);
}
async terminate() {
await this.#worker.terminate();
}
#createWorker(): Worker {
const workerPath = process.env.YAAK_WORKER_PATH ?? path.join(__dirname, 'index.worker.cjs');
const workerData: PluginWorkerData = {
pluginRefId: this.pluginRefId,
bootRequest: this.bootRequest,
};
const worker = new Worker(workerPath, {
workerData,
});
worker.on('message', (e) => this.events.emit(e));
worker.on('error', this.#handleError.bind(this));
worker.on('exit', this.#handleExit.bind(this));
console.log('Created plugin worker for ', this.bootRequest.dir);
return worker;
}
async #handleError(err: Error) {
console.error('Plugin errored', this.bootRequest.dir, err);
}
async #handleExit(code: number) {
if (code === 0) {
console.log('Plugin exited successfully', this.bootRequest.dir);
} else {
console.log('Plugin exited with status', code, this.bootRequest.dir);
}
}
}

View File

@@ -0,0 +1,126 @@
// Code generated by protoc-gen-ts_proto. DO NOT EDIT.
// versions:
// protoc-gen-ts_proto v2.2.3
// protoc v3.19.1
// source: plugins/runtime.proto
/* eslint-disable */
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { type CallContext, type CallOptions } from "nice-grpc-common";
export const protobufPackage = "yaak.plugins.runtime";
export interface EventStreamEvent {
event: string;
}
function createBaseEventStreamEvent(): EventStreamEvent {
return { event: "" };
}
export const EventStreamEvent: MessageFns<EventStreamEvent> = {
encode(message: EventStreamEvent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
if (message.event !== "") {
writer.uint32(10).string(message.event);
}
return writer;
},
decode(input: BinaryReader | Uint8Array, length?: number): EventStreamEvent {
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
let end = length === undefined ? reader.len : reader.pos + length;
const message = createBaseEventStreamEvent();
while (reader.pos < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1: {
if (tag !== 10) {
break;
}
message.event = reader.string();
continue;
}
}
if ((tag & 7) === 4 || tag === 0) {
break;
}
reader.skip(tag & 7);
}
return message;
},
fromJSON(object: any): EventStreamEvent {
return { event: isSet(object.event) ? globalThis.String(object.event) : "" };
},
toJSON(message: EventStreamEvent): unknown {
const obj: any = {};
if (message.event !== "") {
obj.event = message.event;
}
return obj;
},
create(base?: DeepPartial<EventStreamEvent>): EventStreamEvent {
return EventStreamEvent.fromPartial(base ?? {});
},
fromPartial(object: DeepPartial<EventStreamEvent>): EventStreamEvent {
const message = createBaseEventStreamEvent();
message.event = object.event ?? "";
return message;
},
};
export type PluginRuntimeDefinition = typeof PluginRuntimeDefinition;
export const PluginRuntimeDefinition = {
name: "PluginRuntime",
fullName: "yaak.plugins.runtime.PluginRuntime",
methods: {
eventStream: {
name: "EventStream",
requestType: EventStreamEvent,
requestStream: true,
responseType: EventStreamEvent,
responseStream: true,
options: {},
},
},
} as const;
export interface PluginRuntimeServiceImplementation<CallContextExt = {}> {
eventStream(
request: AsyncIterable<EventStreamEvent>,
context: CallContext & CallContextExt,
): ServerStreamingMethodResult<DeepPartial<EventStreamEvent>>;
}
export interface PluginRuntimeClient<CallOptionsExt = {}> {
eventStream(
request: AsyncIterable<DeepPartial<EventStreamEvent>>,
options?: CallOptions & CallOptionsExt,
): AsyncIterable<EventStreamEvent>;
}
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T
: T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>
: T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
: T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
: Partial<T>;
function isSet(value: any): boolean {
return value !== null && value !== undefined;
}
export type ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void> };
export interface MessageFns<T> {
encode(message: T, writer?: BinaryWriter): BinaryWriter;
decode(input: BinaryReader | Uint8Array, length?: number): T;
fromJSON(object: any): T;
toJSON(message: T): unknown;
create(base?: DeepPartial<T>): T;
fromPartial(object: DeepPartial<T>): T;
}

View File

@@ -0,0 +1,48 @@
import { InternalEvent } from '@yaakapp/api';
import { createChannel, createClient, Status } from 'nice-grpc';
import { EventChannel } from './EventChannel';
import { PluginRuntimeClient, PluginRuntimeDefinition } from './gen/plugins/runtime';
import { PluginHandle } from './PluginHandle';
const port = process.env.PORT || '50051';
const channel = createChannel(`localhost:${port}`);
const client: PluginRuntimeClient = createClient(PluginRuntimeDefinition, channel);
const events = new EventChannel();
const plugins: Record<string, PluginHandle> = {};
(async () => {
try {
for await (const e of client.eventStream(events.listen())) {
const pluginEvent: InternalEvent = JSON.parse(e.event);
// Handle special event to bootstrap plugin
if (pluginEvent.payload.type === 'boot_request') {
const plugin = new PluginHandle(pluginEvent.pluginRefId, pluginEvent.payload, events);
plugins[pluginEvent.pluginRefId] = plugin;
}
// Once booted, forward all events to the plugin worker
const plugin = plugins[pluginEvent.pluginRefId];
if (!plugin) {
console.warn('Failed to get plugin for event by', pluginEvent.pluginRefId);
continue;
}
if (pluginEvent.payload.type === 'terminate_request') {
await plugin.terminate();
console.log('Terminated plugin worker', pluginEvent.pluginRefId);
delete plugins[pluginEvent.pluginRefId];
}
plugin.sendToWorker(pluginEvent);
}
console.log('Stream ended');
} catch (err: any) {
if (err.code === Status.CANCELLED) {
console.log('Stream was cancelled by server');
} else {
console.log('Client stream errored', err);
}
}
})();

View File

@@ -0,0 +1,397 @@
import {
BootRequest,
FindHttpResponsesResponse,
GetHttpRequestByIdResponse,
HttpRequestAction,
ImportResponse,
InternalEvent,
InternalEventPayload,
PromptTextResponse,
RenderHttpRequestResponse,
SendHttpRequestResponse,
TemplateFunction,
TemplateRenderResponse,
WindowContext,
} from '@yaakapp-internal/plugin';
import { Context } from '@yaakapp/api';
import { HttpRequestActionPlugin } from '@yaakapp/api/lib/plugins/HttpRequestActionPlugin';
import { TemplateFunctionPlugin } from '@yaakapp/api/lib/plugins/TemplateFunctionPlugin';
import interceptStdout from 'intercept-stdout';
import * as console from 'node:console';
import { readFileSync, Stats, statSync, watch } from 'node:fs';
import path from 'node:path';
import * as util from 'node:util';
import { parentPort, workerData } from 'node:worker_threads';
export interface PluginWorkerData {
bootRequest: BootRequest;
pluginRefId: string;
}
async function initialize() {
const {
bootRequest: { dir: pluginDir, watch: enableWatch },
pluginRefId,
}: PluginWorkerData = workerData;
const pathPkg = path.join(pluginDir, 'package.json');
const pathMod = path.posix.join(pluginDir, 'build', 'index.js');
async function importModule() {
const id = require.resolve(pathMod);
delete require.cache[id];
return require(id);
}
const pkg = JSON.parse(readFileSync(pathPkg, 'utf8'));
prefixStdout(`[plugin][${pkg.name}] %s`);
let mod = await importModule();
const capabilities: string[] = [];
if (typeof mod.pluginHookExport === 'function') capabilities.push('export');
if (typeof mod.pluginHookImport === 'function') capabilities.push('import');
if (typeof mod.pluginHookResponseFilter === 'function') capabilities.push('filter');
console.log('Plugin initialized', pkg.name, { capabilities, enableWatch });
function buildEventToSend(
windowContext: WindowContext,
payload: InternalEventPayload,
replyId: string | null = null,
): InternalEvent {
return { pluginRefId, id: genId(), replyId, payload, windowContext };
}
function sendEmpty(windowContext: WindowContext, replyId: string | null = null): string {
return sendPayload(windowContext, { type: 'empty_response' }, replyId);
}
function sendPayload(
windowContext: WindowContext,
payload: InternalEventPayload,
replyId: string | null,
): string {
const event = buildEventToSend(windowContext, payload, replyId);
sendEvent(event);
return event.id;
}
function sendEvent(event: InternalEvent) {
if (event.payload.type !== 'empty_response') {
console.log('Sending event to app', event.id, event.payload.type);
}
parentPort!.postMessage(event);
}
async function sendAndWaitForReply<T extends Omit<InternalEventPayload, 'type'>>(
windowContext: WindowContext,
payload: InternalEventPayload,
): Promise<T> {
// 1. Build event to send
const eventToSend = buildEventToSend(windowContext, payload, null);
// 2. Spawn listener in background
const promise = new Promise<InternalEventPayload>(async (resolve) => {
const cb = (event: InternalEvent) => {
if (event.replyId === eventToSend.id) {
parentPort!.off('message', cb); // Unlisten, now that we're done
resolve(event.payload); // Not type-safe but oh well
}
};
parentPort!.on('message', cb);
});
// 3. Send the event after we start listening (to prevent race)
sendEvent(eventToSend);
// 4. Return the listener promise
return promise as unknown as Promise<T>;
}
async function reloadModule() {
mod = await importModule();
}
// Reload plugin if JS or package.json changes
const windowContextNone: WindowContext = { type: 'none' };
const cb = async () => {
await reloadModule();
return sendPayload(windowContextNone, { type: 'reload_response' }, null);
};
if (enableWatch) {
watchFile(pathMod, cb);
watchFile(pathPkg, cb);
}
const newCtx = (event: InternalEvent): Context => ({
clipboard: {
async copyText(text) {
await sendAndWaitForReply(event.windowContext, { type: 'copy_text_request', text });
},
},
toast: {
async show(args) {
await sendAndWaitForReply(event.windowContext, { type: 'show_toast_request', ...args });
},
},
prompt: {
async text(args) {
const reply: PromptTextResponse = await sendAndWaitForReply(event.windowContext, {
type: 'prompt_text_request',
...args,
});
return reply.value;
},
},
httpResponse: {
async find(args) {
const payload = { type: 'find_http_responses_request', ...args } as const;
const { httpResponses } = await sendAndWaitForReply<FindHttpResponsesResponse>(
event.windowContext,
payload,
);
return httpResponses;
},
},
httpRequest: {
async getById(args) {
const payload = { type: 'get_http_request_by_id_request', ...args } as const;
const { httpRequest } = await sendAndWaitForReply<GetHttpRequestByIdResponse>(
event.windowContext,
payload,
);
return httpRequest;
},
async send(args) {
const payload = { type: 'send_http_request_request', ...args } as const;
const { httpResponse } = await sendAndWaitForReply<SendHttpRequestResponse>(
event.windowContext,
payload,
);
return httpResponse;
},
async render(args) {
const payload = { type: 'render_http_request_request', ...args } as const;
const { httpRequest } = await sendAndWaitForReply<RenderHttpRequestResponse>(
event.windowContext,
payload,
);
return httpRequest;
},
},
templates: {
/**
* Invoke Yaak's template engine to render a value. If the value is a nested type
* (eg. object), it will be recursively rendered.
* */
async render(args) {
const payload = { type: 'template_render_request', ...args } as const;
const result = await sendAndWaitForReply<TemplateRenderResponse>(
event.windowContext,
payload,
);
return result.data;
},
},
});
// Message comes into the plugin to be processed
parentPort!.on('message', async (event: InternalEvent) => {
let { windowContext, payload, id: replyId } = event;
const ctx = newCtx(event);
try {
if (payload.type === 'boot_request') {
const payload: InternalEventPayload = {
type: 'boot_response',
name: pkg.name,
version: pkg.version,
capabilities,
};
sendPayload(windowContext, payload, replyId);
return;
}
if (payload.type === 'terminate_request') {
const payload: InternalEventPayload = {
type: 'terminate_response',
};
sendPayload(windowContext, payload, replyId);
return;
}
if (payload.type === 'import_request' && typeof mod.pluginHookImport === 'function') {
const reply: ImportResponse | null = await mod.pluginHookImport(ctx, payload.content);
if (reply != null) {
const replyPayload: InternalEventPayload = {
type: 'import_response',
resources: reply?.resources,
};
sendPayload(windowContext, replyPayload, replyId);
return;
} else {
// Continue, to send back an empty reply
}
}
if (
payload.type === 'export_http_request_request' &&
typeof mod.pluginHookExport === 'function'
) {
const reply: string = await mod.pluginHookExport(ctx, payload.httpRequest);
const replyPayload: InternalEventPayload = {
type: 'export_http_request_response',
content: reply,
};
sendPayload(windowContext, replyPayload, replyId);
return;
}
if (payload.type === 'filter_request' && typeof mod.pluginHookResponseFilter === 'function') {
const reply: string = await mod.pluginHookResponseFilter(ctx, {
filter: payload.filter,
body: payload.content,
});
const replyPayload: InternalEventPayload = {
type: 'filter_response',
content: reply,
};
sendPayload(windowContext, replyPayload, replyId);
return;
}
if (
payload.type === 'get_http_request_actions_request' &&
Array.isArray(mod.plugin?.httpRequestActions)
) {
const reply: HttpRequestAction[] = mod.plugin.httpRequestActions.map(
(a: HttpRequestActionPlugin) => ({
...a,
// Add everything except onSelect
onSelect: undefined,
}),
);
const replyPayload: InternalEventPayload = {
type: 'get_http_request_actions_response',
pluginRefId,
actions: reply,
};
sendPayload(windowContext, replyPayload, replyId);
return;
}
if (
payload.type === 'get_template_functions_request' &&
Array.isArray(mod.plugin?.templateFunctions)
) {
const reply: TemplateFunction[] = mod.plugin.templateFunctions.map(
(a: TemplateFunctionPlugin) => ({
...a,
// Add everything except render
onRender: undefined,
}),
);
const replyPayload: InternalEventPayload = {
type: 'get_template_functions_response',
pluginRefId,
functions: reply,
};
sendPayload(windowContext, replyPayload, replyId);
return;
}
if (
payload.type === 'call_http_request_action_request' &&
Array.isArray(mod.plugin?.httpRequestActions)
) {
const action = mod.plugin.httpRequestActions.find(
(a: HttpRequestActionPlugin) => a.key === payload.key,
);
if (typeof action?.onSelect === 'function') {
await action.onSelect(ctx, payload.args);
sendEmpty(windowContext, replyId);
return;
}
}
if (
payload.type === 'call_template_function_request' &&
Array.isArray(mod.plugin?.templateFunctions)
) {
const action = mod.plugin.templateFunctions.find(
(a: TemplateFunctionPlugin) => a.name === payload.name,
);
if (typeof action?.onRender === 'function') {
const result = await action.onRender(ctx, payload.args);
sendPayload(
windowContext,
{
type: 'call_template_function_response',
value: result ?? null,
},
replyId,
);
return;
}
}
if (payload.type === 'reload_request') {
await reloadModule();
}
} catch (err) {
console.log('Plugin call threw exception', payload.type, err);
// TODO: Return errors to server
}
// No matches, so send back an empty response so the caller doesn't block forever
sendEmpty(windowContext, replyId);
});
}
initialize().catch((err) => {
console.log('failed to boot plugin', err);
});
function genId(len = 5): string {
const alphabet = '01234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
let id = '';
for (let i = 0; i < len; i++) {
id += alphabet[Math.floor(Math.random() * alphabet.length)];
}
return id;
}
function prefixStdout(s: string) {
if (!s.includes('%s')) {
throw new Error('Console prefix must contain a "%s" replacer');
}
interceptStdout((text) => {
const lines = text.split(/\n/);
let newText = '';
for (let i = 0; i < lines.length; i++) {
if (lines[i] == '') continue;
newText += util.format(s, lines[i]) + '\n';
}
return newText.trimEnd();
});
}
const watchedFiles: Record<string, Stats> = {};
/**
* Watch a file and trigger callback on change.
*
* We also track the stat for each file because fs.watch will
* trigger a "change" event when the access date changes
*/
function watchFile(filepath: string, cb: (filepath: string) => void) {
watch(filepath, (_event, _name) => {
const stat = statSync(filepath);
if (stat.mtimeMs !== watchedFiles[filepath]?.mtimeMs) {
cb(filepath);
}
watchedFiles[filepath] = stat;
});
}

View File

@@ -0,0 +1,24 @@
{
"compilerOptions": {
"module": "node16",
"strict": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"target": "es2021",
"lib": ["es2021"],
"noImplicitAny": false,
"moduleResolution": "node16",
"sourceMap": true,
"outDir": "build",
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
}
},
"include": [
"src"
]
}

View File

@@ -1,6 +0,0 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

View File

@@ -0,0 +1,11 @@
syntax = "proto3";
package yaak.plugins.runtime;
service PluginRuntime {
rpc EventStream (stream EventStreamEvent) returns (stream EventStreamEvent);
}
message EventStreamEvent {
string event = 1;
}

View File

@@ -1,39 +0,0 @@
name = "rsw"
version = "0.1.0"
#! time interval for file changes to trigger wasm-pack build, default `50` milliseconds
interval = 50
#! link
#! npm link @see https://docs.npmjs.com/cli/v8/commands/npm-link
#! yarn link @see https://classic.yarnpkg.com/en/docs/cli/link
#! pnpm link @see https://pnpm.io/cli/link
#! The link command will only be executed if `[[crates]] link = true`
#! cli: `npm` | `yarn` | `pnpm`, default is `npm`
cli = "npm"
#! ---------------------------
#! rsw new <name>
[new]
#! @see https://rustwasm.github.io/docs/wasm-pack/commands/new.html
#! using: `wasm-pack` | `rsw` | `user`, default is `wasm-pack`
#! 1. wasm-pack: `rsw new <name> --template <template> --mode <normal|noinstall|force>`
#! 2. rsw: `rsw new <name>`, built-in templates
#! 3. user: `rsw new <name>`, if `dir` is not configured, use `wasm-pack new <name>` to initialize the project
using = "wasm-pack"
#! this field needs to be configured when `using = "user"`
#! `using = "wasm-pack"` or `using = "rsw"`, this field will be ignored
#! copy all files in this directory
dir = "my-template"
#! ################# NPM Package #################
#! When there is only `name`, other fields will use the default configuration
#! 📦 -------- package: @rsw --------
[[crates]]
#! npm package name (path: $ROOT/@rsw)
name = "src-wasm/hello"
#! run `npm link`: `true` | `false`, default is `false`
link = true

7
rustfmt.toml Normal file
View File

@@ -0,0 +1,7 @@
edition = "2018"
# Widths
chain_width = 100
max_width = 100
single_line_if_else_max_width = 100
fn_call_width = 100

1
scripts/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
tmp-*

View File

@@ -0,0 +1,15 @@
const path = require('path');
const fs = require('fs');
const version = process.env.YAAK_VERSION?.replace('v', '');
if (!version) {
throw new Error('YAAK_VERSION environment variable not set')
}
const tauriConfigPath = path.join(__dirname, '../src-tauri/tauri.conf.json');
const tauriConfig = JSON.parse(fs.readFileSync(tauriConfigPath, 'utf8'));
tauriConfig.version = version;
console.log('Writing version ' + version + ' to ' + tauriConfigPath)
fs.writeFileSync(tauriConfigPath, JSON.stringify(tauriConfig, null, 2));

83
scripts/vendor-node.cjs Normal file
View File

@@ -0,0 +1,83 @@
const path = require('node:path');
const decompress = require('decompress');
const Downloader = require('nodejs-file-downloader');
const { rmSync, cpSync, mkdirSync, existsSync } = require('node:fs');
const { execSync } = require('node:child_process');
const NODE_VERSION = 'v22.9.0';
// `${process.platform}_${process.arch}`
const MAC_ARM = 'darwin_arm64';
const MAC_X64 = 'darwin_x64';
const LNX_X64 = 'linux_x64';
const WIN_X64 = 'win32_x64';
const URL_MAP = {
[MAC_ARM]: `https://nodejs.org/download/release/${NODE_VERSION}/node-${NODE_VERSION}-darwin-arm64.tar.gz`,
[MAC_X64]: `https://nodejs.org/download/release/${NODE_VERSION}/node-${NODE_VERSION}-darwin-x64.tar.gz`,
[LNX_X64]: `https://nodejs.org/download/release/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.gz`,
[WIN_X64]: `https://nodejs.org/download/release/${NODE_VERSION}/node-${NODE_VERSION}-win-x64.zip`,
};
const SRC_BIN_MAP = {
[MAC_ARM]: `node-${NODE_VERSION}-darwin-arm64/bin/node`,
[MAC_X64]: `node-${NODE_VERSION}-darwin-x64/bin/node`,
[LNX_X64]: `node-${NODE_VERSION}-linux-x64/bin/node`,
[WIN_X64]: `node-${NODE_VERSION}-win-x64/node.exe`,
};
const DST_BIN_MAP = {
darwin_arm64: 'yaaknode-aarch64-apple-darwin',
darwin_x64: 'yaaknode-x86_64-apple-darwin',
linux_x64: 'yaaknode-x86_64-unknown-linux-gnu',
win32_x64: 'yaaknode-x86_64-pc-windows-msvc.exe',
};
const key = `${process.platform}_${process.env.YAAK_TARGET_ARCH ?? process.arch}`;
const destDir = path.join(__dirname, `..`, 'src-tauri', 'vendored', 'node');
const binDest = path.join(destDir, DST_BIN_MAP[key]);
console.log(`Vendoring NodeJS ${NODE_VERSION} for ${key}`);
if (existsSync(binDest) && tryExecSync(`${binDest} --version`).trim() === NODE_VERSION) {
console.log('NodeJS already vendored');
return;
}
rmSync(destDir, { recursive: true, force: true });
mkdirSync(destDir, { recursive: true });
const url = URL_MAP[key];
const tmpDir = path.join(__dirname, 'tmp-node');
rmSync(tmpDir, { recursive: true, force: true });
(async function () {
// Download GitHub release artifact
console.log('Downloading NodeJS at', url);
const { filePath } = await new Downloader({
url,
directory: tmpDir,
timeout: 1000 * 60 * 2,
}).download();
// Decompress to the same directory
await decompress(filePath, tmpDir, {});
// Copy binary
const binSrc = path.join(tmpDir, SRC_BIN_MAP[key]);
cpSync(binSrc, binDest);
rmSync(tmpDir, { recursive: true, force: true });
console.log('Downloaded NodeJS to', binDest);
})().catch((err) => {
console.log('Script failed:', err);
process.exit(1);
});
function tryExecSync(cmd) {
try {
return execSync(cmd).toString('utf-8');
} catch (_) {
return '';
}
}

View File

@@ -0,0 +1,25 @@
const { readdirSync, cpSync } = require('node:fs');
const path = require('node:path');
const { execSync } = require('node:child_process');
const pluginsDir = process.env.YAAK_PLUGINS_DIR;
if (!pluginsDir) {
console.log('Skipping bundled plugins build because YAAK_PLUGINS_DIR is not set');
return;
}
console.log('Installing Yaak plugins dependencies', pluginsDir);
execSync('npm ci', { cwd: pluginsDir });
console.log('Building Yaak plugins', pluginsDir);
execSync('npm run build', { cwd: pluginsDir });
console.log('Copying Yaak plugins to', pluginsDir);
const pluginsRoot = path.join(pluginsDir, 'plugins');
for (const name of readdirSync(pluginsRoot)) {
const dir = path.join(pluginsRoot, name);
if (name.startsWith('.')) continue;
const destDir = path.join(__dirname, '../src-tauri/vendored/plugins/', name);
console.log(`Copying ${name} to ${destDir}`);
cpSync(path.join(dir, 'package.json'), path.join(destDir, 'package.json'));
cpSync(path.join(dir, 'build/index.js'), path.join(destDir, 'build/index.js'));
}

79
scripts/vendor-protoc.cjs Normal file
View File

@@ -0,0 +1,79 @@
const decompress = require('decompress');
const Downloader = require('nodejs-file-downloader');
const path = require('node:path');
const { rmSync, mkdirSync, cpSync, existsSync } = require('node:fs');
const { execSync } = require('node:child_process');
const VERSION = '27.2';
// `${process.platform}_${process.arch}`
const MAC_ARM = 'darwin_arm64';
const MAC_X64 = 'darwin_x64';
const LNX_X64 = 'linux_x64';
const WIN_X64 = 'win32_x64';
const URL_MAP = {
[MAC_ARM]: `https://github.com/protocolbuffers/protobuf/releases/download/v${VERSION}/protoc-${VERSION}-osx-aarch_64.zip`,
[MAC_X64]: `https://github.com/protocolbuffers/protobuf/releases/download/v${VERSION}/protoc-${VERSION}-osx-x86_64.zip`,
[LNX_X64]: `https://github.com/protocolbuffers/protobuf/releases/download/v${VERSION}/protoc-${VERSION}-linux-x86_64.zip`,
[WIN_X64]: `https://github.com/protocolbuffers/protobuf/releases/download/v${VERSION}/protoc-${VERSION}-win64.zip`,
};
const SRC_BIN_MAP = {
[MAC_ARM]: 'bin/protoc',
[MAC_X64]: 'bin/protoc',
[LNX_X64]: 'bin/protoc',
[WIN_X64]: 'bin/protoc.exe',
};
const DST_BIN_MAP = {
[MAC_ARM]: 'yaakprotoc-aarch64-apple-darwin',
[MAC_X64]: 'yaakprotoc-x86_64-apple-darwin',
[LNX_X64]: 'yaakprotoc-x86_64-unknown-linux-gnu',
[WIN_X64]: 'yaakprotoc-x86_64-pc-windows-msvc.exe',
};
const dstDir = path.join(__dirname, `..`, 'src-tauri', 'vendored', 'protoc');
const key = `${process.platform}_${process.env.YAAK_TARGET_ARCH ?? process.arch}`;
console.log(`Vendoring protoc ${VERSION} for ${key}`);
const url = URL_MAP[key];
const tmpDir = path.join(__dirname, 'tmp-protoc');
const binSrc = path.join(tmpDir, SRC_BIN_MAP[key]);
const binDst = path.join(dstDir, DST_BIN_MAP[key]);
if (existsSync(binDst) && tryExecSync(`${binDst} --version`).trim().includes(VERSION)) {
console.log('Protoc already vendored');
return;
}
rmSync(tmpDir, { recursive: true, force: true });
rmSync(dstDir, { recursive: true, force: true });
mkdirSync(dstDir, { recursive: true });
(async function () {
// Download GitHub release artifact
const { filePath } = await new Downloader({ url, directory: tmpDir }).download();
// Decompress to the same directory
await decompress(filePath, tmpDir, {});
// Copy binary
cpSync(binSrc, binDst);
// Copy other files
const includeSrc = path.join(tmpDir, 'include');
const includeDst = path.join(dstDir, 'include');
cpSync(includeSrc, includeDst, { recursive: true });
rmSync(tmpDir, { recursive: true, force: true });
console.log('Downloaded protoc to', binDst);
})().catch((err) => console.log('Script failed:', err));
function tryExecSync(cmd) {
try {
return execSync(cmd).toString('utf-8');
} catch (_) {
return '';
}
}

View File

@@ -1,4 +1,6 @@
# Generated by Cargo
# will have compiled files and executables
/target/
target/
vendored/*
!vendored/plugins

7305
src-tauri/Cargo.lock generated
View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +1,71 @@
[package]
name = "tauri-app"
version = "0.0.0"
description = "A Tauri App"
authors = ["you"]
license = ""
repository = ""
edition = "2021"
[workspace]
members = ["yaak_grpc", "yaak_templates", "yaak_plugin_runtime", "yaak_models", "yaak_sse"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[package]
name = "yaak-app"
version = "0.0.0"
edition = "2021"
authors = ["Gregory Schier"]
# Produce a library for mobile support
[lib]
name = "tauri_app_lib"
crate-type = ["staticlib", "cdylib", "lib"]
[profile.release]
strip = true # Automatically strip symbols from the binary.
[build-dependencies]
tauri-build = { version = "1.2", features = [] }
tauri-build = { version = "2.0.3", features = [] }
[target.'cfg(target_os = "macos")'.dependencies]
objc = "0.2.7"
cocoa = "0.26.0"
[target.'cfg(target_os = "linux")'.dependencies]
openssl-sys = { version = "0.9", features = ["vendored"] } # For Ubuntu installation to work
[dependencies]
serde_json = { version = "1.0" }
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.2", features = ["config-toml", "devtools", "shell-open", "system-tray", "window-start-dragging"] }
http = { version = "0.2.8" }
reqwest = { version = "0.11.14", features = ["json"] }
tokio = { version = "1.25.0", features = ["full"] }
futures = { version = "0.3.26" }
deno_core = { version = "0.171.0" }
deno_ast = { version = "0.24.0", features = ["transpiling"] }
objc = { version = "0.2.7" }
cocoa = { version = "0.24.1" }
yaak_grpc = { path = "yaak_grpc" }
yaak_templates = { path = "yaak_templates" }
yaak_plugin_runtime = { workspace = true }
yaak_sse = { workspace = true }
yaak_models = { workspace = true }
base64 = "0.22.0"
chrono = { version = "0.4.31", features = ["serde"] }
datetime = "0.5.2"
hex_color = "3.0.0"
http = "1"
log = "0.4.21"
rand = "0.8.5"
regex = "1.10.2"
reqwest = { version = "0.12.4", features = ["multipart", "cookies", "gzip", "brotli", "deflate", "json", "native-tls-alpn"] }
reqwest_cookie_store = "0.8.0"
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true, features = ["raw_value"] }
tauri = { workspace = true, features = ["devtools", "protocol-asset"] }
tauri-plugin-shell = { workspace = true }
tauri-plugin-clipboard-manager = "2.0.1"
tauri-plugin-dialog = "2.0.3"
tauri-plugin-fs = "2.0.3"
tauri-plugin-log = { version = "2.0.1", features = ["colored"] }
tauri-plugin-os = "2.0.1"
tauri-plugin-updater = "2.0.2"
tauri-plugin-window-state = "2.0.1"
tokio = { version = "1.36.0", features = ["sync"] }
tokio-stream = "0.1.15"
uuid = "1.7.0"
mime_guess = "2.0.5"
urlencoding = "2.1.3"
eventsource-client = { git = "https://github.com/yaakapp/rust-eventsource-client", version = "0.13.0" }
[features]
# by default Tauri runs in production mode
# when `tauri dev` runs it is executed with `cargo run --no-default-features` if `devPath` is an URL
default = ["custom-protocol"]
# this feature is used used for production builds where `devPath` points to the filesystem
# DO NOT remove this
custom-protocol = ["tauri/custom-protocol"]
[workspace.dependencies]
yaak_models = { path = "yaak_models" }
yaak_sse = { path = "yaak_sse" }
yaak_plugin_runtime = { path = "yaak_plugin_runtime" }
serde = "1.0.215"
serde_json = "1.0.132"
tauri-plugin-shell = "2.0.2"
tauri = { version = "2.1.1", features = ["devtools", "protocol-asset"] }
thiserror = "2.0.3"
ts-rs = "10.0.0"

View File

@@ -1,3 +1,3 @@
fn main() {
tauri_build::build()
tauri_build::build()
}

View File

@@ -0,0 +1,49 @@
{
"$schema": "../gen/schemas/capabilities.json",
"identifier": "main",
"description": "Main permissions",
"local": true,
"windows": [
"*"
],
"permissions": [
"core:event:allow-emit",
"core:event:allow-listen",
"core:event:allow-unlisten",
"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-file",
"fs:allow-read-text-file",
{
"identifier": "fs:scope",
"allow": [
{
"path": "$APPDATA"
},
{
"path": "$APPDATA/**"
}
]
},
"shell:allow-open",
"core:webview:allow-set-webview-zoom",
"core:window:allow-close",
"core:window:allow-internal-toggle-maximize",
"core:window:allow-is-fullscreen",
"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-toggle-maximize",
"core:window:allow-unmaximize",
"clipboard-manager:allow-read-text",
"clipboard-manager:allow-write-text"
]
}

View File

File diff suppressed because one or more lines are too long

1
src-tauri/gen/schemas/capabilities.json generated Normal file
View File

@@ -0,0 +1 @@
{"main":{"identifier":"main","description":"Main permissions","local":true,"windows":["*"],"permissions":["core:event:allow-emit","core:event:allow-listen","core:event:allow-unlisten","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-file","fs:allow-read-text-file",{"identifier":"fs:scope","allow":[{"path":"$APPDATA"},{"path":"$APPDATA/**"}]},"shell:allow-open","core:webview:allow-set-webview-zoom","core:window:allow-close","core:window:allow-internal-toggle-maximize","core:window:allow-is-fullscreen","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-toggle-maximize","core:window:allow-unmaximize","clipboard-manager:allow-read-text","clipboard-manager:allow-write-text"]}}

5286
src-tauri/gen/schemas/desktop-schema.json generated Normal file
View File

File diff suppressed because it is too large Load Diff

5286
src-tauri/gen/schemas/linux-schema.json generated Normal file
View File

File diff suppressed because it is too large Load Diff

5286
src-tauri/gen/schemas/macOS-schema.json generated Normal file
View File

File diff suppressed because it is too large Load Diff

6943
src-tauri/gen/schemas/windows-schema.json generated Normal file
View File

File diff suppressed because it is too large Load Diff

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

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