Compare commits

...

217 Commits

Author SHA1 Message Date
Lea Anthony b49dce8676 Update Changelog 2022-05-26 17:52:25 -10:00
Lea Anthony 6a88568f0a v2.0.0-beta.37 2022-05-26 17:45:57 -10:00
Edward Browncross a10a9e5b36 Add missing className to input in React and Preact templates (#1419)
* add missing className to input in react and preact templates

* add missing className to input in react and preact assets
2022-05-26 02:56:37 +10:00
刀刀 e7f9e2f267 docs: add macos custom menu EditMenu tips (#1423)
* docs: add macos custom menu EditMenu tips

On macos platform, if custom the menu, we should append EditMenu to enable Cmd+C,Cmd+V,Cmd+Z... shortcut
2022-05-25 08:49:04 +02:00
yuzu 316a24f6da update runtime.d.ts & templates (#1421) 2022-05-24 21:20:53 +02:00
stffabi c874e30339 Merge pull request #1413 from mondy/feature/nogen-flag 2022-05-23 10:40:46 +02:00
mondy 043d83e39e Add nogen flag in cli document. 2022-05-23 09:08:35 +09:00
Blake Bourque 7e64038265 Add blurb on wails generate module (#1414)
For users who wish to keep the wailsjs directory out of source control, the `wails generate module` command is valuable in a CI environment where wails build does not automatically generate the needed javascript module.
2022-05-23 08:43:18 +10:00
mondy d4ecaad0e1 Add nogen flag in wails dev command 2022-05-21 14:22:18 +09:00
Lea Anthony 953bc09343 Merge pull request #1400 from wailsapp/feature/native-translucency
Initial support for new native translucency in Windows Preview
2022-05-18 18:52:45 +10:00
Lea Anthony 935f6871ab Merge pull request #1406 from rayshoo/master
fix typo bindings.js to ipc.js
2022-05-18 17:38:17 +10:00
rayshoo 0d793124fd fix typo bindings.js to ipc.js 2022-05-18 15:58:33 +09:00
stffabi c97e1c50af [v2, linux] Make sure to execute the menu callbacks on a new goroutine (#1403)
* Make sure to execute the menu callbacks on a new goroutine
* Fix assertion message when opening file dialogs by passing the correct parent window
2022-05-17 20:45:48 +10:00
Lea Anthony 35b1dfdd2a Merge pull request #1394 from LGiki/add-template-nextjs
Add Next.js template
2022-05-13 20:57:32 +10:00
LGiki e705c20de9 Add Next.js template 2022-05-13 14:33:07 +08:00
stffabi ae25b38f9e Merge pull request #1393 from LGiki/fix-typo-in-docs 2022-05-12 12:52:15 +02:00
LGiki ec2202765c fix: typo in docs 2022-05-12 09:50:16 +08:00
Lea Anthony e0e55e6e76 Better website spacing 2022-05-11 20:18:53 +10:00
Lea Anthony 4d5f31ab84 Merge pull request #1391 from wailsapp/bugfix/typo
bugfix: correct typo
2022-05-11 13:09:23 +10:00
Travis McLane b84fd76e86 bugfix: correct typo 2022-05-10 21:56:19 -05:00
Lea Anthony 55115742c1 fix: TS conversion of interface{} 2022-05-11 08:21:17 +10:00
Lea Anthony f2f8ed2e99 Merge pull request #1390 from lambdajack/v2-events-fix
[v2] Events | fixes #1388
2022-05-10 21:06:53 +10:00
Jack Bizzell d59bec171e Changing all occurrences of calls to OnMultiple() inside EventsOn() and EventsOnce() in the frontend definitions, to calls to EventsOnMultiple()
OnMultiple is undefined
2022-05-09 20:42:40 +01:00
Lea Anthony bff0ece017 Merge pull request #1387 from Junkher/patch-1
Update events.mdx
2022-05-08 04:16:48 +10:00
Junker 7c0d1019f2 Update events.mdx
A little mistake in the arguments of Js EventEmit
2022-05-07 23:12:01 +08:00
Lea Anthony a3de4577dd Update tagline 2022-05-07 12:05:30 +10:00
Lea Anthony 4986f9cea5 Fix docs formatting (#1372)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-05-07 10:36:39 +10:00
Lea Anthony 0f2fc1ab7a Merge branch 'master' into patch-1 2022-05-07 10:36:02 +10:00
stffabi 5f612301f9 [v2] During wails dev only use reload logic if no AssetsHandler are in use (#1385)
This slows down every GET request to the AssetsHandler taking 5s
2022-05-07 09:11:07 +10:00
Lea Anthony 84b6273baf Bugfix/incorrect bindings (#1383)
* Print struct path

* Better handling of anon structs
2022-05-05 23:07:33 +10:00
Lea Anthony 9c8a3a62da Update sponsors 2022-05-05 20:53:35 +10:00
Lea Anthony 6224d3aa82 Re-add plain template, Improve stalebot. 2022-05-05 06:53:39 +10:00
stffabi 2d66d2146a [v2] Improve multi platform builds (#1373)
- Make sure to reset the default Arch of the build options and not keep the previous one.
- Expand to the full platform in outputBinaries so e.g. `-platform windows` can be used with `-nsis`
2022-05-04 07:27:13 +10:00
Arpit Jain e5cc18cfc5 Fix docs formatting 2022-05-03 23:21:23 +05:30
Aleksey Polyakov 531d7cfb62 replace OnMultiple with EventsOnMultiple (#1369) 2022-05-02 22:10:33 +10:00
Lea Anthony 9c7ef2d47c v2.0.0-beta.36 2022-05-01 11:10:05 +10:00
Lea Anthony 490388ae8f Another vue fix 2022-05-01 10:47:09 +10:00
Lea Anthony fac2a8ba3c Closes #1357 #1366 2022-05-01 10:41:07 +10:00
Lea Anthony 912d7cf34b Add startup method to templates by default 2022-05-01 10:19:15 +10:00
Lea Anthony 848ea88207 Update stale.yml 2022-05-01 09:47:43 +10:00
stffabi 22d3f93b52 [v2, darwin] Initialize native variables on stack to prevent segfault (#1362) 2022-04-30 06:11:19 +10:00
stffabi d9120181b7 [v2] Validate devServer property to be of the correct form (#1359) 2022-04-29 07:22:45 +10:00
Lea Anthony 0a9ae0dff3 fix docs again 2022-04-27 22:29:25 +10:00
Lea Anthony 3dbe2a0942 Fix docs 2022-04-27 22:13:12 +10:00
Lea Anthony ac81d5aa3d v2.0.0-beta.35 2022-04-27 22:01:32 +10:00
Lea Anthony 2e1f758f20 v2.0.0-beta.35 2022-04-27 21:47:11 +10:00
Lea Anthony 41f9c07c88 Fixes #1343 2022-04-27 21:29:54 +10:00
Lea Anthony a8357a2459 Update templates 2022-04-27 20:53:59 +10:00
Lea Anthony bd344bf32c Update runtime.d.ts + regenerate templates 2022-04-27 20:53:24 +10:00
Lea Anthony ded28cf9c2 Remove redundant dev .js files 2022-04-27 19:26:42 +10:00
Lea Anthony e7aa74905a Initial commit (#1352) 2022-04-27 19:10:20 +10:00
Lea Anthony 781a0df72e Fix for TS/JS generation on methods with no returns (#1356) 2022-04-27 19:09:55 +10:00
Lontten 8aaa0e0d9d add a template docs : zh-Hans (#1354)
add a template with Vite + React + TypeScript
基于 Vite + React + TypeScript 的模板
2022-04-27 07:11:49 +10:00
Lontten ef8dc44317 add a template with Vite + React + TypeScript (#1353)
a template with Vite + React + TypeScript
2022-04-26 21:00:26 +10:00
stffabi 524411964f [v2] WindowReloadApp should use the startURL of the frontend to support reloading when a frontend dev server is used (#1347) 2022-04-23 07:09:53 +10:00
Lea Anthony 75ee36f8eb Update docs regarding TitlebarAppearsTransparent 2022-04-21 08:30:15 +10:00
Lea Anthony 7f3f56663f Fix: wails dev 2022-04-21 07:40:56 +10:00
Lea Anthony f6257d3d31 Add Environment and WindowReloadApp calls to runtime. Updated default templates. 2022-04-20 20:28:41 +10:00
Lea Anthony 2e3c90c096 Update runtime.d.ts documentation. Regenerate templates 2022-04-19 21:48:26 +10:00
Lea Anthony 4e9eda8e1f Fix bug in WindowSet*Theme 2022-04-19 17:44:40 +10:00
Lea Anthony 02fcf738d3 Update runtime wrapper. Update base templates. 2022-04-19 17:43:55 +10:00
Lea Anthony 053f2748d5 Use Algolia Search (#1339) 2022-04-18 09:41:56 +10:00
Lea Anthony ad6a7d5a8c Fix: Outputfilename in flags now works as it should 2022-04-17 06:59:39 +10:00
Benjamin Thomas 93defccf4d Add Elm template :) (#1336) 2022-04-16 21:50:41 +10:00
dependabot[bot] 5ffc815d34 Bump async from 2.6.3 to 2.6.4 in /website (#1335)
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-16 14:01:57 +10:00
Lea Anthony 4e03c84fbb Feature/default templates (#1334) 2022-04-15 20:30:10 +10:00
Lea Anthony 7fbae0d333 Fix: event data processing (#1326) 2022-04-15 20:26:13 +10:00
Lea Anthony 82806d47b3 Move experimental tag 2022-04-13 07:50:23 +10:00
stffabi cb2de2ad30 [v2, docs] Add experimental badge for assets handler and fix type definitions (#1328) 2022-04-12 22:35:09 +10:00
stffabi 6d09a45a30 [v2] Add support for AssetsHandler (#1325)
* [website] Fix devserver default value doc

* [v2] Add support for AssetsHandler

AssetsHandler is a http.Handler delegate, which gets called
as a fallback for all Non-GET requests and for GET requests
for which the Assets didn’t find the file.

Known Limitations on Linux:
- All requests are GET requests
- No request headers
- No request body
- No response status code, only StatusOK will be returned
- No response headers

Known Limitations on Windows:
-  Request body is leaking memory. Seems to be a bug in
    WebView2, investigation angoing.

Most of these limitations on Linux will be fixed in the future with
adding support for Webkit2Gtk 2.36.0+.

* [v2, linux] Add response streaming support

The complete response won’t be held anymore in memory and will
be streamed to WebKit2.

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-04-12 20:18:27 +10:00
Lea Anthony 3fbe4f71c4 Ensure there's a default wailsJS dir 2022-04-12 20:13:05 +10:00
Lea Anthony 56206729ef Update sponsors 2022-04-12 06:15:56 +10:00
stffabi c70d93b482 Suppress resizing during minimize of a frameless window (#1322)
If the window is frameless and we are minimizing, then we need to suppress
the Resize on the WebView2. If we don't do this, restoring does not work as
expected and first restores with some wrong size during the restore animation
and only fully renders when the animation is done.
This highly depends on the content in the WebView.
Possible fix for #1319
2022-04-10 18:45:09 +10:00
Lea Anthony 5f596c7679 Update go.mod 2022-04-10 09:41:44 +10:00
Lea Anthony ebf4cf13f2 Feature: Add menu helpers 2022-04-09 20:36:48 +10:00
Lea Anthony f08176079c Feature: Support double click in drag areas 2022-04-09 10:27:54 +10:00
归位 65a97a668e If the element adds the data-rails-drag attribute, it can trigger the dbclick event. (#1317)
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-04-09 10:18:01 +10:00
Lea Anthony 0c244b1ce4 Fix: broken links 2022-04-09 10:11:35 +10:00
Lea Anthony 3b85c75359 Update application-development.mdx 2022-04-09 07:21:08 +10:00
Florent c3a98b058e ensure webkit/gtk callbacks run on main thread (#1320)
prevent close event being propagated when handled in app
closes #1268
closes #1288
2022-04-08 06:42:17 +10:00
Lea Anthony b94db409dd Fixes #1315 2022-04-06 21:53:40 +10:00
Lea Anthony 43f8a1f773 fix: blank namespaces, unknown structs 2022-04-06 19:13:10 +10:00
Lea Anthony dce5fd442f fix: i18n messages/bug + docs bug. 2022-04-05 21:41:49 +10:00
Lea Anthony f21c9ba880 docs: update binding sections 2022-04-05 21:30:55 +10:00
Lea Anthony 55855ccc4d fix: duplicate model generation 2022-04-05 21:30:55 +10:00
Lea Anthony eb97f53124 Feature: Don't generate models.ts if there are no models. 2022-04-05 21:30:55 +10:00
Misitebao f192cbd01b feat(website): convert documents that don't require version management to individual pages (#1311) 2022-04-05 19:46:07 +10:00
Lea Anthony 625eca27f6 Feature: TS namespaces 2022-04-05 18:11:56 +10:00
Misitebao a65a40fb4c chore: upgrade issue template (#1312) 2022-04-05 08:49:11 +10:00
Lea Anthony 2465538448 Fix: TS namespace inference 2022-04-05 08:26:54 +10:00
Lea Anthony bb2da2f810 Chore: remove debug output 2022-04-04 21:19:36 +10:00
Lea Anthony 6b38f0c68e Improved TS Generation (#1310)
Improve TS Generation
2022-04-04 21:01:00 +10:00
Lea Anthony 95b70de01f chore: add build tags to win32 package 2022-04-04 20:55:25 +10:00
Misitebao 78c6705cc3 feat(website): improve website content (#1309)
Update Chinese translation
2022-04-04 20:05:54 +10:00
Lea Anthony 8bb3af2282 Refactor TS imports 2022-04-04 07:19:39 +10:00
Ariel 2c8d94ca48 Add missing method declaration (#1308)
* Add missing method declaration

* Add eventsoff to the wrapper
2022-04-03 22:01:31 +10:00
Ariel d5a8ee0132 Do not duplicate imports (#1307)
* Do not duplicate imports

* Fix warning as first element
2022-04-03 20:17:20 +10:00
Lea Anthony 55cec7af17 Fix: Handle struct pointers in new TS generation 2022-04-03 17:58:53 +10:00
Lea Anthony 90fc96b494 Translations docs 2022-04-03 17:47:56 +10:00
Lea Anthony 8e8b88ef48 Translations refactor 2022-04-03 17:22:37 +10:00
Lea Anthony 4a20655b29 Translations + Tidy Up 2022-04-03 17:18:36 +10:00
Lea Anthony 4721949657 Improved bindings generation 2022-04-03 07:31:07 +10:00
Florent d119fce3c3 remove duplicate mimetype entries (#1304) 2022-04-01 20:35:53 +11:00
Lea Anthony f6cdafa5ff Bugfix: generate correct model reference in bindings.d.ts 2022-04-01 13:08:56 +11:00
Lea Anthony 7af39e4819 Feature: Go logger "f" equivalents 2022-04-01 12:27:40 +11:00
Lea Anthony 073f8202e5 Fix windows/frontend compile error 2022-04-01 09:59:33 +11:00
Florent 8f860c9ea6 [Feature #1300] mime check for bom and comments (#1302)
* check for BOM and SVG comments
2022-04-01 08:39:54 +11:00
Lea Anthony f734d26adb Use wailsapp/mimetype module 2022-04-01 08:21:57 +11:00
Sebastian Bauer 7dd3f96915 [Feature/1149] Dark mode: functions for manually switching theme (#1291)
* [Feature/1149] Dark mode: functions for manually switching theme
2022-04-01 08:21:37 +11:00
Travis McLane 584f88f727 cleanup Version (#1303) 2022-03-31 17:59:23 +11:00
Lea Anthony 2376062008 Update NSIS guide. Backport docs to .34. Fix references. Fix titles. 2022-03-31 12:23:28 +11:00
Lea Anthony 5ead563989 Update NSIS guide 2022-03-31 11:24:35 +11:00
Lea Anthony f55f965b3d Update NSIS guide 2022-03-31 10:11:44 +11:00
gardc a22383df07 added docs for signing and NSIS (#1301) 2022-03-31 08:10:34 +11:00
stffabi 65fb42d9e7 [v2] Add support for external frontend dev servers (#1290)
* [v2] Consolidate AssetServers

* [v2] Support starturl for webview on linux and darwin

* [v2] Add support for frontend DevServer

* [v2] Activate frontend DevServer in svelte template

* [website] Add bleeding edge guide for PRs

* DoNotMerge: Bump Version for testing

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-31 00:40:44 +11:00
Lea Anthony 4cedfdc091 Docs versioning (#1299)
* Add beta.34 version

* Fix up document links
2022-03-30 23:21:33 +11:00
Misitebao 085d59612b refactor(website): upgrade site to docusaurus@2.0.0-beta.17 (#1223)
* refactor(website): Upgrade site to `docusaurus@2.0.0-beta.17`
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-30 21:49:19 +11:00
bearsh d8bcf7ac70 v2: linux: add icon to linux specific app option and load it during w… (#1272)
* v2: linux: add icon to linux specific app option and load it during window creation

Signed-off-by: Martin Gysel <me@bearsh.org>

* doc: linux specific option: icon
2022-03-30 18:15:58 +11:00
Florent ec31d49b59 prevent close event being propagated when handled in app (#1297)
closes #1288
2022-03-30 18:13:01 +11:00
Lea Anthony 6883337a18 Update headers code 2022-03-29 22:17:41 +11:00
Lea Anthony 3b81986bdd Fix wails doctor 1.18 2022-03-29 22:13:33 +11:00
Lea Anthony ec59eff352 Update go-webview. Fix wails doctor 2022-03-29 22:05:56 +11:00
Lea Anthony b6de689400 Update go-webview 2022-03-29 21:55:34 +11:00
Lea Anthony 1da68cfc7c Remove unused directories + tidy up 2022-03-29 21:47:26 +11:00
Lea Anthony a5bf76b30f Fix up dev. Pull in go-webview and winc 2022-03-29 21:45:16 +11:00
dependabot[bot] c78ee7e49b Bump minimist from 1.2.5 to 1.2.6 in /website (#1287)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-29 21:41:22 +11:00
dependabot[bot] 7749980040 Bump ansi-regex from 4.1.0 to 4.1.1 in /runtime/js (#1286)
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 21:41:04 +11:00
dependabot[bot] 222deff03c Bump minimist from 1.2.5 to 1.2.6 in /v2/internal/runtime/js (#1284)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 21:40:26 +11:00
dependabot[bot] 6a3e73de3f Bump node-forge from 1.2.1 to 1.3.0 in /website (#1282)
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.2.1...v1.3.0)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-29 21:39:38 +11:00
dependabot[bot] 498fa51605 Bump minimist from 1.2.5 to 1.2.6 in /runtime/js (#1280)
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-29 21:39:12 +11:00
dependabot[bot] 92df5fabba Bump ajv from 6.12.0 to 6.12.6 in /v2/internal/runtime/js (#1194)
Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.12.0 to 6.12.6.
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](https://github.com/ajv-validator/ajv/compare/v6.12.0...v6.12.6)

---
updated-dependencies:
- dependency-name: ajv
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-29 21:38:48 +11:00
dependabot[bot] 983306c13d Bump prismjs from 1.26.0 to 1.27.0 in /website (#1191)
Bumps [prismjs](https://github.com/PrismJS/prism) from 1.26.0 to 1.27.0.
- [Release notes](https://github.com/PrismJS/prism/releases)
- [Changelog](https://github.com/PrismJS/prism/blob/master/CHANGELOG.md)
- [Commits](https://github.com/PrismJS/prism/compare/v1.26.0...v1.27.0)

---
updated-dependencies:
- dependency-name: prismjs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-29 21:38:12 +11:00
dependabot[bot] e403ad8063 Bump follow-redirects from 1.14.7 to 1.14.8 in /website (#1151)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-29 21:37:45 +11:00
stffabi 1f7b7f5e6c [v2] Wails doctor add information about wails (#1294)
Also outputs VCS information if Go 1.18+ has been used
to build wails.
2022-03-29 20:10:33 +11:00
Lea Anthony 48254b73e5 [Feature/1149] Dark mode (#1281)
* Add Windows version helper

* Initial theme support

* Support custom themes

* Update docs

* Honour HighContrast theme. Remove import "C". Refactor

* Small refactor

* Support inactive theme

* Update Docs
2022-03-27 22:57:45 +11:00
Lea Anthony 2e21f25182 Fix S 2022-03-27 20:47:57 +11:00
Lea Anthony 1f96484e8c Update features 2022-03-27 20:47:27 +11:00
Lea Anthony ccbfafd576 Remove v1 Install instructions 2022-03-27 20:41:25 +11:00
Lea Anthony 0053641796 Update Sponsors 2022-03-27 19:51:14 +11:00
Lea Anthony 55f2a24a94 [Mac] Close window immediately on quit 2022-03-26 19:48:34 +11:00
Lea Anthony 2d2ee95c8a v2.0.0-beta.34 2022-03-26 19:00:20 +11:00
Lea Anthony 47bf92850c Update bleeding-edge.mdx 2022-03-25 21:02:56 +11:00
Lea Anthony f98571fae5 Update bleeding-edge.mdx 2022-03-25 21:02:36 +11:00
Lea Anthony e314c41337 Update WindowStartState for Linux 2022-03-19 11:26:14 +11:00
Lea Anthony 2c65415268 More info in the project template READMEs 2022-03-19 11:02:22 +11:00
Lea Anthony b002830897 Clarify supported platforms 2022-03-17 21:14:07 +11:00
Lea Anthony fcf52abec8 Fix CGO_LDFLAGS 2022-03-16 21:44:34 +11:00
Lea Anthony 8e3cb27bfe #1265 Support CGO_LDFLAGS 2022-03-16 21:40:58 +11:00
Lea Anthony 78212603bc #1265 Support debug IDE config 2022-03-16 21:13:56 +11:00
Lea Anthony 1996e8b2ba Fix compile issue 2022-03-16 08:41:34 +11:00
Lea Anthony d7395fc56a Check system for user installed Linux dependencies (#1180)
* [linux] Fix discovery of other deps

* Update v2/internal/system/system_linux.go

Co-authored-by: stffabi <stffabi@users.noreply.github.com>

* Try setting locale before running apt

* Use LC_ALL

* Remove continue

Co-authored-by: stffabi <stffabi@users.noreply.github.com>
2022-03-15 20:25:23 +11:00
Lea Anthony a278c9e164 Try to focus window when Show() is called. (#1212)
* Try to focus window when Show() is called.

* Ensure Focus is regained by Webview2 when tabbing

* Run restore code on main thread
2022-03-15 20:16:38 +11:00
Lea Anthony 60c6dce07d Ensure Focus is regained by Webview2 when tabbing (#1257) 2022-03-15 20:15:21 +11:00
Misitebao 3972093ede docs: sync documents (#1260) 2022-03-15 20:13:32 +11:00
Stefanos Papadakis e78557ec24 Windows switch scheme: https -> http (#1255) 2022-03-15 05:58:43 +11:00
stffabi ea4d479be3 [v2] Use os.Args[0] for self starting wails (#1258)
This removes the dependency of wails being in the PATH
2022-03-15 05:55:13 +11:00
Lea Anthony 15e5eb67f9 Output error message in runCommand 2022-03-14 22:53:46 +11:00
Lea Anthony 8aea6a3bfc Update domReady comment in templates + website 2022-03-14 22:48:32 +11:00
Lea Anthony 9c5600d8f3 Ensure default icon is generated regardless of icon.ico availability 2022-03-14 22:35:21 +11:00
Lea Anthony 97b24a51a1 Show extension by default (#1228) 2022-03-14 22:05:33 +11:00
Lea Anthony 106ff03f2e Add reference to community templates 2022-03-14 20:54:11 +11:00
Florent d9e5cce2b2 add support for 'DomReady' callback on linux (#1249)
* add support for 'DomReady' callback on linux
cosmetic: use bodyLen instead of len() in processRequest()

* reformat webViewLoadChanged() for consistency

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-14 18:42:38 +11:00
Lea Anthony daad8437c2 Update troubleshooting guide 2022-03-13 20:36:40 +11:00
Lea Anthony 8037eab895 Ignore .git dirs in dev 2022-03-13 10:19:25 +11:00
Lea Anthony 09756b5150 Initial commit 2022-03-13 10:15:57 +11:00
BillBuilt a52d68438b Fix, or at least a workaround, for (#1232) (#1247) 2022-03-12 17:30:25 +11:00
fengweiqiang f4d1d02ded Build added win32 compatibility (#1238) 2022-03-12 17:29:25 +11:00
Lea Anthony 3d12935e2e Fix memory leak in ExecJS for Mac (#1230) 2022-03-11 23:43:51 +11:00
Ian M. Jones 64480ff1ab Ensure Linux IsFullScreen uses GDK_WINDOW_STATE_FULLSCREEN bitmask appropriately. (#1245) 2022-03-11 15:41:28 +11:00
stffabi abe8ba9266 [v2, windows] Fix maximised start state (#1243) 2022-03-11 06:26:59 +11:00
Lea Anthony 1048782eb4 Initial commit (#1241) 2022-03-10 21:20:41 +11:00
Florent 622c4adad6 ensure binary resources can be served (#1240)
* ensure binary resources can be served
fixes #1235

* use free instead of g_free
check that C.malloc does not fail before using C.memcpy
2022-03-10 21:17:24 +11:00
Lea Anthony ae6da05e9d Feature/1175 default index page (#1229)
* Initial commit

* Retry index.html every 500ms for 5s before defaulting to the default index page.

* Load all files using the same technique

* Remove reload script
2022-03-09 23:49:27 +11:00
Lea Anthony ba0b173e02 Use local search (#1234) 2022-03-09 22:30:24 +11:00
Ariel 9097c9086b import models on binding definition (#1231) 2022-03-09 07:44:32 +11:00
stffabi c5c0617c89 [v2, nsis] Seems like / as path separator works only for some directives in a cross platform way (#1227)
Especially the File directive seems not to work with a `/` on
Windows. Whereas `\` works for all directives and on all platforms.
So the `\` in NSIS can be used also on Linux and MacOS.
2022-03-08 20:35:16 +11:00
Misitebao d29e01d552 docs: sync documents (#1224) 2022-03-08 06:54:40 +11:00
Lea Anthony 122806161b Output errors in dev mode #1031 2022-03-07 21:12:26 +11:00
Lea Anthony 3a23662a34 Added variadic workaround to troubleshooting guide 2022-03-07 20:08:59 +11:00
Lea Anthony 659cc3ed61 Tidy project init banner 2022-03-07 19:35:31 +11:00
Misitebao 2a096a6ff9 feat(website): optimize website and sync documents (#1219)
- Optimize the homepage carousel
- Sync documents
- Update style files and images
2022-03-07 19:28:37 +11:00
Lea Anthony 0c09fe4560 Update tagline 2022-03-06 22:31:15 +11:00
Lea Anthony 51dd1361e3 Feature/docs update (#1218)
* Doc updates

* Add carousel

* Add more images to carousel

* Add search

* Fix CSS

* Cheeky fix for 1px bug
2022-03-06 22:29:26 +11:00
Lea Anthony a48ea8768f Update installation.mdx 2022-03-06 22:22:09 +11:00
Lea Anthony 95d34c510e Run watcher after initial build (#1216) 2022-03-06 22:20:50 +11:00
Misitebao d36e130315 refactor(cli): optimize default templates (#1214)
* refactor(cli): optimize the template that generates the base template

* refactor: optimize the default vanilla template

* feat(cli): add script to default vanilla template

* refactor(cli): refactor default svelte template and add script

* fix: remove manually added assetdir fields

Manually specified values are removed as the application will automatically infer from embed.FS.

* fix: remove drag attribute within page

* Update v2/cmd/wails/internal/commands/initialise/templates/templates/svelte/frontend/README.md

Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
2022-03-06 22:00:08 +11:00
Misitebao 7d8f2243ae feat(website): sync documents and add content (#1215)
* feat(website): sync documents and add content

- Add a directory to the website
- Update site navigation menu
- Update site tagline(Emphasis on cross-platform)
- Sync the changelog of the latest version to the website

* docs: remove the `appendix` directory
2022-03-06 16:18:02 +11:00
Lea Anthony 27ab3cf4e7 v2.0.0-beta.33 2022-03-05 13:35:34 +11:00
Lea Anthony 31b609dff0 Print friendlier file path when file does not exist 2022-03-05 13:33:24 +11:00
stffabi fbf75b1d14 [v2, windows] Move assets from file://wails to https://wails.localhost (#1211)
This should allow web workers to be used
2022-03-05 13:32:28 +11:00
Ian M. Jones e9aa0d5c5a Fix fullscreen on linux arm64 (#1209)
* Fix fatal error on otherwise clean exit.

* Fix race condition while setting title during window creation.

* Fix unexpected signal error when clicking webview should initiate a drag window operation.

* Ensure ExecuteOnMainThread callbacks are removed from the event source list on completion.

* Ensure all ExecuteOnMainThread callbacks use the expected return value on completion.

* Fix potential memory leak when exiting early from startDrag.

* Fix using runtime.WindowFullscreen on Linux ARM64.
2022-03-04 23:07:40 +11:00
Misitebao cdfd70d3f7 docs: improve and synchronize chinese documents (#1205) 2022-03-04 17:59:46 +11:00
Lea Anthony 7287fcc170 Fixes #1208. Add docs about go.mod version updates in dev mode 2022-03-04 17:56:46 +11:00
Ian M. Jones c378d935f3 Fix linux unexpected signal errors (#1200)
* Fix fatal error on otherwise clean exit.

* Fix race condition while setting title during window creation.

* Fix unexpected signal error when clicking webview should initiate a drag window operation.

* Ensure ExecuteOnMainThread callbacks are removed from the event source list on completion.

* Ensure all ExecuteOnMainThread callbacks use the expected return value on completion.

* Fix potential memory leak when exiting early from startDrag.
2022-03-04 17:50:43 +11:00
Lea Anthony 8eae31d865 Fixes #1206. ERROR level used in Production 2022-03-04 17:46:04 +11:00
Lea Anthony c7c068ade0 Add Javascriptcore include. #1198 2022-03-02 20:17:30 +11:00
stffabi b02dbfaddf [v2] NSIS installer support for Windows (#1184)
* [v2] Add support for post build hooks

Currently only supports build-level hooks

* [v2] Improve build assets handling and use single source for manifest generation

The manifest asset files are now a go template and data will be
resolved before they are included into the build output.

Breaking Change: Windows manifest file must be named
“wails.exe.manifest” and doesn’t depend on the project name
anymore.

* [v2, windows] NSIS installer generation
2022-03-02 19:44:31 +11:00
stffabi c63b1f1981 [v2] Consolidate processRequest, improve logging and error handling (#1158) 2022-02-28 19:14:03 +11:00
Lea Anthony 944494c4ef Add troubleshooting guide. #1187 2022-02-28 08:33:18 +11:00
Misitebao a971751dab feat(cli): optimized template generation (#1166)
* feat(cli): update base template configuration

* feat: optimize template project script

(https://github.com/wailsapp/wails/issues/1165)
2022-02-27 20:40:55 +11:00
Lea Anthony 6ec670129b Update README.md 2022-02-27 15:51:46 +11:00
Lea Anthony 4506da041a Update bug_report.md 2022-02-27 15:48:01 +11:00
Lea Anthony e9962198d0 Update feature_request.md 2022-02-27 15:46:18 +11:00
Misitebao 82cb3b99e5 feat(cli): add version support for remote templates (#1181)
(https://github.com/wailsapp/wails/issues/925)
2022-02-26 10:52:56 +11:00
Lea Anthony dfb3ab0681 Run webview2 bootstrapper as normal user, not administrator 2022-02-26 10:40:18 +11:00
Lea Anthony 5b60fcc8f6 Update menus.mdx 2022-02-26 10:11:05 +11:00
Misitebao 9e08fd668c docs: update and sync all documents (#1183)
* docs: update and sync all documents

* docs: sync readme
2022-02-24 22:08:00 +11:00
Lea Anthony 513c1fd981 Add Linux Arch 2022-02-24 06:10:38 +11:00
Lea Anthony 3866da944c Update Linux Status 2022-02-24 06:09:28 +11:00
Lea Anthony 613a9e3143 Bugfix: Fix potential nil dereference 2022-02-23 20:57:05 +11:00
stffabi ff8e701793 [v2] Introduce frontend:dev:watcher command (#1170) 2022-02-23 20:12:59 +11:00
Lea Anthony 451b0c1e15 Update logo 2022-02-23 19:53:15 +11:00
Lea Anthony 8ce9ee8e41 v2.0.0-beta.32 2022-02-23 07:12:51 +11:00
Lea Anthony 9593ea95f7 [linux] Fix discovery of npm, docker and upx (#1174) 2022-02-23 07:11:27 +11:00
Lea Anthony c872802ced v2.0.0-beta.31 2022-02-22 21:36:14 +11:00
Lea Anthony a445db1b7b Feature/linux v2 beta (#1171)
* Update docusaurus version

* Add install instructions

* Add Linus Distro Support Page

* Update Linus Distro Support Page

* v2.0.0-beta.30

* image

* update blog

* Update blog

* Remove exp tag

* Update banner

* Update banner

* [linux] Fix warning
2022-02-22 21:35:03 +11:00
Lea Anthony fff838d7c6 Clarify frontend:dev option. Closes #1169 2022-02-22 19:16:19 +11:00
1079 changed files with 56473 additions and 32211 deletions
-41
View File
@@ -1,41 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
#####################################################
**V1 users: If you have a technical issue, please do not open a bug this way!**
Please use the `wails issue` command!
If you do not do this then the issue may be closed automatically.
NOTE: If your bug is related to Windows, make sure you read
the [Windows Developer Guide](https://wails.app/guides/windows/)
#####################################################
**Description**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behaviour:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behaviour**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**System Details**
V2 users: Please add the output of `wails doctor`.
**Additional context**
Add any other context about the problem here.
- [ ] This issue is for Windows and I have read the [Windows Developer Guide](https://wails.app/guides/windows/)
+81
View File
@@ -0,0 +1,81 @@
name: Bug Report
description: Create a report to help us improve
# title: ""
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
***Please note: No new bug reports are being accepted for Wails v1***
Before submitting this issue, please do the following:
- Do a web search for your error. This usually leads to a much better understanding of the issue.
- Prove that the error is indeed a Wails bug and not an application bug, with a specific set of steps to reproduce.
- Search both the issue tracker (even closed issues) and discussion forums.
- Try to fix it yourself. Keep a list of things you have done to fix the problem.
If after doing all the above, the problem remains, please continue with this ticket providing *all* the information requested.
Bug reports that do not follow these steps will likely be closed, so please help us to help you.
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is.
placeholder: A clear and concise description of what the bug is.
# value: ""
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: To Reproduce
description: Steps to reproduce the behaviour
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: textarea
id: expected-behaviour
attributes:
label: Expected behaviour
description: A clear and concise description of what you expected to happen.
placeholder: A clear and concise description of what you expected to happen.
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
placeholder: If applicable, add screenshots to help explain your problem.
validations:
required: false
- type: textarea
id: attempted-fixes
attributes:
label: Attempted Fixes
description: A list of things you have tried to fix the problem, including search engine links.
placeholder: A list of things you have tried to fix the problem, including search engine links.
validations:
required: false
- type: textarea
id: systemetails
attributes:
label: System Details
description: Please add the output of `wails doctor`.
render: shell
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional context
description: Add any other context about the problem here.
placeholder: Add any other context about the problem here.
validations:
required: false
+5
View File
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: GitHub Community Discussions
url: https://github.com/wailsapp/wails/discussions
about: If your question is not a feature or a bug, please go to the discussion panel and retrieve if your question already exists before submitting.
-20
View File
@@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
@@ -0,0 +1,38 @@
name: Feature request
description: Suggest an idea for this project
# title: ""
labels: ["enhancement"]
body:
- type: markdown
attributes:
value: |
***Please note: No new feature requests are being accepted for Wails v1***
- type: textarea
attributes:
label: Is your feature request related to a problem? Please describe.
description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
validations:
required: false
- type: textarea
attributes:
label: Describe the solution you'd like
description: A clear and concise description of what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Describe alternatives you've considered
description: A clear and concise description of any alternative solutions or features you've considered.
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: Add any other context or screenshots about the feature request here.
validations:
required: false
+4 -1
View File
@@ -8,6 +8,7 @@ exemptLabels:
- security
- onhold
- inprogress
- "Selected For Development"
# Label to use when marking an issue as stale
staleLabel: wontfix
# Comment to post when marking an issue as stale. Set to `false` to disable
@@ -16,4 +17,6 @@ markComment: >
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false
closeComment: false
exemptMilestones: true
exemptAssignees: true
+1
View File
@@ -31,3 +31,4 @@ v2/test/kitchensink/frontend/package.json.md5
!v2/internal/ffenestri/windows/x64/webview2.dll
!v2/internal/ffenestri/windows/x64/WebView2Loader.dll
.idea/
v2/cmd/wails/internal/commands/initialise/templates/testtemplates/
+30 -123
View File
@@ -1,5 +1,5 @@
<p align="center" style="text-align: center">
<img src="logo.png" width="55%"><br/>
<img src="logo-universal.png" width="55%"><br/>
</p>
<p align="center">
Build desktop applications using Go & Web Technologies.<br/><br/>
@@ -52,53 +52,50 @@
- [4. Features](#nav-4)
- [5. Sponsors](#nav-5)
- [6. Installation](#nav-6)
- [6.1 MacOS](#nav-6-1)
- [6.2 Linux](#nav-6-2)
- [6.2.1 Debian/Ubuntu](#nav-6-2-1)
- [6.2.2 Arch Linux / ArchLabs / Ctlos Linux](#nav-6-2-2)
- [6.2.3 Centos](#nav-6-2-3)
- [6.2.4 Fedora](#nav-6-2-4)
- [6.2.5 VoidLinux & VoidLinux-musl](#nav-6-2-5)
- [6.2.6 Gentoo](#nav-6-2-6)
- [6.3 Windows](#nav-6-3)
- [7. Usage](#nav-7)
- [7.1 Next Steps](#nav-7-1)
- [8. FAQ](#nav-8)
- [9. Contributors](#nav-9)
- [10. Special Mentions](#nav-10)
- [12. Special Thanks](#nav-11)
- [7. FAQ](#nav-8)
- [8. Contributors](#nav-9)
- [9. Special Mentions](#nav-10)
- [10. Special Thanks](#nav-11)
</details>
<span id="nav-3"></span>
## Introductions
## Introduction
The traditional method of providing web interfaces to Go programs is via a built-in web server. Wails offers a different
approach: it provides the ability to wrap both Go code and a web frontend into a single binary. Tools are provided to
make this easy for you by handling project creation, compilation and bundling. All you have to do is get creative!
<span id="nav-3-1"></span>
<hr/>
<h3><strong>PLEASE NOTE: As we are approaching the v2 release, we are not accepting any new feature requests or bug reports for v1. If you have a critical issue, please open a ticket and state why it is critical.</strong></h3>
<hr/>
### Official Website
### Version 2
The official docs can be found at [https://wails.app](https://wails.app).
Wails v2 has been released in Beta for all 3 platforms. Check out the [new website](https://wails.io) if you are
interested in trying it out.
Click [here](https://wails.io) if you are interested in trying out v2 Beta for Windows.
### Legacy v1 Website
The legacy v1 docs can be found at [https://wails.app](https://wails.app).
<span id="nav-4"></span>
## Features
- Use standard Go for the backend
- Use any frontend technology to build your UI
- Quickly create Vue, Vuetify or React frontends for your Go programs
- Expose Go methods/functions to the frontend via a single bind command
- Uses native rendering engines - no embedded browser
- Shared events system
- Native file dialogs
- Powerful cli tool
- Use any frontend technology you are already familiar with to build your UI
- Quickly create rich frontends for your Go programs using pre-built templates
- Easily call Go methods from Javascript
- Auto-generated Typescript definitions for your Go structs and methods
- Native Dialogs & Menus
- Supports modern translucency and "frosted window" effects
- Unified eventing system between Go and Javascript
- Powerful cli tool to quickly generate and build your projects
- Multiplatform
- Uses native rendering engines - *no embedded browser*!
<span id="nav-5"></span>
@@ -109,8 +106,8 @@ This project is supported by these kind people / companies:
<a href="https://github.com/sponsors/leaanthony" style="width:100px;">
<img src="/img/silver%20sponsor.png" width="100"/>
</a>
<a href="https://github.com/letheanVPN" style="width:100px;">
<img src="https://github.com/letheanVPN.png?size=100" width="100"/>
<a href="https://github.com/selvindev" style="width:100px;">
<img src="https://github.com/selvindev.png?size=100" width="100"/>
</a>
<br/>
<br/>
@@ -123,9 +120,6 @@ This project is supported by these kind people / companies:
<a href="https://github.com/codydbentley" style="width:100px">
<img src="https://github.com/codydbentley.png?size=100" width="100"/>
</a>
<a href="https://github.com/CrackDavid" style="width:100px">
<img src="https://github.com/CrackDavid.png?size=100" width="100"/>
</a>
<a href="https://www.easywebadv.it/" style="width:100px">
<img src="website/static/img/easyweb.png" width="100"/>
</a>
@@ -200,102 +194,15 @@ This project is supported by these kind people / companies:
<a href="https://github.com/GargantuaX" style="width:45px">
<img src="https://github.com/GargantuaX.png?size=45" width="45"/>
</a>
<a href="https://github.com/brodyover" style="width:45px">
<img src="https://github.com/brodyover.png?size=45" width="45"/>
</a>
<span id="nav-6"></span>
## Installation
Wails uses cgo to bind to the native rendering engines so a number of platform dependent libraries are needed as well as
an installation of Go. The basic requirements are:
- Go 1.16
- npm
<span id="nav-6-1"></span>
### MacOS
Make sure you have the xcode command line tools installed. This can be done by running:
`xcode-select --install`
<span id="nav-6-2"></span>
### Linux
<span id="nav-6-2-1"></span>
#### Debian/Ubuntu
`sudo apt install libgtk-3-dev libwebkit2gtk-4.0-dev`
_Debian: 8, 9, 10_
_Ubuntu: 16.04, 18.04, 19.04_
_Also succesfully tested on: Zorin 15, Parrot 4.7, Linuxmint 19, Elementary 5, Kali, Neon_, Pop!\_OS
<span id="nav-6-2-2"></span>
#### Arch Linux / ArchLabs / Ctlos Linux
`sudo pacman -S webkit2gtk gtk3`
_Also succesfully test on: Manjaro & ArcoLinux_
<span id="nav-6-2-3"></span>
#### Centos
`sudo yum install webkitgtk3-devel gtk3-devel`
_CentOS 6, 7_
<span id="nav-6-2-4"></span>
#### Fedora
`sudo yum install webkit2gtk3-devel gtk3-devel`
_Fedora 29, 30_
<span id="nav-6-2-5"></span>
#### VoidLinux & VoidLinux-musl
`xbps-install gtk+3-devel webkit2gtk-devel`
<span id="nav-6-2-6"></span>
#### Gentoo
`sudo emerge gtk+:3 webkit-gtk`
<span id="nav-6-3"></span>
### Windows
Windows requires gcc and related tooling. The recommended download is
from [http://tdm-gcc.tdragon.net/download](http://tdm-gcc.tdragon.net/download). Once this is installed, you are good to
go.
<span id="nav-7"></span>
## Usage
**Ensure Go modules are enabled: GO111MODULE=on and go/bin is in your PATH variable.**
Installation is as simple as running the following command:
```
go get -u github.com/wailsapp/wails/cmd/wails
```
<span id="nav-7-1"></span>
### Next Steps
It is recommended at this stage to read the comprehensive documentation at [https://wails.app](https://wails.app).
The installation instructions are on the [official website](https://wails.io/docs/gettingstarted/installation).
<span id="nav-8"></span>
+11 -8
View File
@@ -1,5 +1,5 @@
<p align="center" style="text-align: center">
<img src="logo.png" width="55%"><br/>
<img src="logo-universal.png" width="55%"><br/>
</p>
<p align="center">
使用 Go 和 Web 技术构建桌面应用程序。<br/><br/>
@@ -81,9 +81,13 @@
### 官方网站
#### v1
官方文档可以在 [https://wails.app](https://wails.app) 中找到。
如果您对适用于 Windows 的 v2 测试版感兴趣,可以点击[此处](https://wails.io)查看。
#### v2
Wails v2 已针对所有 3 个平台发布了 Beta 版。如果您有兴趣尝试一下,请查看[新网站](https://wails.io)。
镜像网站:
@@ -112,8 +116,8 @@
<a href="https://github.com/sponsors/leaanthony" style="width:100px;">
<img src="/img/silver%20sponsor.png" width="100"/>
</a>
<a href="https://github.com/letheanVPN" style="width:100px;">
<img src="https://github.com/letheanVPN.png?size=100" width="100"/>
<a href="https://github.com/selvindev" style="width:100px;">
<img src="https://github.com/selvindev.png?size=100" width="100"/>
</a>
<br/>
<br/>
@@ -126,9 +130,6 @@
<a href="https://github.com/codydbentley" style="width:100px">
<img src="https://github.com/codydbentley.png?size=100" width="100"/>
</a>
<a href="https://github.com/CrackDavid" style="width:100px">
<img src="https://github.com/CrackDavid.png?size=100" width="100"/>
</a>
<a href="https://www.easywebadv.it/" style="width:100px">
<img src="website/static/img/easyweb.png" width="100"/>
</a>
@@ -203,7 +204,9 @@
<a href="https://github.com/GargantuaX" style="width:45px">
<img src="https://github.com/GargantuaX.png?size=45" width="45"/>
</a>
<a href="https://github.com/brodyover" style="width:45px">
<img src="https://github.com/brodyover.png?size=45" width="45"/>
</a>
<span id="nav-6"></span>
## 安装
Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

+15 -15
View File
@@ -1461,9 +1461,9 @@
"dev": true
},
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true
},
"ansi-styles": {
@@ -2297,9 +2297,9 @@
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"strip-ansi": {
@@ -4385,9 +4385,9 @@
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
"dev": true
},
"mississippi": {
@@ -5605,9 +5605,9 @@
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"strip-ansi": {
@@ -6535,9 +6535,9 @@
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
"integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
"dev": true
},
"ansi-styles": {
+59 -25
View File
@@ -93,6 +93,12 @@ func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
debug := false
command.BoolFlag("debug", "Retains debug data in the compiled application", &debug)
nsis := false
command.BoolFlag("nsis", "Generate NSIS installer for Windows", &nsis)
trimpath := false
command.BoolFlag("trimpath", "Remove all file system paths from the resulting executable", &trimpath)
command.Action(func() error {
quiet := verbosity == 0
@@ -117,20 +123,12 @@ func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
}
// Tags
experimental := false
userTags := []string{}
for _, tag := range strings.Split(tags, " ") {
thisTag := strings.TrimSpace(tag)
if thisTag != "" {
userTags = append(userTags, thisTag)
}
if thisTag == "exp" {
experimental = true
}
}
if runtime.GOOS == "linux" && !experimental {
return fmt.Errorf("Linux version coming soon!")
}
// Webview2 installer strategy (download by default)
@@ -181,6 +179,7 @@ func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
CompressFlags: compressFlags,
UserTags: userTags,
WebView2Strategy: wv2rtstrategy,
TrimPath: trimpath,
}
// Start a new tabwriter
@@ -188,21 +187,24 @@ func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
w.Init(os.Stdout, 8, 8, 0, '\t', 0)
// Write out the system information
fmt.Fprintf(w, "App Type: \t%s\n", buildOptions.OutputType)
fmt.Fprintf(w, "Platforms: \t%s\n", platform)
fmt.Fprintf(w, "Compiler: \t%s\n", compilerPath)
fmt.Fprintf(w, "Build Mode: \t%s\n", modeString)
fmt.Fprintf(w, "Skip Frontend: \t%t\n", skipFrontend)
fmt.Fprintf(w, "Compress: \t%t\n", buildOptions.Compress)
fmt.Fprintf(w, "Package: \t%t\n", buildOptions.Pack)
fmt.Fprintf(w, "Clean Build Dir: \t%t\n", buildOptions.CleanBuildDirectory)
fmt.Fprintf(w, "LDFlags: \t\"%s\"\n", buildOptions.LDFlags)
fmt.Fprintf(w, "Tags: \t[%s]\n", strings.Join(buildOptions.UserTags, ","))
_, _ = fmt.Fprintf(w, "App Type: \t%s\n", buildOptions.OutputType)
_, _ = fmt.Fprintf(w, "Platforms: \t%s\n", platform)
_, _ = fmt.Fprintf(w, "Compiler: \t%s\n", compilerPath)
_, _ = fmt.Fprintf(w, "Build Mode: \t%s\n", modeString)
_, _ = fmt.Fprintf(w, "Skip Frontend: \t%t\n", skipFrontend)
_, _ = fmt.Fprintf(w, "Compress: \t%t\n", buildOptions.Compress)
_, _ = fmt.Fprintf(w, "Package: \t%t\n", buildOptions.Pack)
_, _ = fmt.Fprintf(w, "Clean Build Dir: \t%t\n", buildOptions.CleanBuildDirectory)
_, _ = fmt.Fprintf(w, "LDFlags: \t\"%s\"\n", buildOptions.LDFlags)
_, _ = fmt.Fprintf(w, "Tags: \t[%s]\n", strings.Join(buildOptions.UserTags, ","))
if len(buildOptions.OutputFile) > 0 && targets.Length() == 1 {
fmt.Fprintf(w, "Output File: \t%s\n", buildOptions.OutputFile)
_, _ = fmt.Fprintf(w, "Output File: \t%s\n", buildOptions.OutputFile)
}
_, _ = fmt.Fprintf(w, "\n")
err = w.Flush()
if err != nil {
return err
}
fmt.Fprintf(w, "\n")
w.Flush()
err = checkGoModVersion(logger, updateGoMod)
if err != nil {
@@ -214,6 +216,9 @@ func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
return err
}
projectOptions, err := project.Load(cwd)
if err != nil {
return err
}
// Check platform
validPlatformArch := slicer.String([]string{
@@ -227,9 +232,18 @@ func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
"windows",
"windows/amd64",
"windows/arm64",
"windows/386",
})
outputBinaries := map[string]string{}
// Allows cancelling the build after the first error. It would be nice if targets.Each would support funcs
// returning an error.
var targetErr error
targets.Each(func(platform string) {
if targetErr != nil {
return
}
if !validPlatformArch.Contains(platform) {
buildOptions.Logger.Println("platform '%s' is not supported - skipping. Supported platforms: %s", platform, validPlatformArch.Join(","))
@@ -245,10 +259,9 @@ func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
// Calculate platform and arch
platformSplit := strings.Split(platform, "/")
buildOptions.Platform = platformSplit[0]
buildOptions.Arch = runtime.GOARCH
if system.IsAppleSilicon {
buildOptions.Arch = "arm64"
} else {
buildOptions.Arch = runtime.GOARCH
}
if len(platformSplit) == 2 {
buildOptions.Arch = platformSplit[1]
@@ -296,23 +309,44 @@ func AddBuildSubcommand(app *clir.Cli, w io.Writer) {
}
buildOptions.OutputFile = desiredFilename
if outputFilename != "" {
buildOptions.OutputFile = outputFilename
}
// Start Time
start := time.Now()
outputFilename, err := build.Build(buildOptions)
if err != nil {
logger.Println("Error: ", err.Error())
logger.Println("Error: %s", err.Error())
targetErr = err
return
}
// Subsequent iterations
buildOptions.IgnoreFrontend = true
buildOptions.CleanBuildDirectory = false
// Output stats
buildOptions.Logger.Println(fmt.Sprintf("Built '%s' in %s.\n", outputFilename, time.Since(start).Round(time.Millisecond).String()))
outputBinaries[buildOptions.Platform+"/"+buildOptions.Arch] = outputFilename
})
if targetErr != nil {
return targetErr
}
if nsis {
amd64Binary := outputBinaries["windows/amd64"]
arm64Binary := outputBinaries["windows/arm64"]
if amd64Binary == "" && arm64Binary == "" {
return fmt.Errorf("cannot build nsis installer - no windows targets")
}
if err := build.GenerateNSISInstaller(buildOptions, amd64Binary, arm64Binary); err != nil {
return err
}
}
return nil
})
}
+90 -73
View File
@@ -4,13 +4,15 @@ import (
"context"
"fmt"
"io"
"net"
"net/http"
"net/url"
"os"
"os/exec"
"os/signal"
"path"
"path/filepath"
"runtime"
"strconv"
"strings"
"sync"
"syscall"
@@ -33,8 +35,6 @@ import (
"github.com/wailsapp/wails/v2/pkg/commands/build"
)
const defaultDevServerURL = "http://localhost:34115"
func LogGreen(message string, args ...interface{}) {
text := fmt.Sprintf(message, args...)
println(colour.Green(text))
@@ -66,14 +66,18 @@ type devFlags struct {
reloadDirs string
openBrowser bool
noReload bool
noGen bool
wailsjsdir string
tags string
verbosity int
loglevel string
forceBuild bool
debounceMS int
devServerURL string
devServer string
appargs string
saveConfig bool
frontendDevServerURL string
}
// AddSubcommand adds the `dev` command for the Wails application
@@ -89,34 +93,29 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error {
command.StringFlag("reloaddirs", "Additional directories to trigger reloads (comma separated)", &flags.reloadDirs)
command.BoolFlag("browser", "Open application in browser", &flags.openBrowser)
command.BoolFlag("noreload", "Disable reload on asset change", &flags.noReload)
command.BoolFlag("nogen", "Disable generate module", &flags.noGen)
command.StringFlag("wailsjsdir", "Directory to generate the Wails JS modules", &flags.wailsjsdir)
command.StringFlag("tags", "tags to pass to Go compiler (quoted and space separated)", &flags.tags)
command.IntFlag("v", "Verbosity level (0 - silent, 1 - standard, 2 - verbose)", &flags.verbosity)
command.StringFlag("loglevel", "Loglevel to use - Trace, Debug, Info, Warning, Error", &flags.loglevel)
command.BoolFlag("f", "Force build application", &flags.forceBuild)
command.IntFlag("debounce", "The amount of time to wait to trigger a reload on change", &flags.debounceMS)
command.StringFlag("devserverurl", "The url of the dev server to use", &flags.devServerURL)
command.StringFlag("devserver", "The address of the wails dev server", &flags.devServer)
command.StringFlag("frontenddevserverurl", "The url of the external frontend dev server to use", &flags.frontendDevServerURL)
command.StringFlag("appargs", "arguments to pass to the underlying app (quoted and space searated)", &flags.appargs)
command.BoolFlag("save", "Save given flags as defaults", &flags.saveConfig)
command.Action(func() error {
// Create logger
logger := clilogger.New(w)
app.PrintBanner()
experimental := false
userTags := []string{}
for _, tag := range strings.Split(flags.tags, " ") {
thisTag := strings.TrimSpace(tag)
if thisTag != "" {
userTags = append(userTags, thisTag)
}
if thisTag == "exp" {
experimental = true
}
}
if runtime.GOOS == "linux" && !experimental {
return fmt.Errorf("Linux version coming soon!")
}
cwd, err := os.Getwd()
@@ -129,6 +128,16 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error {
return err
}
devServer := flags.devServer
if _, _, err := net.SplitHostPort(devServer); err != nil {
return fmt.Errorf("DevServer is not of the form 'host:port', please check your wails.json")
}
devServerURL, err := url.Parse("http://" + devServer)
if err != nil {
return err
}
// Update go.mod to use current wails version
err = syncGoModVersion(cwd)
if err != nil {
@@ -136,25 +145,21 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error {
}
// Run go mod tidy to ensure we're up to date
err = runCommand(cwd, false, "go", "mod", "tidy")
err = runCommand(cwd, false, "go", "mod", "tidy", "-compat=1.17")
if err != nil {
return err
}
if flags.tags != "" {
err = runCommand(cwd, true, "wails", "generate", "module", "-tags", flags.tags)
} else {
err = runCommand(cwd, true, "wails", "generate", "module")
}
if err != nil {
return err
}
// frontend:dev server command
if projectConfig.DevCommand != "" {
var devCommandWaitGroup sync.WaitGroup
closer := runFrontendDevCommand(cwd, projectConfig.DevCommand, &devCommandWaitGroup)
defer closer(&devCommandWaitGroup)
if !flags.noGen {
self := os.Args[0]
if flags.tags != "" {
err = runCommand(cwd, true, self, "generate", "module", "-tags", flags.tags)
} else {
err = runCommand(cwd, true, self, "generate", "module")
}
if err != nil {
return err
}
}
buildOptions := generateBuildOptions(flags)
@@ -178,13 +183,16 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error {
debugBinaryProcess = newProcess
}
// frontend:dev:watcher command.
if command := projectConfig.DevWatcherCommand; command != "" {
var devCommandWaitGroup sync.WaitGroup
closer := runFrontendDevWatcherCommand(cwd, command, &devCommandWaitGroup)
defer closer(&devCommandWaitGroup)
}
// open browser
if flags.openBrowser {
url := defaultDevServerURL
if flags.devServerURL != "" {
url = flags.devServerURL
}
err = browser.OpenURL(url)
err = browser.OpenURL(devServerURL.String())
if err != nil {
return err
}
@@ -192,6 +200,10 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error {
// create the project files watcher
watcher, err := initialiseWatcher(cwd, logger.Fatal)
if err != nil {
return err
}
defer func(watcher *fsnotify.Watcher) {
err := watcher.Close()
if err != nil {
@@ -200,11 +212,14 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error {
}(watcher)
LogGreen("Watching (sub)/directory: %s", cwd)
LogGreen("Using Dev Server URL: %s", flags.devServerURL)
LogGreen("Using DevServer URL: %s", devServerURL)
if flags.frontendDevServerURL != "" {
LogGreen("Using Frontend DevServer URL: %s", flags.frontendDevServerURL)
}
LogGreen("Using reload debounce setting of %d milliseconds", flags.debounceMS)
// Watch for changes and trigger restartApp()
doWatcherLoop(buildOptions, debugBinaryProcess, flags, watcher, exitCodeChannel, quitChannel)
doWatcherLoop(buildOptions, debugBinaryProcess, flags, watcher, exitCodeChannel, quitChannel, devServerURL)
// Kill the current program if running
if debugBinaryProcess != nil {
@@ -255,6 +270,7 @@ func runCommand(dir string, exitOnError bool, command string, args ...string) er
output, err := cmd.CombinedOutput()
if err != nil {
println(string(output))
println(err.Error())
if exitOnError {
os.Exit(1)
}
@@ -266,7 +282,6 @@ func runCommand(dir string, exitOnError bool, command string, args ...string) er
// defaultDevFlags generates devFlags with default options
func defaultDevFlags() devFlags {
return devFlags{
devServerURL: defaultDevServerURL,
compilerCommand: "go",
verbosity: 1,
extensions: "go",
@@ -301,15 +316,12 @@ func loadAndMergeProjectConfig(cwd string, flags *devFlags) (*project.Project, e
return nil, err
}
var shouldSaveConfig bool
if flags.assetDir == "" && projectConfig.AssetDirectory != "" {
flags.assetDir = projectConfig.AssetDirectory
}
if flags.assetDir != projectConfig.AssetDirectory {
projectConfig.AssetDirectory = filepath.ToSlash(flags.assetDir)
shouldSaveConfig = true
}
if flags.assetDir != "" {
@@ -325,16 +337,14 @@ func loadAndMergeProjectConfig(cwd string, flags *devFlags) (*project.Project, e
if flags.reloadDirs != projectConfig.ReloadDirectories {
projectConfig.ReloadDirectories = filepath.ToSlash(flags.reloadDirs)
shouldSaveConfig = true
}
if flags.devServerURL == defaultDevServerURL && projectConfig.DevServerURL != defaultDevServerURL && projectConfig.DevServerURL != "" {
flags.devServerURL = projectConfig.DevServerURL
if flags.devServer == "" && projectConfig.DevServer != "" {
flags.devServer = projectConfig.DevServer
}
if flags.devServerURL != projectConfig.DevServerURL {
projectConfig.DevServerURL = flags.devServerURL
shouldSaveConfig = true
if flags.frontendDevServerURL == "" && projectConfig.FrontendDevServerURL != "" {
flags.frontendDevServerURL = projectConfig.FrontendDevServerURL
}
if flags.wailsjsdir == "" && projectConfig.WailsJSDir != "" {
@@ -347,7 +357,6 @@ func loadAndMergeProjectConfig(cwd string, flags *devFlags) (*project.Project, e
if flags.wailsjsdir != projectConfig.WailsJSDir {
projectConfig.WailsJSDir = filepath.ToSlash(flags.wailsjsdir)
shouldSaveConfig = true
}
if flags.debounceMS == 100 && projectConfig.DebounceMS != 100 {
@@ -359,14 +368,13 @@ func loadAndMergeProjectConfig(cwd string, flags *devFlags) (*project.Project, e
if flags.debounceMS != projectConfig.DebounceMS {
projectConfig.DebounceMS = flags.debounceMS
shouldSaveConfig = true
}
if flags.appargs == "" && projectConfig.AppArgs != "" {
flags.appargs = projectConfig.AppArgs
}
if shouldSaveConfig {
if flags.saveConfig {
err = projectConfig.Save()
if err != nil {
return nil, err
@@ -376,9 +384,9 @@ func loadAndMergeProjectConfig(cwd string, flags *devFlags) (*project.Project, e
return projectConfig, nil
}
// runFrontendDevCommand will run the `frontend:dev` command if it was given, ex- `npm run dev`
func runFrontendDevCommand(cwd string, devCommand string, wg *sync.WaitGroup) func(group *sync.WaitGroup) {
LogGreen("Running frontend dev command: '%s'", devCommand)
// runFrontendDevWatcherCommand will run the `frontend:dev:watcher` command if it was given, ex- `npm run dev`
func runFrontendDevWatcherCommand(cwd string, devCommand string, wg *sync.WaitGroup) func(group *sync.WaitGroup) {
LogGreen("Running frontend dev watcher command: '%s'", devCommand)
ctx, cancel := context.WithCancel(context.Background())
dir := filepath.Join(cwd, "frontend")
cmdSlice := strings.Split(devCommand, " ")
@@ -387,6 +395,8 @@ func runFrontendDevCommand(cwd string, devCommand string, wg *sync.WaitGroup) fu
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
cmd.Dir = dir
setParentGID(cmd)
go func(ctx context.Context, devCommand string, cwd string, wg *sync.WaitGroup) {
err := cmd.Run()
if err != nil {
@@ -399,23 +409,9 @@ func runFrontendDevCommand(cwd string, devCommand string, wg *sync.WaitGroup) fu
}(ctx, devCommand, cwd, wg)
return func(wg *sync.WaitGroup) {
if runtime.GOOS == "windows" {
// Credit: https://stackoverflow.com/a/44551450
// For whatever reason, killing an npm script on windows just doesn't exit properly with cancel
if cmd != nil && cmd.Process != nil {
kill := exec.Command("TASKKILL", "/T", "/F", "/PID", strconv.Itoa(cmd.Process.Pid))
kill.Stderr = os.Stderr
kill.Stdout = os.Stdout
err := kill.Run()
if err != nil {
if err.Error() != "exit status 1" {
LogRed("Error from '%s': %s", devCommand, err.Error())
}
}
}
} else {
cancel()
}
killProc(cmd, devCommand)
LogGreen("Dev command killed!")
cancel()
wg.Wait()
}
}
@@ -439,6 +435,10 @@ func initialiseWatcher(cwd string, logFatal func(string, ...interface{})) (*fsno
return
}
// Ignore build directory
if strings.Contains(dir, ".git") {
return
}
// Ignore build directory
if strings.HasPrefix(dir, filepath.Join(cwd, "build")) {
return
}
@@ -486,7 +486,8 @@ func restartApp(buildOptions *build.Options, debugBinaryProcess *process.Process
// Set environment variables accordingly
os.Setenv("loglevel", flags.loglevel)
os.Setenv("assetdir", flags.assetDir)
os.Setenv("devserverurl", flags.devServerURL)
os.Setenv("devserver", flags.devServer)
os.Setenv("frontenddevserverurl", flags.frontendDevServerURL)
// Start up new binary with correct args
newProcess := process.NewProcess(appBinary, args...)
@@ -506,7 +507,7 @@ func restartApp(buildOptions *build.Options, debugBinaryProcess *process.Process
}
// doWatcherLoop is the main watch loop that runs while dev is active
func doWatcherLoop(buildOptions *build.Options, debugBinaryProcess *process.Process, flags devFlags, watcher *fsnotify.Watcher, exitCodeChannel chan int, quitChannel chan os.Signal) {
func doWatcherLoop(buildOptions *build.Options, debugBinaryProcess *process.Process, flags devFlags, watcher *fsnotify.Watcher, exitCodeChannel chan int, quitChannel chan os.Signal, devServerURL *url.URL) {
// Main Loop
var (
err error
@@ -533,6 +534,9 @@ func doWatcherLoop(buildOptions *build.Options, debugBinaryProcess *process.Proc
reload := false
assetDir := ""
changedPaths := map[string]struct{}{}
assetDirURL := joinPath(devServerURL, "/wails/assetdir")
reloadURL := joinPath(devServerURL, "/wails/reload")
for quit == false {
//reload := false
select {
@@ -540,6 +544,8 @@ func doWatcherLoop(buildOptions *build.Options, debugBinaryProcess *process.Proc
if exitCode == 0 {
quit = true
}
case err := <-watcher.Errors:
LogDarkYellow(err.Error())
case item := <-watcher.Events:
// Check for file writes
if item.Op&fsnotify.Write == fsnotify.Write {
@@ -597,14 +603,19 @@ func doWatcherLoop(buildOptions *build.Options, debugBinaryProcess *process.Proc
LogRed("Error during build: %s", err.Error())
continue
}
// If we have a new process, save it
// If we have a new process, saveConfig it
if newBinaryProcess != nil {
debugBinaryProcess = newBinaryProcess
}
}
if flags.frontendDevServerURL != "" {
// If we are using an external dev server all the reload of the frontend part can be skipped
continue
}
if len(changedPaths) != 0 {
if assetDir == "" {
resp, err := http.Get("http://localhost:34115/wails/assetdir")
resp, err := http.Get(assetDirURL)
if err != nil {
LogRed("Error during retrieving assetdir: %s", err.Error())
} else {
@@ -633,7 +644,7 @@ func doWatcherLoop(buildOptions *build.Options, debugBinaryProcess *process.Proc
}
if reload {
reload = false
_, err = http.Get("http://localhost:34115/wails/reload")
_, err = http.Get(reloadURL)
if err != nil {
LogRed("Error during refresh: %s", err.Error())
}
@@ -644,3 +655,9 @@ func doWatcherLoop(buildOptions *build.Options, debugBinaryProcess *process.Proc
}
}
}
func joinPath(url *url.URL, subPath string) string {
u := *url
u.Path = path.Join(u.Path, subPath)
return u.String()
}
@@ -0,0 +1,30 @@
//go:build darwin || linux
// +build darwin linux
package dev
import (
"os/exec"
"syscall"
)
func setParentGID(cmd *exec.Cmd) {
cmd.SysProcAttr = &syscall.SysProcAttr{
Setpgid: true,
}
}
func killProc(cmd *exec.Cmd, devCommand string) {
// Experiencing the same issue on macOS BigSur
// I'm using Vite, but I would imagine this could be an issue with Node (npm) in general
// Also, after several edit/rebuild cycles any abnormal shutdown (crash or CTRL-C) may still leave Node running
// Credit: https://stackoverflow.com/a/29552044/14764450 (same page as the Windows solution above)
// Not tested on *nix
pgid, err := syscall.Getpgid(cmd.Process.Pid)
if err == nil {
err := syscall.Kill(-pgid, 15) // note the minus sign
if err != nil {
LogRed("Error from '%s' when attempting to kill the process: %s", devCommand, err.Error())
}
}
}
@@ -0,0 +1,28 @@
//go:build windows
// +build windows
package dev
import (
"os"
"os/exec"
"strconv"
)
func setParentGID(_ *exec.Cmd) {}
func killProc(cmd *exec.Cmd, devCommand string) {
// Credit: https://stackoverflow.com/a/44551450
// For whatever reason, killing an npm script on windows just doesn't exit properly with cancel
if cmd != nil && cmd.Process != nil {
kill := exec.Command("TASKKILL", "/T", "/F", "/PID", strconv.Itoa(cmd.Process.Pid))
kill.Stderr = os.Stderr
kill.Stdout = os.Stdout
err := kill.Run()
if err != nil {
if err.Error() != "exit status 1" {
LogRed("Error from '%s': %s", devCommand, err.Error())
}
}
}
}
@@ -53,6 +53,14 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error {
fmt.Fprintf(w, "%s\t%s\n", "Platform:", runtime.GOOS)
fmt.Fprintf(w, "%s\t%s\n", "Architecture:", runtime.GOARCH)
// Write out the wails information
fmt.Fprintf(w, "\n")
fmt.Fprintf(w, "Wails\n")
fmt.Fprintf(w, "------\n")
fmt.Fprintf(w, "%s\t%s\n", "Version: ", app.Version())
printBuildSettings(w)
// Exit early if PM not found
if info.PM != nil {
fmt.Fprintf(w, "%s\t%s\n", "Package Manager: ", info.PM.Name())
@@ -133,21 +141,11 @@ func AddSubcommand(app *clir.Cli, w io.Writer) error {
if dependenciesAvailableOptional != 0 {
logger.Println("Optional package(s) installation details: \n" + info.Dependencies.InstallAllOptionalCommand())
}
//
//if len(externalPackages) > 0 {
// for _, p := range externalPackages {
// if p.Optional {
// print("[Optional] ")
// }
// logger.Println("Install " + p.Name + ": " + p.InstallCommand)
// }
//}
if len(dependenciesMissing) != 0 {
// TODO: Check if apps are available locally and if so, adjust the diagnosis
logger.Println("Fatal:")
logger.Println("Required dependencies missing: " + strings.Join(dependenciesMissing, " "))
logger.Println("Please read this article on how to resolve this: https://wails.app/guides/resolving-missing-packages")
logger.Println("Please read this article on how to resolve this: https://wails.io/guides/resolving-missing-packages")
}
logger.Println("")
@@ -0,0 +1,10 @@
//go:build !go1.18
// +build !go1.18
package doctor
import "text/tabwriter"
func printBuildSettings(_ *tabwriter.Writer) {
return
}
@@ -0,0 +1,27 @@
//go:build go1.18
// +build go1.18
package doctor
import (
"fmt"
"runtime/debug"
"text/tabwriter"
)
func printBuildSettings(w *tabwriter.Writer) {
if buildInfo, _ := debug.ReadBuildInfo(); buildInfo != nil {
buildSettingToName := map[string]string{
"vcs.revision": "Revision",
"vcs.modified": "Modified",
}
for _, buildSetting := range buildInfo.Settings {
name := buildSettingToName[buildSetting.Key]
if name == "" {
continue
}
fmt.Fprintf(w, "%s:\t%s\n", name, buildSetting.Value)
}
}
}
@@ -2,14 +2,15 @@ package generate
import (
"fmt"
"github.com/leaanthony/clir"
"github.com/wailsapp/wails/v2/cmd/wails/internal"
"github.com/wailsapp/wails/v2/internal/shell"
"io"
"os"
"path/filepath"
"runtime"
"strings"
"github.com/leaanthony/clir"
"github.com/wailsapp/wails/v2/cmd/wails/internal"
"github.com/wailsapp/wails/v2/internal/shell"
)
// AddModuleCommand adds the `module` subcommand for the `generate` command
@@ -43,6 +44,8 @@ func AddModuleCommand(app *clir.Cli, parent *clir.Command, w io.Writer) error {
}
stdout, stderr, err = shell.RunCommand(cwd, filename)
println(stdout)
println(stderr)
if err != nil {
return fmt.Errorf("%s\n%s\n%s", stdout, stderr, err)
}

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