Mitwirken
Zu Wails beitragen
Willkommen, Mitwirkende!
Wir freuen uns über Beiträge zu Wails! Ob Sie Fehler beheben, Funktionen hinzufügen oder die Dokumentation verbessern – Ihre Hilfe ist willkommen.
Möglichkeiten zur Mitwirkung
1. Probleme melden
Einen Fehler gefunden? Erstellen Sie einen Issue mit folgenden Angaben:
- Klare Beschreibung
- Schritte zum Reproduzieren
- Erwartetes und tatsächliches Verhalten
- Systeminformationen
- Codebeispiele
2. Dokumentation verbessern
PRs mit Korrekturen sind auch ohne vorherigen Issue oder fehlgeschlagenen Codetest willkommen.
Folgen Sie der Anleitung Dokumentation korrigieren, um eine Änderung mit M-Press in der Vorschau anzuzeigen und zu validieren.
Verbesserungen der Dokumentation sind jederzeit willkommen:
- Tippfehler und Fehler beheben
- Beispiele hinzufügen
- Erklärungen verdeutlichen
- Inhalte übersetzen
3. Code beitragen
Tragen Sie Code über Pull Requests bei:
- Fehlerbehebungen
- Neue Funktionen
- Leistungsverbesserungen
- Tests
4. Verbesserung vorschlagen (WEP)
Neue Funktionen und Änderungen am öffentlichen Verhalten durchlaufen den Prozess für Wails Enhancement Proposals (WEP). Er hält die Funktionsentwicklung transparent und stellt sicher, dass es für jeden angenommenen Vorschlag eine für die Implementierung zuständige Person gibt. Erstellen Sie keinen Issue für einen Funktionswunsch.
- Optional können Sie Ihre Idee in der Kategorie Ideas der GitHub Discussions oder auf Discord vorstellen, um das Interesse auszuloten.
- Kopieren Sie
v3/wep/WEP_TEMPLATE.mdnachv3/wep/proposals/<proposal name>/proposal.mdund füllen Sie jeden Abschnitt aus. - Erstellen Sie einen als Entwurf markierten Pull Request mit dem Titel
[WEP] <title>, der ausschließlich den Vorschlag enthält. Der PR ist der offizielle Ort für dessen Diskussion. - Holen Sie Feedback und Unterstützung ein (Kommentare und „Daumen hoch“-Reaktionen im PR). Planen Sie mindestens zwei Wochen für die Diskussion ein und einigen Sie sich darauf, wer den Vorschlag implementiert.
- Markieren Sie den PR als bereit zur Überprüfung. Die Maintainer treffen die endgültige Entscheidung: Angenommene Vorschläge erhalten eine WEP-Nummer und werden zusammengeführt.
Der vollständige Prozess ist in v3/wep/README.md dokumentiert.
Erste Schritte
Fork erstellen und klonen
# Fork the repository on GitHub
# Then clone your fork
git clone https://github.com/YOUR_USERNAME/wails.git
cd wails
# Add upstream remote
git remote add upstream https://github.com/wailsapp/wails.git
Aus dem Quellcode erstellen
# Build the v3 CLI. Go downloads any required modules automatically.
cd v3
go build -o ../wails3 ./cmd/wails3
# Confirm the built CLI runs and reports its version.
../wails3 version
Tests ausführen
Tests sind Bestandteil der Änderung und keine abschließende oberflächliche Prüfung. Platzieren Sie Unit-Tests neben dem Code, den sie prüfen, und verwenden Sie bevorzugt tabellengesteuerte Tests, wenn ein Verhalten mit mehreren Eingaben oder Grenzfällen geprüft wird. Benennen Sie jeden Testfall so, dass bei einem Fehlschlag das Szenario erkennbar ist.
Neue und geänderte Logik sollte vollständig abgedeckt sein. Streben Sie für den durch Ihren PR hinzugefügten oder geänderten Code eine Go-Anweisungsabdeckung von 100 % an; betrachten Sie einen prozentualen Wert für das gesamte Repository nicht als Ersatz für das Testen der Änderung. Eine Lücke kann gerechtfertigt sein – beispielsweise bei einem nur unter einem bestimmten Betriebssystem auftretenden Fehlerpfad oder einer Bedingung, die sich ohne echte Hardware nicht praktikabel reproduzieren lässt. Erläutern Sie in der PR-Beschreibung jedoch die Lücke und warum sie sich nicht mit vertretbarem Aufwand testen lässt.
# Run all v3 tests
cd v3
go test ./...
# Run specific package tests
go test ./pkg/application
# Inspect coverage for the packages you changed
go test ./pkg/application -coverprofile=coverage.out
go tool cover -func=coverage.out
cd ..
Informationen zu Integrations-Test-Suites, Race Detection und den vollständigen CI-äquivalenten Befehlen finden Sie unter Tests und kontinuierliche Integration.
Änderungen vornehmen
Branch erstellen
# Update master
git checkout master
git pull upstream master
# Create feature branch
git checkout -b feature/my-feature
Änderungen vornehmen
- Code schreiben und dabei die Go-Konventionen einhalten
- Für neue Funktionen Tests hinzufügen
- Bei Bedarf die Dokumentation aktualisieren
- Tests ausführen, um sicherzustellen, dass nichts beschädigt wird
- Änderungen committen und klare Meldungen verwenden
Commit-Richtlinien
# Good commit messages
git 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
Pull Request einreichen
# Push to your fork
git push origin feature/my-feature
# Open pull request on GitHub
# Provide clear description
# Reference related issues
Pull-Request-Richtlinien
Gute PR-Beschreibung
## Description
Brief 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 Issues
Fixes #123PR-Checkliste
- Code entspricht den Go-Konventionen
- Tests hinzugefügt oder aktualisiert
- Dokumentation aktualisiert
- Alle Tests erfolgreich
- Keine Breaking Changes (oder dokumentiert)
- Commit-Meldungen sind klar
Code-Richtlinien
Go-Codestil
// ✅ 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 handling
func ProcessData(data string) string {
return process(data)
}Tests
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)
}
})
}
}Dokumentation
Dokumentation verfassen
Die Dokumentation verwendet M-Press. Bearbeite die .md-Dateien unter
docs/mpress/content/ und führe anschließend die Vorschau und Validierung aus dem Stammverzeichnis des Repositorys aus:
go install github.com/leaanthony/mpress/cmd/mpress@v1.0.17
mpress dev
mpress build --strict --no-purge-css
mpress check
# Use `python` on Windows if `python3` is unavailable.
python3 docs/mpress/scripts/check_site.py docs/mpress/site
Dokumentationsstil
- Verwende internationale englische Rechtschreibung
- Beginne mit dem Problem
- Stelle funktionsfähige Beispiele bereit
- Füge Hinweise zur Fehlerbehebung hinzu
- Verweise auf verwandte Inhalte
Community
Hilfe erhalten
- Discord: Tritt unserer Community bei
- GitHub Discussions: Stelle Fragen
- GitHub Issues: Melde Fehler
Verhaltenskodex
Sei respektvoll, inklusiv und professionell. Wir alle sind hier, um gemeinsam großartige Software zu entwickeln. Weitere Einzelheiten findest du im Verhaltenskodex.
Anerkennung
Mitwirkende werden hier gewürdigt:
- Versionshinweise
- Liste der Mitwirkenden
- GitHub Insights
Vielen Dank für deinen Beitrag zu Wails! 🎉
Nächste Schritte
Besuche das Wails-Repository.
Tritt der Community bei.
Lies die Dokumentation.