GitHub Repository
Visit the Wails repository.
Мы приветствуем вклад в развитие Wails! Независимо от того, исправляете ли вы ошибки, добавляете новые функции или улучшаете документацию, ваша помощь очень ценится.
Нашли баг? Откройте issue с:
Улучшения документации всегда приветствуются:
Вносите код через pull requests:
# Fork the repository on GitHub# Then clone your forkgit clone https://github.com/YOUR_USERNAME/wails.gitcd wails
# Add upstream remotegit remote add upstream https://github.com/wailsapp/wails.git# Install dependenciesgo mod download
# Build Wails CLIcd v3/cmd/wails3go build
# Test your build./wails3 version# Run all testsgo test ./...
# Run specific package testsgo test ./v3/pkg/application
# Run with coveragego test -cover ./...# Update maingit checkout maingit pull upstream main
# Create feature branchgit checkout -b feature/my-feature# Good commit messagesgit commit -m "fix: resolve window focus issue on macOS"git commit -m "feat: add support for custom window chrome"git commit -m "docs: improve bindings documentation"
# Use conventional commits:# - feat: New feature# - fix: Bug fix# - docs: Documentation# - test: Tests# - refactor: Code refactoring# - chore: Maintenance# Push to your forkgit push origin feature/my-feature
# Open pull request on GitHub# Provide clear description# Reference related issues## DescriptionBrief description of changes
## Changes- Added feature X- Fixed bug Y- Updated documentation
## Testing- Tested on macOS 14- Tested on Windows 11- All tests passing
## Related IssuesFixes #123// ✅ Good: Clear, documented, tested// ProcessData processes the input data and returns the result.// It returns an error if the data is invalid.func ProcessData(data string) (string, error) { if data == "" { return "", errors.New("data cannot be empty") }
result := process(data) return result, nil}
// ❌ Bad: No docs, no error handlingfunc ProcessData(data string) string { return process(data)}func TestProcessData(t *testing.T) { tests := []struct { name string input string want string wantErr bool }{ {"valid input", "test", "processed", false}, {"empty input", "", "", true}, }
for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := ProcessData(tt.input) if (err != nil) != tt.wantErr { t.Errorf("ProcessData() error = %v, wantErr %v", err, tt.wantErr) return } if got != tt.want { t.Errorf("ProcessData() = %v, want %v", got, tt.want) } }) }}Для документации используется Starlight (Astro):
cd docsnpm installnpm run devБудьте уважительны, инклюзивны и профессиональны. Мы все здесь, чтобы вместе создавать отличный программный продукт.
Участники проекта получают признание в:
Спасибо за ваш вклад в Wails! 🎉
GitHub Repository
Visit the Wails repository.
Discord Community
Join the community.
Documentation
Read the docs.