v3.0.0-alpha.4

This commit is contained in:
Lea Anthony 2024-02-01 21:09:03 +11:00
commit 1ec3b4ecab
No known key found for this signature in database
GPG key ID: 33DAF7BB90A58405
8 changed files with 109 additions and 26 deletions

View file

@ -0,0 +1,58 @@
# Runtime
The Wails runtime is the standard library for Wails applications. It provides a number of features that may
be used in your applications, including:
- Window management
- Dialogs
- Browser integration
- Clipboard
- Frameless dragging
- Tray icons
- Menu management
- System information
- Events
- Calling Go code
- Context Menus
- Screens
- WML (Wails Markup Language)
The runtime is required for integration between Go and the frontend. There are 2 ways to integrate the runtime:
- Using the `@wailsio/runtime` package
- Using a pre-built version of the runtime
## Using the `@wailsio/runtime` package
The `@wailsio/runtime` package is a JavaScript package that provides access to the Wails runtime. It is used in by all
the standard templates and is the recommended way to integrate the runtime into your application. By using the package,
you will only include the parts of the runtime that you use.
The package is available on npm and can be installed using:
```shell
npm install --save @wailsio/runtime
```
## Using a pre-built version of the runtime
Some projects will not use a Javascript bundler and may prefer to use a pre-built version of the runtime. This is
the default for the examples in `v3/examples`. The pre-built version of the runtime can be generated using the
following command:
```shell
wails3 generate runtime
```
This will generate a `runtime.js` (and `runtime.debug.js`) file in the `frontend` directory of your project.
This file can be included in your assets directory and used in your application by adding it to your assets
directory (normally `frontend/dist`) and then including it in your HTML:
```html
<html>
<head>
<script src="/runtime.js"></script>
</head>
<!--- ... -->
</>
```

View file

@ -10,7 +10,23 @@ we are aiming to achieve. These are subject to change.
## Alpha milestones
### Current: Alpha 4
### Current: Alpha 5
#### Goals
- [ ] Get Linux to Alpha 4 parity
- [ ] Keyboard shortcuts
- Window Level shortcuts
- Application Level shortcuts (applies to all windows)
- Ensure Keydown/Keyup events are sent to JS if not handled by Go
## Upcoming milestones
## Alpha 6
## Previous milestones
### Alpha 4 - Completed 2024-02-01
#### Goals
@ -135,24 +151,6 @@ Examples:
- [ ] All examples working on Linux
## Upcoming milestones
### Alpha 4
#### Goals
### Alpha 5
#### Goals
- [ ] Keyboard shortcuts
- Window Level shortcuts
- Application Level shortcuts (applies to all windows)
- Ensure Keydown/Keyup events are sent to JS if not handled by Go
## Previous milestones
### Alpha 2
#### Goals

View file

@ -150,6 +150,8 @@ nav:
# - Links: community/links.md
- Your First Application: getting-started/your-first-app.md
- Next Steps: getting-started/next-steps.md
- Learn More:
- Runtime: getting-started/learn.md
- Feedback: getting-started/feedback.md
- Feedback: getting-started/feedback.md
- What's New in v3?: whats-new.md

View file

@ -1,5 +1,9 @@
Scenario,Windows,Mac,Linux
Same package,:material-check-bold:,:material-check-bold:,:material-check-bold:
Same package,: clipboardLock.RLock()
defer clipboardLock.RUnlock()
clipboardText := C.getClipboardText()
result := C.GoString(clipboardText)
return result, true:,:material-check-bold:,:material-check-bold:
Different package,:material-check-bold:,:material-check-bold:,:material-check-bold:
Different package with same name,"on hold","on hold","on hold"
Containing another struct from same package,:material-check-bold:,:material-check-bold:,:material-check-bold:

Can't render this file because it has a wrong number of fields in line 2.

View file

@ -1,5 +1,4 @@
" ",Mac,Windows,Linux
Standard Executable," "," "," "
macOS Application Bundle," ",:material-cancel:,:material-cancel:
NSIS," "," "," "
macOS DMG," ",:material-cancel:,:material-cancel:
Standard Executable,:material-check-bold:,:material-check-bold:,:material-check-bold:
macOS Application Bundle,:material-check-bold:,:material-cancel:,:material-cancel:
NSIS,:material-cancel:,:material-check-bold:,:material-cancel:

1 Mac Windows Linux
2 Standard Executable :material-check-bold: :material-check-bold: :material-check-bold:
3 macOS Application Bundle :material-check-bold: :material-cancel: :material-cancel:
4 NSIS :material-cancel: :material-check-bold: :material-cancel:
macOS DMG :material-cancel: :material-cancel:

View file

@ -46,6 +46,7 @@ func main() {
generate.NewSubCommandFunction("constants", "Generate JS constants from Go", commands.GenerateConstants)
generate.NewSubCommandFunction(".desktop", "Generate .desktop file", commands.GenerateDotDesktop)
generate.NewSubCommandFunction("appimage", "Generate Linux AppImage", commands.GenerateAppImage)
generate.NewSubCommandFunction("runtime", "Generate the latest compiled runtime", commands.GenerateRuntime)
plugin := app.NewSubCommand("plugin", "Plugin tools")
//plugin.NewSubCommandFunction("list", "List plugins", commands.PluginList)

View file

@ -3,7 +3,7 @@ package runtime
import _ "embed"
//go:embed runtime.js
var runtimeJS []byte
var RuntimeJS []byte
//go:embed runtime.debug.js
var runtimeDebugJS []byte
var RuntimeDebugJS []byte

View file

@ -0,0 +1,21 @@
package commands
import (
"github.com/wailsapp/wails/v3/internal/commands/build_assets/runtime"
"os"
)
type GenerateRuntimeOptions struct {
}
func GenerateRuntime(options *GenerateRuntimeOptions) error {
err := os.WriteFile("runtime.js", runtime.RuntimeJS, 0644)
if err != nil {
return err
}
err = os.WriteFile("runtime.debug.js", runtime.RuntimeDebugJS, 0644)
if err != nil {
return err
}
return nil
}