mirror of
https://github.com/wavetermdev/wails.git
synced 2026-04-22 15:26:15 -07:00
Compare commits
76 Commits
v2.5.1
...
v3/website
| Author | SHA1 | Date | |
|---|---|---|---|
| 7670273d43 | |||
| a15c0a5441 | |||
| 19be7f61ac | |||
| bbf0e8cdad | |||
| 7e2d2a29a1 | |||
| 671dc2aa3a | |||
| 294a2c701e | |||
| 01f03c552d | |||
| dc46154d94 | |||
| 87737c23eb | |||
| 6e6f099a99 | |||
| 4cb3321c39 | |||
| 6a2343a1a0 | |||
| f2d6dba2cf | |||
| dd1ef7fae9 | |||
| 527cff9ec3 | |||
| ba150eccae | |||
| fa74986f1e | |||
| d1085b5bea | |||
| 4d0a14d2eb | |||
| 8c3439b733 | |||
| a0534d527a | |||
| a5b52f2795 | |||
| b526ebd679 | |||
| 51b9315ae9 | |||
| 8edf44dc31 | |||
| 9b7626e59e | |||
| 6dd092c7a9 | |||
| 46a0d467c0 | |||
| e3b164ae93 | |||
| d8f58ab20f | |||
| 0de2bccd28 | |||
| 2eaf724710 | |||
| 58138ac09b | |||
| 143f090422 | |||
| f8f466ba7e | |||
| cb28de47f8 | |||
| 4ad2475ed6 | |||
| 0172078536 | |||
| 0bb1fb512a | |||
| b6940d95a2 | |||
| 75f0457375 | |||
| ffe31b6265 | |||
| 8963610722 | |||
| 66bfcf0e36 | |||
| 0b3559abfe | |||
| 773389ee5e | |||
| 4c04991d4d | |||
| d56bb59b72 | |||
| 6e92a4f71e | |||
| 1f6217c0d8 | |||
| 17204bebd0 | |||
| 728e2019d8 | |||
| 7f3fdd6977 | |||
| e8798f8371 | |||
| 402b743553 | |||
| f08ae2fc62 | |||
| 178ea9c8c5 | |||
| 7c63cee9e8 | |||
| 4a60dfc373 | |||
| 829a829cb4 | |||
| 34896ccb4e | |||
| 5df5eb6a04 | |||
| 31ba36baf3 | |||
| bf10f71760 | |||
| 8aa61fff6d | |||
| d3a4d89786 | |||
| 84919468ba | |||
| bd5b7e5e3f | |||
| 4f3dc1b0e1 | |||
| 65c68301a0 | |||
| 37e43dabc0 | |||
| ec19458c1b | |||
| 35eb1e0160 | |||
| 12a9ff17d6 | |||
| a7116ff5e7 |
@@ -0,0 +1,37 @@
|
||||
name: Format Markdown Files
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches: [master]
|
||||
|
||||
jobs:
|
||||
format_markdown_files:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'wailsapp/wails'
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Nodejs
|
||||
uses: actions/setup-node@v2
|
||||
with:
|
||||
node-version: 18.x
|
||||
|
||||
- name: Install Task
|
||||
uses: arduino/setup-task@v1
|
||||
with:
|
||||
version: 3.x
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Format All Markdown Files
|
||||
run: task format-all-md
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
with:
|
||||
commit-message: "docs: format document"
|
||||
title: "docs: format document"
|
||||
body: "- [x] Format all Markdown(x) documents"
|
||||
branch: chore/format-markdown-files
|
||||
delete-branch: true
|
||||
draft: false
|
||||
@@ -2,6 +2,8 @@ name: Sync Translations
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
jobs:
|
||||
sync-translated-documents:
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
website
|
||||
v2
|
||||
v3
|
||||
@@ -0,0 +1,6 @@
|
||||
overrides:
|
||||
- files:
|
||||
- "**/*.md"
|
||||
options:
|
||||
printWidth: 80
|
||||
proseWrap: always
|
||||
+28
-5
@@ -2,8 +2,19 @@
|
||||
|
||||
version: "3"
|
||||
|
||||
vars:
|
||||
GREETING: Hello, World!
|
||||
includes:
|
||||
website:
|
||||
taskfile: website
|
||||
dir: website
|
||||
|
||||
v2:
|
||||
taskfile: v2
|
||||
dir: v2
|
||||
optional: true
|
||||
v3:
|
||||
taskfile: v3
|
||||
dir: v3
|
||||
optional: true
|
||||
|
||||
tasks:
|
||||
contributors:check:
|
||||
@@ -18,7 +29,19 @@ tasks:
|
||||
cmds:
|
||||
- npx -y all-contributors-cli generate
|
||||
|
||||
release:
|
||||
dir: v2/tools/release
|
||||
format:md:
|
||||
cmds:
|
||||
- go run release.go {{.CLI_ARGS}}
|
||||
- npx prettier --write "**/*.md"
|
||||
|
||||
format:
|
||||
cmds:
|
||||
- task: format:md
|
||||
|
||||
format-all-md:
|
||||
cmds:
|
||||
- task: format:md
|
||||
- task: website:format:md
|
||||
- task: v2:format:md
|
||||
# - task: v2:website:format
|
||||
- task: v3:format:md
|
||||
# - task: v3:website:format:md
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
website
|
||||
@@ -0,0 +1,6 @@
|
||||
overrides:
|
||||
- files:
|
||||
- "**/*.md"
|
||||
options:
|
||||
printWidth: 80
|
||||
proseWrap: always
|
||||
@@ -0,0 +1,17 @@
|
||||
# https://taskfile.dev
|
||||
|
||||
version: "3"
|
||||
|
||||
tasks:
|
||||
release:
|
||||
dir: tools/release
|
||||
cmds:
|
||||
- go run release.go {{.CLI_ARGS}}
|
||||
|
||||
format:md:
|
||||
cmds:
|
||||
- npx prettier --write "**/*.md"
|
||||
|
||||
format:
|
||||
cmds:
|
||||
- task: format:md
|
||||
+49
-39
@@ -14,43 +14,33 @@ import (
|
||||
)
|
||||
|
||||
func diagnoseEnvironment(f *flags.Doctor) error {
|
||||
|
||||
if f.NoColour {
|
||||
pterm.DisableColor()
|
||||
colour.ColourEnabled = false
|
||||
}
|
||||
|
||||
app.PrintBanner()
|
||||
pterm.DefaultSection = *pterm.DefaultSection.
|
||||
WithBottomPadding(0).
|
||||
WithStyle(pterm.NewStyle(pterm.FgBlue, pterm.Bold))
|
||||
|
||||
spinner, _ := pterm.DefaultSpinner.Start("Scanning system - Please wait (this may take a long time)...")
|
||||
pterm.Println() // Spacer
|
||||
pterm.DefaultHeader.WithBackgroundStyle(pterm.NewStyle(pterm.BgLightBlue)).WithMargin(10).Println("Wails Doctor")
|
||||
pterm.Println() // Spacer
|
||||
|
||||
spinner, _ := pterm.DefaultSpinner.WithRemoveWhenDone().Start("Scanning system - Please wait (this may take a long time)...")
|
||||
|
||||
// Get system info
|
||||
info, err := system.GetInfo()
|
||||
if err != nil {
|
||||
spinner.Fail("Failed.")
|
||||
return err
|
||||
}
|
||||
spinner.Success("Done.")
|
||||
|
||||
pterm.DefaultSection.Println("System")
|
||||
|
||||
systemTabledata := [][]string{
|
||||
{"OS", info.OS.Name},
|
||||
{"Version", info.OS.Version},
|
||||
{"ID", info.OS.ID},
|
||||
{"Go Version", runtime.Version()},
|
||||
{"Platform", runtime.GOOS},
|
||||
{"Architecture", runtime.GOARCH},
|
||||
}
|
||||
|
||||
err = pterm.DefaultTable.WithData(systemTabledata).Render()
|
||||
if err != nil {
|
||||
spinner.Fail()
|
||||
pterm.Error.Println("Failed to get system information")
|
||||
return err
|
||||
}
|
||||
spinner.Success()
|
||||
|
||||
pterm.DefaultSection.Println("Wails")
|
||||
|
||||
wailsTableData := [][]string{
|
||||
wailsTableData := pterm.TableData{
|
||||
{"Version", app.Version()},
|
||||
}
|
||||
|
||||
@@ -78,41 +68,57 @@ func diagnoseEnvironment(f *flags.Doctor) error {
|
||||
return err
|
||||
}
|
||||
|
||||
pterm.DefaultSection.Println("System")
|
||||
|
||||
systemTabledata := pterm.TableData{
|
||||
{pterm.Bold.Sprint("OS"), info.OS.Name},
|
||||
{pterm.Bold.Sprint("Version"), info.OS.Version},
|
||||
{pterm.Bold.Sprint("ID"), info.OS.ID},
|
||||
{pterm.Bold.Sprint("Go Version"), runtime.Version()},
|
||||
{pterm.Bold.Sprint("Platform"), runtime.GOOS},
|
||||
{pterm.Bold.Sprint("Architecture"), runtime.GOARCH},
|
||||
}
|
||||
|
||||
err = pterm.DefaultTable.WithBoxed().WithData(systemTabledata).Render()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
pterm.DefaultSection.Println("Dependencies")
|
||||
|
||||
// Output Dependencies Status
|
||||
var dependenciesMissing = []string{}
|
||||
var externalPackages = []*packagemanager.Dependency{}
|
||||
var dependenciesMissing []string
|
||||
var externalPackages []*packagemanager.Dependency
|
||||
var dependenciesAvailableRequired = 0
|
||||
var dependenciesAvailableOptional = 0
|
||||
|
||||
dependenciesTableData := [][]string{
|
||||
dependenciesTableData := pterm.TableData{
|
||||
{"Dependency", "Package Name", "Status", "Version"},
|
||||
}
|
||||
|
||||
hasOptionalDependencies := false
|
||||
// Loop over dependencies
|
||||
for _, dependency := range info.Dependencies {
|
||||
|
||||
name := dependency.Name
|
||||
|
||||
if dependency.Optional {
|
||||
name = "*" + name
|
||||
name = pterm.Gray("*") + name
|
||||
hasOptionalDependencies = true
|
||||
}
|
||||
|
||||
packageName := "Unknown"
|
||||
status := "Not Found"
|
||||
status := pterm.LightRed("Not Found")
|
||||
|
||||
// If we found the package
|
||||
if dependency.PackageName != "" {
|
||||
|
||||
packageName = dependency.PackageName
|
||||
|
||||
// If it's installed, update the status
|
||||
if dependency.Installed {
|
||||
status = "Installed"
|
||||
status = pterm.LightGreen("Installed")
|
||||
} else {
|
||||
// Generate meaningful status text
|
||||
status = "Available"
|
||||
status = pterm.LightMagenta("Available")
|
||||
|
||||
if dependency.Optional {
|
||||
dependenciesAvailableOptional++
|
||||
@@ -133,22 +139,19 @@ func diagnoseEnvironment(f *flags.Doctor) error {
|
||||
dependenciesTableData = append(dependenciesTableData, []string{name, packageName, status, dependency.Version})
|
||||
}
|
||||
|
||||
err = pterm.DefaultTable.WithHasHeader(true).WithData(dependenciesTableData).Render()
|
||||
dependenciesTableString, _ := pterm.DefaultTable.WithHasHeader(true).WithData(dependenciesTableData).Srender()
|
||||
dependenciesBox := pterm.DefaultBox.WithTitleBottomCenter()
|
||||
|
||||
if hasOptionalDependencies {
|
||||
pterm.Println("* - Optional Dependency")
|
||||
dependenciesBox = dependenciesBox.WithTitle(pterm.Gray("*") + " - Optional Dependency")
|
||||
}
|
||||
|
||||
dependenciesBox.Println(dependenciesTableString)
|
||||
|
||||
pterm.DefaultSection.Println("Diagnosis")
|
||||
|
||||
// Generate an appropriate diagnosis
|
||||
|
||||
if len(dependenciesMissing) == 0 && dependenciesAvailableRequired == 0 {
|
||||
pterm.Println("Your system is ready for Wails development!")
|
||||
} else {
|
||||
pterm.Println("Your system has missing dependencies!")
|
||||
}
|
||||
|
||||
if dependenciesAvailableRequired != 0 {
|
||||
pterm.Println("Required package(s) installation details: \n" + info.Dependencies.InstallAllRequiredCommand())
|
||||
}
|
||||
@@ -157,11 +160,18 @@ func diagnoseEnvironment(f *flags.Doctor) error {
|
||||
pterm.Println("Optional package(s) installation details: \n" + info.Dependencies.InstallAllOptionalCommand())
|
||||
}
|
||||
|
||||
if len(dependenciesMissing) == 0 && dependenciesAvailableRequired == 0 {
|
||||
pterm.Success.Println("Your system is ready for Wails development!")
|
||||
} else {
|
||||
pterm.Warning.Println("Your system has missing dependencies!")
|
||||
}
|
||||
|
||||
if len(dependenciesMissing) != 0 {
|
||||
pterm.Println("Fatal:")
|
||||
pterm.Println("Required dependencies missing: " + strings.Join(dependenciesMissing, " "))
|
||||
pterm.Println("Please read this article on how to resolve this: https://wails.io/guides/resolving-missing-packages")
|
||||
}
|
||||
|
||||
pterm.Println() // Spacer for sponsor message
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -81,7 +81,8 @@ func parseKey(key string) C.guint {
|
||||
return result
|
||||
}
|
||||
// Check for unknown namedkeys
|
||||
if len(key) > 1 {
|
||||
// Check if we only have a single character
|
||||
if len(key) != 1 {
|
||||
return C.guint(0)
|
||||
}
|
||||
keyval := rune(key[0])
|
||||
|
||||
@@ -2,13 +2,14 @@ package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/samber/lo"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/samber/lo"
|
||||
|
||||
"github.com/wailsapp/wails/v2/internal/s"
|
||||
)
|
||||
|
||||
@@ -86,7 +87,7 @@ func main() {
|
||||
// Get today's date in YYYY-MM-DD format
|
||||
today := time.Now().Format("2006-01-02")
|
||||
// Add the new version to the top of the changelog
|
||||
newChangelog := changelogSplit[0] + "## [Unreleased]\n\n## [" + newVersion + "] - " + today + changelogSplit[1]
|
||||
newChangelog := changelogSplit[0] + "## [Unreleased]\n\n## " + newVersion + " - " + today + changelogSplit[1]
|
||||
// Write the changelog back
|
||||
err = os.WriteFile("src/pages/changelog.mdx", []byte(newChangelog), 0755)
|
||||
checkError(err)
|
||||
|
||||
@@ -6,3 +6,4 @@ cmd/wails/wails
|
||||
/examples/menu/menu
|
||||
/examples/clipboard/clipboard
|
||||
/examples/plain/plain
|
||||
/website/venv/
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
website
|
||||
@@ -0,0 +1,6 @@
|
||||
overrides:
|
||||
- files:
|
||||
- "**/*.md"
|
||||
options:
|
||||
printWidth: 80
|
||||
proseWrap: always
|
||||
+315
@@ -0,0 +1,315 @@
|
||||
# Status
|
||||
|
||||
Status of features in v3. Incomplete - please add as you see fit.
|
||||
|
||||
## Application
|
||||
|
||||
Application interface methods
|
||||
|
||||
| Method | Windows | Linux | Mac | Notes |
|
||||
|---------------------------------------------------------------|---------|-------|-----|-------|
|
||||
| run() error | | | Y | |
|
||||
| destroy() | | | Y | |
|
||||
| setApplicationMenu(menu *Menu) | | | Y | |
|
||||
| name() string | | | Y | |
|
||||
| getCurrentWindowID() uint | | | Y | |
|
||||
| showAboutDialog(name string, description string, icon []byte) | | | Y | |
|
||||
| setIcon(icon []byte) | | | Y | |
|
||||
| on(id uint) | | | Y | |
|
||||
| dispatchOnMainThread(fn func()) | Y | | Y | |
|
||||
| hide() | Y | | Y | |
|
||||
| show() | Y | | Y | |
|
||||
| getPrimaryScreen() (*Screen, error) | | | Y | |
|
||||
| getScreens() ([]*Screen, error) | | | Y | |
|
||||
|
||||
## Webview Window
|
||||
|
||||
Webview Window Interface Methods
|
||||
|
||||
| Method | Windows | Linux | Mac | Notes |
|
||||
|----------------------------------------------------|---------|-------|-----|------------------------------------------|
|
||||
| center() | Y | | Y | |
|
||||
| close() | | | Y | |
|
||||
| destroy() | | | Y | |
|
||||
| execJS(js string) | | | Y | |
|
||||
| focus() | Y | | Y | |
|
||||
| forceReload() | | | Y | |
|
||||
| fullscreen() | Y | | Y | |
|
||||
| getScreen() (*Screen, error) | | | Y | |
|
||||
| getZoom() float64 | | | Y | |
|
||||
| height() int | Y | | Y | |
|
||||
| hide() | Y | | Y | |
|
||||
| isFullscreen() bool | Y | | Y | |
|
||||
| isMaximised() bool | Y | | Y | |
|
||||
| isMinimised() bool | Y | | Y | |
|
||||
| maximise() | Y | | Y | |
|
||||
| minimise() | Y | | Y | |
|
||||
| nativeWindowHandle() (uintptr, error) | Y | | Y | |
|
||||
| on(eventID uint) | | | Y | |
|
||||
| openContextMenu(menu *Menu, data *ContextMenuData) | | | Y | |
|
||||
| position() (int, int) | Y | | Y | |
|
||||
| reload() | | | Y | |
|
||||
| run() | Y | | Y | |
|
||||
| setAlwaysOnTop(alwaysOnTop bool) | Y | | Y | |
|
||||
| setBackgroundColour(color RGBA) | Y | | Y | |
|
||||
| setFrameless(bool) | | | Y | |
|
||||
| setFullscreenButtonEnabled(enabled bool) | - | | Y | There is no fullscreen button in Windows |
|
||||
| setHTML(html string) | | | Y | |
|
||||
| setMaxSize(width, height int) | Y | | Y | |
|
||||
| setMinSize(width, height int) | Y | | Y | |
|
||||
| setPosition(x int, y int) | Y | | Y | |
|
||||
| setResizable(resizable bool) | Y | | Y | |
|
||||
| setSize(width, height int) | Y | | Y | |
|
||||
| setTitle(title string) | Y | | Y | |
|
||||
| setURL(url string) | | | Y | |
|
||||
| setZoom(zoom float64) | | | Y | |
|
||||
| show() | Y | | Y | |
|
||||
| size() (int, int) | Y | | Y | |
|
||||
| toggleDevTools() | | | Y | |
|
||||
| unfullscreen() | Y | | Y | |
|
||||
| unmaximise() | Y | | Y | |
|
||||
| unminimise() | Y | | Y | |
|
||||
| width() int | Y | | Y | |
|
||||
| zoom() | | | Y | |
|
||||
| zoomIn() | | | Y | |
|
||||
| zoomOut() | | | Y | |
|
||||
| zoomReset() | | | Y | |
|
||||
|
||||
## Runtime
|
||||
|
||||
### Application
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|---------|---------|-------|-----|-------|
|
||||
| Quit | | | Y | |
|
||||
| Hide | Y | | Y | |
|
||||
| Show | Y | | Y | |
|
||||
|
||||
### Dialogs
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|----------|---------|-------|-----|-------|
|
||||
| Info | Y | | Y | |
|
||||
| Warning | Y | | Y | |
|
||||
| Error | Y | | Y | |
|
||||
| Question | Y | | Y | |
|
||||
| OpenFile | Y | | Y | |
|
||||
| SaveFile | Y | | Y | |
|
||||
|
||||
### Clipboard
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|---------|---------|-------|-----|-------|
|
||||
| SetText | | | Y | |
|
||||
| Text | | | Y | |
|
||||
|
||||
### ContextMenu
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|-----------------|---------|-------|-----|-------|
|
||||
| OpenContextMenu | | | Y | |
|
||||
|
||||
### Screens
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|------------|---------|-------|-----|-------|
|
||||
| GetAll | Y | | Y | |
|
||||
| GetPrimary | | | Y | |
|
||||
| GetCurrent | | | Y | |
|
||||
|
||||
### Window
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|---------------------|---------|-------|-----|--------------------------------------------------------------------------------------|
|
||||
| SetTitle | Y | | Y | |
|
||||
| SetSize | Y | | Y | |
|
||||
| Size | Y | | Y | |
|
||||
| SetPosition | Y | | Y | |
|
||||
| Position | Y | | Y | |
|
||||
| Focus | Y | | Y | |
|
||||
| FullScreen | Y | | Y | |
|
||||
| UnFullscreen | Y | | Y | |
|
||||
| Minimise | Y | | Y | |
|
||||
| UnMinimise | Y | | Y | |
|
||||
| Maximise | Y | | Y | |
|
||||
| UnMaximise | Y | | Y | |
|
||||
| Show | Y | | Y | |
|
||||
| Hide | Y | | Y | |
|
||||
| Center | Y | | Y | |
|
||||
| SetBackgroundColour | Y | | Y | https://github.com/MicrosoftEdge/WebView2Feedback/issues/1621#issuecomment-938234294 |
|
||||
| SetAlwaysOnTop | Y | | Y | |
|
||||
| SetResizable | Y | | Y | |
|
||||
| SetMinSize | Y | | Y | |
|
||||
| SetMaxSize | Y | | Y | |
|
||||
| Width | Y | | Y | |
|
||||
| Height | Y | | Y | |
|
||||
| ZoomIn | | | Y | Increase view scale |
|
||||
| ZoomOut | | | Y | Decrease view scale |
|
||||
| ZoomReset | | | Y | Reset view scale |
|
||||
| GetZoom | | | Y | Get current view scale |
|
||||
| SetZoom | | | Y | Set view scale |
|
||||
| Screen | | | Y | Get screen for window |
|
||||
|
||||
### Window Options
|
||||
|
||||
A 'Y' in the table below indicates that the option has been tested and is applied when the window is created.
|
||||
An 'X' indicates that the option is not supported by the platform.
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|---------------------------------|---------|-------|-----|--------------------------------------------|
|
||||
| Name | Y | | | |
|
||||
| Title | Y | | | |
|
||||
| Width | Y | | | |
|
||||
| Height | Y | | | |
|
||||
| AlwaysOnTop | Y | | | |
|
||||
| URL | | | | |
|
||||
| DisableResize | Y | | | |
|
||||
| Frameless | Y | | | |
|
||||
| MinWidth | Y | | | |
|
||||
| MinHeight | Y | | | |
|
||||
| MaxWidth | Y | | | |
|
||||
| MaxHeight | Y | | | |
|
||||
| StartState | Y | | | |
|
||||
| Mac | - | - | | |
|
||||
| BackgroundType | | | | Acrylic seems to work but the others don't |
|
||||
| BackgroundColour | Y | | | |
|
||||
| HTML | | | | |
|
||||
| JS | | | | |
|
||||
| CSS | | | | |
|
||||
| X | Y | | | |
|
||||
| Y | Y | | | |
|
||||
| HideOnClose | Y | | | |
|
||||
| FullscreenButtonEnabled | Y | | | |
|
||||
| Hidden | Y | | | |
|
||||
| EnableFraudulentWebsiteWarnings | | | | |
|
||||
| Zoom | | | | |
|
||||
| ZoomControlEnabled | | | | |
|
||||
| OpenInspectorOnStartup | | | | |
|
||||
| EnableDragAndDrop | | | | |
|
||||
| Windows | Y | - | - | |
|
||||
| Focused | Y | | | |
|
||||
|
||||
### Log
|
||||
|
||||
To log or not to log? System logger vs custom logger.
|
||||
|
||||
## Menu
|
||||
|
||||
| Event | Windows | Linux | Mac | Notes |
|
||||
|--------------------------|---------|-------|-----|-------|
|
||||
| Default Application Menu | | | Y | |
|
||||
|
||||
## Tray Menus
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|--------------------|---------|-------|-----|----------------------------------------------------------------------|
|
||||
| Icon | Y | | Y | Windows has default icons for light/dark mode & supports PNG or ICO. |
|
||||
| Label | - | | Y | |
|
||||
| Label (ANSI Codes) | - | | | |
|
||||
| Menu | Y | | Y | |
|
||||
|
||||
## Cross Platform Events
|
||||
|
||||
Mapping native events to cross-platform events.
|
||||
|
||||
| Event | Windows | Linux | Mac | Notes |
|
||||
|--------------------------|---------|-------|-----------------|-------|
|
||||
| WindowWillClose | | | WindowWillClose | |
|
||||
| WindowDidClose | | | | |
|
||||
| WindowDidResize | | | | |
|
||||
| WindowDidHide | | | | |
|
||||
| ApplicationWillTerminate | | | | |
|
||||
|
||||
... Add more
|
||||
|
||||
## Bindings Generation
|
||||
|
||||
TBD
|
||||
|
||||
## Models Generation
|
||||
|
||||
TBD
|
||||
|
||||
## Task file
|
||||
|
||||
TBD
|
||||
|
||||
## Theme
|
||||
|
||||
| Mode | Windows | Linux | Mac | Notes |
|
||||
|--------|---------|-------|-----|-------|
|
||||
| Dark | Y | | | |
|
||||
| Light | Y | | | |
|
||||
| System | Y | | | |
|
||||
|
||||
## NSIS Installer
|
||||
|
||||
TBD
|
||||
|
||||
## Templates
|
||||
|
||||
TBD
|
||||
|
||||
## Plugins
|
||||
|
||||
Built-in plugin support:
|
||||
|
||||
| Plugin | Windows | Linux | Mac | Notes |
|
||||
|-----------------|---------|-------|-----|-------|
|
||||
| Browser | | | Y | |
|
||||
| KV Store | | | Y | |
|
||||
| Log | | | Y | |
|
||||
| Single Instance | | | Y | |
|
||||
| SQLite | | | Y | |
|
||||
| Start at login | | | Y | |
|
||||
| Server | | | | |
|
||||
|
||||
## Packaging
|
||||
|
||||
| | Windows | Linux | Mac | Notes |
|
||||
|-----------------|---------|-------|-----|-------|
|
||||
| Icon Generation | | | Y | |
|
||||
| Icon Embedding | | | Y | |
|
||||
| Info.plist | - | | Y | |
|
||||
| NSIS Installer | | | - | |
|
||||
| Mac bundle | | | Y | |
|
||||
| Windows exe | | | - | |
|
||||
|
||||
## Frameless Windows
|
||||
|
||||
| Feature | Windows | Linux | Mac | Notes |
|
||||
|---------|---------|-------|-----|-------|
|
||||
| Resize | | | | |
|
||||
| Drag | | | | |
|
||||
|
||||
## Mac Specific
|
||||
|
||||
- [x] Translucency
|
||||
|
||||
### Mac Options
|
||||
|
||||
| Feature | Default | Notes |
|
||||
|-------------------------|-------------------|------------------------------------------------------|
|
||||
| Backdrop | MacBackdropNormal | Standard solid window |
|
||||
| DisableShadow | false | |
|
||||
| TitleBar | | Standard window decorations by default |
|
||||
| Appearance | DefaultAppearance | |
|
||||
| InvisibleTitleBarHeight | 0 | Creates an invisible title bar for frameless windows |
|
||||
|
||||
## Windows Specific
|
||||
|
||||
- [x] Translucency
|
||||
- [x] Custom Themes
|
||||
|
||||
### Windows Options
|
||||
|
||||
| Feature | Default | Notes |
|
||||
|-----------------------------------|---------|---------------------------------------------|
|
||||
| BackdropType | | |
|
||||
| DisableIcon | | |
|
||||
| Theme | | |
|
||||
| CustomTheme | | |
|
||||
| DisableFramelessWindowDecorations | | |
|
||||
| WindowMask | nil | Makes the window the contents of the bitmap |
|
||||
|
||||
## Linux Specific
|
||||
-49
@@ -1,49 +0,0 @@
|
||||
# TODO
|
||||
|
||||
Informal and incomplete list of things needed in v3.
|
||||
|
||||
## General
|
||||
|
||||
- [x] Generate Bindings
|
||||
- [x] Generate TS Models
|
||||
- [ ] Dev Mode
|
||||
- [ ] Generate Info.Plist from `info.json`
|
||||
|
||||
- [ ] Windows Port
|
||||
- [ ] Linux Port
|
||||
|
||||
## Runtime
|
||||
|
||||
- [x] Pass window ID with window calls in JS
|
||||
- [x] Implement alias for `window` in JS
|
||||
- [x] Implement runtime dispatcher
|
||||
- [x] Log
|
||||
- [x] Same Window
|
||||
- [ ] Other Window
|
||||
- [x] Dialogs
|
||||
- [x] Info
|
||||
- [x] Warning
|
||||
- [x] Error
|
||||
- [x] Question
|
||||
- [x] OpenFile
|
||||
- [x] SaveFile
|
||||
- [x] Events
|
||||
- [x] Screens
|
||||
- [x] Clipboard
|
||||
- [x] Application
|
||||
- [ ] Create `.d.ts` file
|
||||
|
||||
## Templates
|
||||
|
||||
- [ ] Create plain template
|
||||
- [ ] Improve default template
|
||||
|
||||
## Runtime
|
||||
|
||||
- [ ] To log or not to log?
|
||||
- [ ] Unify cross-platform events, eg. `onClose`
|
||||
|
||||
## Plugins
|
||||
|
||||
- [ ] Move logins to `v3/plugins`
|
||||
- [ ] Expose application logger to plugins
|
||||
+40
-131
@@ -1,122 +1,18 @@
|
||||
# https://taskfile.dev
|
||||
|
||||
version: '3'
|
||||
version: "3"
|
||||
|
||||
includes:
|
||||
runtime:
|
||||
taskfile: ./internal/runtime
|
||||
dir: ./internal/runtime
|
||||
|
||||
website:
|
||||
taskfile: ./website
|
||||
dir: ./website
|
||||
optional: true
|
||||
|
||||
tasks:
|
||||
|
||||
build-runtime-debug:
|
||||
dir: internal/runtime
|
||||
internal: true
|
||||
cmds:
|
||||
- npx esbuild desktop/main.js --bundle --sourcemap=inline --outfile=runtime_debug_desktop_{{.PLATFORM}}.js --define:DEBUG=true --define:WINDOWS={{.WINDOWS}} --define:DARWIN={{.DARWIN}} --define:LINUX={{.LINUX}} --define:PLATFORM={{.PLATFORM}}
|
||||
|
||||
build-runtime-debug-windows:
|
||||
cmds:
|
||||
- task: build-runtime-debug
|
||||
vars:
|
||||
WINDOWS: true
|
||||
DARWIN: false
|
||||
LINUX: false
|
||||
PLATFORM: windows
|
||||
|
||||
build-runtime-debug-linux:
|
||||
cmds:
|
||||
- task: build-runtime-debug
|
||||
vars:
|
||||
WINDOWS: false
|
||||
DARWIN: false
|
||||
LINUX: true
|
||||
PLATFORM: linux
|
||||
|
||||
build-runtime-debug-darwin:
|
||||
cmds:
|
||||
- task: build-runtime-debug
|
||||
vars:
|
||||
WINDOWS: false
|
||||
DARWIN: true
|
||||
LINUX: false
|
||||
PLATFORM: darwin
|
||||
|
||||
build-runtime-production:
|
||||
dir: internal/runtime
|
||||
internal: true
|
||||
cmds:
|
||||
- npx esbuild desktop/main.js --bundle --minify --outfile=runtime_production_desktop_{{.PLATFORM}}.js --define:DEBUG=true --define:WINDOWS={{.WINDOWS}} --define:DARWIN={{.DARWIN}} --define:LINUX={{.LINUX}} --define:PLATFORM={{.PLATFORM}}
|
||||
|
||||
build-runtime-production-windows:
|
||||
cmds:
|
||||
- task: build-runtime-production
|
||||
vars:
|
||||
WINDOWS: true
|
||||
DARWIN: false
|
||||
LINUX: false
|
||||
PLATFORM: windows
|
||||
|
||||
build-runtime-production-linux:
|
||||
cmds:
|
||||
- task: build-runtime-production
|
||||
vars:
|
||||
WINDOWS: false
|
||||
DARWIN: false
|
||||
LINUX: true
|
||||
PLATFORM: linux
|
||||
|
||||
build-runtime-production-darwin:
|
||||
cmds:
|
||||
- task: build-runtime-production
|
||||
vars:
|
||||
WINDOWS: false
|
||||
DARWIN: true
|
||||
LINUX: false
|
||||
PLATFORM: darwin
|
||||
|
||||
install-runtime-dev-deps:
|
||||
dir: internal/runtime/dev
|
||||
internal: true
|
||||
sources:
|
||||
- package.json
|
||||
cmds:
|
||||
- npm install
|
||||
|
||||
|
||||
install-runtime-deps:
|
||||
dir: internal/runtime
|
||||
internal: true
|
||||
sources:
|
||||
- package.json
|
||||
cmds:
|
||||
- npm install
|
||||
|
||||
test-runtime:
|
||||
dir: internal/runtime
|
||||
cmds:
|
||||
- npx vitest run
|
||||
|
||||
update-runtime:
|
||||
dir: internal/runtime
|
||||
cmds:
|
||||
- npx npm-check-updates -u
|
||||
|
||||
build-runtime-all:
|
||||
dir: internal/runtime
|
||||
deps:
|
||||
- build-runtime-production-darwin
|
||||
- build-runtime-production-windows
|
||||
- build-runtime-production-linux
|
||||
- build-runtime-debug-darwin
|
||||
- build-runtime-debug-windows
|
||||
- build-runtime-debug-linux
|
||||
|
||||
cmds:
|
||||
- cmd: echo "build complete"
|
||||
|
||||
build-runtime:
|
||||
dir: internal/runtime
|
||||
deps:
|
||||
- install-runtime-deps
|
||||
cmds:
|
||||
- task: build-runtime-all
|
||||
|
||||
recreate-template-dir:
|
||||
dir: internal/templates
|
||||
internal: true
|
||||
@@ -125,7 +21,7 @@ tasks:
|
||||
- rm -rf {{.TEMPLATE_DIR}}
|
||||
- mkdir -p {{.TEMPLATE_DIR}}
|
||||
|
||||
generate-template:
|
||||
generate:template:
|
||||
dir: internal/templates/{{.TEMPLATE}}
|
||||
deps:
|
||||
- task: recreate-template-dir
|
||||
@@ -152,51 +48,64 @@ tasks:
|
||||
- go install
|
||||
- echo "Reinstalled wails CLI"
|
||||
|
||||
generate-templates:
|
||||
generate:events:
|
||||
dir: tasks/events
|
||||
cmds:
|
||||
- go run generate.go
|
||||
|
||||
generate:templates:
|
||||
dir: internal/templates/
|
||||
deps:
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: svelte
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: svelte-ts
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: vue
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: vue-ts
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: react
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: react-ts
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: preact
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: preact-ts
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: lit
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: lit-ts
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: vanilla
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: vanilla-ts
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: react-swc
|
||||
- task: generate-template
|
||||
- task: generate:template
|
||||
vars:
|
||||
TEMPLATE: react-swc-ts
|
||||
cmds:
|
||||
- task: reinstall-cli
|
||||
- echo "Generated templates"
|
||||
|
||||
format:md:
|
||||
cmds:
|
||||
- npx prettier --write "**/*.md"
|
||||
|
||||
format:
|
||||
cmds:
|
||||
- task: format:md
|
||||
|
||||
@@ -59,6 +59,24 @@ TBD
|
||||
|
||||
Dialogs are now available in JavaScript!
|
||||
|
||||
### Windows
|
||||
|
||||
Dialog buttons in Windows are not configurable and are constant depending on the type of dialog. To trigger a callback when a button is pressed, create a button with the same name as the button you wish to have the callback attached to.
|
||||
Example: Create a button with the label `Ok` and use `OnClick()` to set the callback method:
|
||||
```go
|
||||
dialog := app.QuestionDialog().
|
||||
SetTitle("Update").
|
||||
SetMessage("The cancel button is selected when pressing escape")
|
||||
ok := dialog.AddButton("Ok")
|
||||
ok.OnClick(func() {
|
||||
// Do something
|
||||
})
|
||||
no := dialog.AddButton("Cancel")
|
||||
dialog.SetDefaultButton(ok)
|
||||
dialog.SetCancelButton(no)
|
||||
dialog.Show()
|
||||
```
|
||||
|
||||
## Drag and Drop
|
||||
|
||||
Native drag and drop can be enabled per-window. Simply set the `EnableDragAndDrop` window config option to `true` and the window will allow files to be dragged onto it. When this happens, the `events.FilesDropped` event will be emitted. The filenames can then be retrieved from the WindowEventContext using the `DroppedFiles()` method. This returns a slice of strings containing the filenames.
|
||||
@@ -180,3 +198,39 @@ const MyEnum = {
|
||||
|
||||
- Why use `float64`? Can't we use `int`?
|
||||
- Because JavaScript doesn't have a concept of `int`. Everything is a `number`, which translates to `float64` in Go. There are also restrictions on casting types in Go's reflection package, which means using `int` doesn't work.
|
||||
|
||||
### BackgroundColour
|
||||
|
||||
In v2, this was a pointer to an `RGBA` struct. In v3, this is an `RGBA` struct value.
|
||||
|
||||
### WindowIsTranslucent
|
||||
|
||||
This flag has been removed. Now there is a `BackgroundType` flag that can be used to set the type of background the window should have.
|
||||
This flag can be set to any of the following values:
|
||||
- `BackgroundTypeSolid` - The window will have a solid background
|
||||
- `BackgroundTypeTransparent` - The window will have a transparent background
|
||||
- `BackgroundTypeTranslucent` - The window will have a translucent background
|
||||
|
||||
On Windows, if the `BackgroundType` is set to `BackgroundTypeTranslucent`, the type of translucency can be set using the
|
||||
`BackdropType` flag in the `WindowsWindow` options. This can be set to any of the following values:
|
||||
- `Auto` - The window will use an effect determined by the system
|
||||
- `None` - The window will have no background
|
||||
- `Mica` - The window will use the Mica effect
|
||||
- `Acrylic` - The window will use the acrylic effect
|
||||
- `Tabbed` - The window will use the tabbed effect
|
||||
|
||||
|
||||
## Windows Application Options
|
||||
|
||||
### WndProcInterceptor
|
||||
|
||||
If this is set, the WndProc will be intercepted and the function will be called. This allows you to handle Windows
|
||||
messages directly. The function should have the following signature:
|
||||
|
||||
```go
|
||||
func(hwnd uintptr, msg uint32, wParam, lParam uintptr) (returnValue uintptr, shouldReturn)
|
||||
```
|
||||
|
||||
The `shouldReturn` value should be set to `true` if the returnValue should be returned by the main wndProc method.
|
||||
If it is set to `false`, the return value will be ignored and the message will continue to be processed by the main
|
||||
wndProc method.
|
||||
@@ -5,15 +5,20 @@ go 1.20
|
||||
require github.com/wailsapp/wails/v3 v3.0.0-alpha.0
|
||||
|
||||
require (
|
||||
github.com/go-ole/go-ole v1.2.6 // indirect
|
||||
github.com/google/uuid v1.3.0 // indirect
|
||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e // indirect
|
||||
github.com/json-iterator/go v1.1.12 // indirect
|
||||
github.com/leaanthony/slicer v1.5.0 // indirect
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
|
||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||
github.com/samber/lo v1.37.0 // indirect
|
||||
github.com/wailsapp/go-webview2 v1.0.1 // indirect
|
||||
github.com/wailsapp/mimetype v1.4.1 // indirect
|
||||
github.com/wailsapp/wails/v2 v2.3.2-0.20230117193915-45c3a501d9e6 // indirect
|
||||
golang.org/x/exp v0.0.0-20220930202632-ec3f01382ef9 // indirect
|
||||
golang.org/x/net v0.7.0 // indirect
|
||||
golang.org/x/sys v0.8.0 // indirect
|
||||
)
|
||||
|
||||
replace github.com/wailsapp/wails/v3 => ../..
|
||||
|
||||
@@ -1,7 +1,13 @@
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e h1:Q3+PugElBCf4PFpxhErSzU3/PY5sFL5Z6rfv4AbGAck=
|
||||
github.com/jchv/go-winloader v0.0.0-20210711035445-715c2860da7e/go.mod h1:alcuEEnZsY1WQsagKhZDsoPCRoOijYqhZvPwLG0kzVs=
|
||||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
|
||||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
|
||||
github.com/leaanthony/slicer v1.5.0 h1:aHYTN8xbCCLxJmkNKiLB6tgcMARl4eWmH9/F+S/0HtY=
|
||||
@@ -18,6 +24,8 @@ github.com/samber/lo v1.37.0/go.mod h1:9vaz2O4o8oOnK23pd2TrXufcbdbJIa3b6cstBWKpo
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
|
||||
github.com/wailsapp/go-webview2 v1.0.1 h1:dEJIeEApW/MhO2tTMISZBFZPuW7kwrFA1NtgFB1z1II=
|
||||
github.com/wailsapp/go-webview2 v1.0.1/go.mod h1:Uk2BePfCRzttBBjFrBmqKGJd41P6QIHeV9kTgIeOZNo=
|
||||
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
|
||||
github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o=
|
||||
golang.org/x/exp v0.0.0-20220930202632-ec3f01382ef9 h1:RjggHMcaTVp0LOVZcW0bo8alwHrOaCrGUDgfWUHhnN4=
|
||||
@@ -25,8 +33,12 @@ golang.org/x/exp v0.0.0-20220930202632-ec3f01382ef9/go.mod h1:cyybsKvd6eL0RnXn6p
|
||||
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user