- remove type assertions
- update contentTypeSniffer to capture the status code
- move logic in ServeHTTP to serveHTTP
- wrap serveHTTP with ServeHTTP adding logging & duration calculation
* [v2, darwin] Add "Hide, Hide Others, Show All“ to appmenu
This also includes shortcuts support for those commands.
Arrange the menu items in the well known MacOS order.
* [v2, darwin] Add Window menu with well known shortcuts Minimize, Full-Screen and Zoom.
This fixes some long-standing inconsistencies between
dev mode builds and production builds but is a breaking
change. Dev mode uses custom scheme for Vite versions >= 3.0.0
and for older it still behaves in the old way.
- [GitHub](https://github.com/wailsapp/wails) - If you have a bug to report or feature to request, that's what the GitHub issues are for. Please respect the rules specified in each repository's issue template.
- [Discord](https://discord.gg/JDdSxwjhGf) - A place for Wails devs to meet and chat in real time.
- [QQ Group(中文)](https://qm.qq.com/cgi-bin/qm/qr?k=PmIURne5hFGNd7QWzW5qd6FV-INEjNJv&jump_from=webapi) - A Wails group for Chinese developers to communicate, where you can get help from other developers.
### Explore the Ecosystem
- [The Awesome Wails Page](https://github.com/wailsapp/awesome-wails) - See what other awesome resources have been published by other awesome people.
## Ways of contributing
Wails is an open source, community driven project. We welcome anyone to join us in
contributing to the project. This documentation is aimed at anyone wishing to get
familiar with the project and the development processes.
There are many ways to contribute to the project:
- Developing new features
- Fixing bugs
- Testing
- Documenting features
- Writing tutorials / guides
- Helping others on the issues + discussions boards
Guides for these have been created in their own sections. Before getting started,
please introduce yourself in the [Contributing to Wails](https://github.com/wailsapp/wails/discussions/1520)
discussion.
### Developing New Features
We are always keen to add features to Wails and expand on what the project can do.
The process for adding new features are as follows:
- Pick an enhancement ticket with the "TODO" label. It's preferable to select one from the current
[Backlog](https://github.com/orgs/wailsapp/projects/1/views/1) but the choice is yours.
- Before developing, check that the ticket includes the following information:
- The purpose of the enhancement
- What is out of scope for the enhancement
- What platforms the enhancement targets (most features should be cross-platform unless there's a very specific reason)
- If the ticket does not include this information, feel free to request the information from the
person who opened the ticket. Sometimes placeholder tickets are created and require more details
- Comment on the ticket stating if you wish to develop the feature
- Clone the repository and create a branch with the format `feature/<ticket_number>_<ticket_title>`
- New features often require documentation so please ensure you have also added or updated the documentation as part of
the changes
- Once the feature is ready for testing, create a draft PR. Please ensure the PR description has the test scenarios and
test cases listed with checkmarks, so that others can know what still needs to be tested.
- Once all the testing is completed, please update the status of the PR from draft and leave a message.
:::note
There is nothing stopping you from opening a ticket and working on it yourself, but please be aware that all
enhancement requests are reviewed for good fit. Not all ideas will be selected, so it's best to have discussion
about the enhancement first.
:::
:::warning
Any PRs opened without a corresponding ticket may be rejected.
:::
### Fixing Bugs
The process for fixing bugs are as follows:
- Check the current [Backlog](https://github.com/orgs/wailsapp/projects/1/views/1) and select a bug to fix
- Before developing, check that the ticket includes the following information:
- The scope of the issue including platforms affected
- The steps to reproduce. Sometimes bugs are opened that are not Wails issues and the onus is on the reporter to
prove that it is a Wails issue with a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example)
- The output of `wails doctor`
- A test that can reproduce the bug
- If the ticket does not include this information, feel free to request the information from the
person who opened the ticket.
- Comment on the ticket stating you wish to develop a fix
- Clone the repository and create a branch with the format `bugfix/<ticket_number>_<ticket_title>`
- Once the fix is ready for testing, create a draft PR. Please ensure the PR description has the test scenarios and
test cases listed with checkmarks, so that others can know what still needs to be tested.
- Once all the testing is completed, please update the status of the PR from draft and leave a message.
:::note
There is nothing stopping you from opening a ticket and working on it yourself, but please be aware that all
bugfixes should be discussed as the approach may have unintended side effects.
:::
:::warning
Any PRs opened without a corresponding ticket may be rejected.
:::
### Testing
Testing is vitally important to ensure quality in the project. There are a couple of
scenarios where testing can really help the project:
- Testing if a bug is reproducible on your local system
- Testing PRs to ensure that they work correctly
If you chose to test if someone's bug report is reproducible on your local system, then
feel free to add a comment on the ticket confirming this with the output of `wails doctor`.
To test PRs, choose a PR to test and check if the PR description has the testing scenarios
listed. If not, please ask the person who opened the PR to provide that list. Once you have
determined a valid test scenario, please report your findings on the PR.
If you ever need more clarity or help on testing, please ask a question in the [Contributing to Wails](https://github.com/wailsapp/wails/discussions/1520)
discussion or on slack.
### Documenting
This website is also the main documentation site for the project. Sometimes this gets
out of date and needs some slight adjustments. Some of the documentation isn't written
to the best standards either. Developing documentation is hard and so any contribution
to this is greatly appreciated. Features without documentation are unfinished so to the
project, it's _as important_ as the code.
We generally do not create tickets for updating documentation so if there is text you
think should be updated or rephrased then feel free to submit a PR for that. This site
is in the main repository under the `website` directory. We use [Docusaurus](https://docusaurus.io/) to create
the site so there is plenty of existing documentation and tutorials around to get started.
To set up a local documentation development environment, do the following:
After it has all installed and is running, you should see the site at [`http://localhost:3000`](http://localhost:3000).
Any changes made to the site text will be immediately reflected in the browser.
#### Versioning
We employ a versioning system where we have the "latest" documentation AKA "Next Version" which
has all the changes that have occurred since the last release. We also keep the last release
documentation as well as the version before that.
There isn't usually a reason to update released documentation so we don't generally update
the documents in the `versioned_docs` or `versioned_sidebars` directories.
The "next version" docs are mainly in `website/docs` with some "version independent" documents
in `src/pages`. Any updates should be made in the `website/docs` directory.
#### Languages
The default documents of the Wails project are English documents. We use the "crowdin" tool to translate documents in other languages and synchronize them to the website. You can [join our project](https://crowdin.com/project/wails) and submit your translations to make contributions.
##### Add new language
If you want to add a new language to the documentation, please follow the prompts to [fill in and submit an Issue](https://github.com/wailsapp/wails/issues/new?assignees=&labels=documentation&template=documentation.yml). After being confirmed by the maintainer, we will add the language to the "crowdin" and you will then be able to submit your translation.
### Helping Others
A great way to contribute to the project is to help others who are experiencing difficulty.
This is normally reported as a ticket or a message on the Wails discord server. Even just
clarifying the issue can really help out. Sometimes, when an issue is discussed and gets
resolved, we create a guide out of it to help others who face the same issues.
To join the Wails discord server, click [here](https://discord.gg/JDdSxwjhGf).
The [BulletinBoard](https://github.com/raguay/BulletinBoard) application is a versital message board for static messages or dialogs to get information from the user for a script. It has a TUI for creating new dialogs that can latter be used to get information from the user. It's design is to stay running on your system and show the information as needed and then hide away. I have a process for watching a file on my system and sending the contents to BulletinBoard when changed. It works great with my workflows. There is also an [Alfred workflow](https://github.com/raguay/MyAlfred/blob/master/Alfred%205/EmailIt.alfredworkflow) for sending information to the program. The workflow is also for working with [EmailIt](https://github.com/raguay/EmailIt).
[EmailIt](https://github.com/raguay/EmailIt/) is a Wails 2 program that is a markdown based email sender only with nine notepads, scripts to manipulate the text, and templates. It also has a scripts terminal to run scripts in EmailIt on files in your system. The scripts and templates can be used from the commandline itself or with the Alfred, Keyboard Maestro, Dropzone, or PopClip extensions. It also supports scripts and themes downloaded form GitHub. Documentation is not complete, but the programs works. It’s built using Wails2 and Svelte, and the download is a universal macOS application.
**[EncryptEasy](https://www.encrypteasy.app) is a simple and easy to use PGP encryption tool, managing all your and your contacts keys. Encryption should be simple. Developed with Wails.**
Encrypting messages using PGP is the industry standard. Everyone has a private and a public key. Your private key, well, needs to be kept private so only you can read messages. Your public key is distributed to anyone who wants to send you secret, encrypted messages. Managing keys, encrypting messages and decrypting messages should be a smooth experience. EncryptEasy is all about making it easy.
[FileHound Export Utility](https://www.filehound.co.uk/) FileHound is a cloud document management platform made for secure file retention, business process automation and SmartCapture capabilities.
The FileHound Export Utility allows FileHound Administrators the ability to run a secure document and data extraction tasks for alternative back-up and recovery purposes. This application will download all documents and/or meta data saved in FileHound based on the filters you choose. The metadata will be exported in both JSON and XML formats.
[Minecraft Updater](https://github.com/Gurkengewuerz/MinecraftModUpdater) is a utility tool to update and synchronize Minecraft mods for your userbase. It’s built using Wails2 and React with [antd](https://ant.design/) as frontend framework.
[Modal File Manager](https://github.com/raguay/ModalFileManager) is a dual pane file manager using web technologies. My original design was based on NW.js and can be found [here](https://github.com/raguay/ModalFileManager-NWjs). This version uses the same Svelte based frontend code (but it has be greatly modified since the departure from NW.js), but the backend is a [Wails 2](https://wails.io/) implementation. By using this implementation, I no longer use command line `rm`, `cp`, etc. commands, but a git install has to be on the system to download themes and extensions. It is fully coded using Go and runs much faster than the previous versions.
This file manager is designed around the same principle as Vim: a state controlled keyboard actions. The number of states isn't fixed, but very programmable. Therefore, an infinite number of keyboard configurations can be created and used. This is the main difference from other file managers. There are themes and extensions available to download from GitHub.
[Molly Wallet](https://github.com/grvlle/constellation_wallet/) the official $DAG wallet of the Constellation Network. It'll let users interact with the Hypergraph Network in various ways, not limited to producing $DAG transactions.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.