--- description: "Så bidrar du till SnapOtter. Buggrapporter, funktionsförslag, pull requests och CLA-krav." i18n_source_hash: 6c920a5f83e0 i18n_provenance: human i18n_output_hash: b0a61ebb3e0d i18n_hash_version: 2 --- # Bidra {#contributing} Tack för att du vill bidra. Den här guiden beskriver hur du deltar, vad vi accepterar och hur du kommer igång. ## Sätt att bidra {#ways-to-contribute} ### Ärenden (ingen konfiguration krävs) {#issues-no-setup-required} - **Buggrapporter** - Något som är trasigt? Öppna en [buggrapport](https://github.com/snapotter-hq/snapotter/issues/new?template=bug_report.yml) med reproduktionssteg. - **Funktionsförslag** - Har du en idé? Starta en [diskussion](https://github.com/snapotter-hq/snapotter/discussions/new?category=ideas) så att gemenskapen kan väga in och rösta på den. - **Översättningsproblem** - Hittade du en felaktig eller saknad översättning? Öppna ett [översättningsärende](https://github.com/snapotter-hq/snapotter/issues/new?template=translation.yml). - **Dokumentationsproblem** - Något som inte stämmer i dokumentationen? Öppna ett [dokumentationsärende](https://github.com/snapotter-hq/snapotter/issues/new?template=documentation.yml). ### Kod (kräver CLA) {#code-requires-cla} Vi accepterar pull requests för: | Typ | Process | |------|---------| | Buggfixar | Öppna en PR direkt (länka ärendet om ett finns) | | Nya översättningar | Öppna en PR direkt (se [Översättningsguide](/sv/guide/translations)) | | Dokumentationsförbättringar | Öppna en PR direkt | | Förbättrad testtäckning | Öppna en PR direkt | | Nya verktyg eller funktioner | Starta en [diskussion](https://github.com/snapotter-hq/snapotter/discussions/new?category=ideas) först; en underhållare omvandlar godkända idéer till ett spårat ärende innan du skriver kod | | Refaktoreringar eller arkitekturändringar | Starta en [diskussion](https://github.com/snapotter-hq/snapotter/discussions/new?category=ideas) först och invänta godkännande från en underhållare innan du skriver kod | ### Vad vi inte accepterar {#what-we-will-not-accept} - Ändringar av CI/CD-arbetsflöden, release-konfiguration eller linter/kompilator-konfiguration - PR:er utan ett signerat [Contributor License Agreement](#contributor-license-agreement) - PR:er med över 400 rader ändring (dela upp stort arbete i mindre PR:er) - Funktioner som inte först har diskuterats och godkänts - Ändringar av `packages/ai/` utan föregående diskussion ## Contributor License Agreement {#contributor-license-agreement} Innan vi kan slå samman din första PR måste du signera vårt [individuella CLA](https://github.com/snapotter-hq/snapotter/blob/main/CLA.md). Det här är ett engångskrav. **Varför:** SnapOtter är dubbellicensierat (AGPLv3 + kommersiellt). CLA:t ger oss rätten att distribuera dina bidrag under båda licenserna. Du behåller full upphovsrätt till ditt arbete. **Hur:** När du öppnar din första PR kommenterar CLA Assistant-boten med en länk. Klicka på den, granska avtalet och signera med ditt GitHub-konto. Det tar 30 sekunder. Om du bidrar för din arbetsgivares räkning och din arbetsgivare behåller de immateriella rättigheterna till ditt arbete, kontakta contact@snapotter.com för att ordna ett Corporate CLA innan du skickar in. ## Kom igång {#getting-started} ### Förutsättningar {#prerequisites} - Node.js 22.22+ - pnpm 9+ - Python 3.11+ (endast för AI-verktyg) - Docker (valfritt, för fullständig integrationstestning) ### Konfiguration {#setup} ```bash # Fork and clone git clone https://github.com//snapotter.git cd snapotter # Start Postgres + Redis for local dev docker compose -f docker-compose.dev.yml up -d # Install dependencies pnpm install # Start dev servers (web on :1351, API on :13490) pnpm dev ``` ### Köra kontroller {#running-checks} Innan du skickar in en PR, se till att alla kontroller passerar lokalt: ```bash pnpm lint # Biome lint + format check pnpm typecheck # TypeScript across monorepo pnpm test # Vitest unit + integration tests ``` ## Pull request-processen {#pull-request-process} 1. Forka repot och skapa en gren från `main` (`feat/my-feature` eller `fix/issue-123`) 2. Gör dina ändringar i fokuserade, granskningsbara commits med [conventional commits](https://www.conventionalcommits.org/) 3. Lägg till eller uppdatera tester för dina ändringar 4. Kör `pnpm lint && pnpm typecheck && pnpm test` lokalt 5. Öppna en PR mot `main` och fyll i mallen 6. Signera CLA:t om du uppmanas 7. Invänta att CI passerar och att en underhållare granskar ### Vad du kan förvänta dig av granskningen {#review-expectations} - Vi strävar efter att svara på PR:er inom 7 dagar - Små, fokuserade PR:er granskas snabbare - Om du inte har hört något inom 7 dagar, lämna en kommentar som pingar tråden - Vi kan begära ändringar, föreslå ett annat tillvägagångssätt eller stänga PR:en om den inte stämmer med projektets inriktning ### Efter att din PR har slagits samman {#after-your-pr-is-merged} Ditt bidrag kommer att inkluderas i nästa release och krediteras i ändringsloggen. ## Bra första ärenden {#good-first-issues} Letar du efter något att arbeta med? Kolla våra [bra första ärenden](https://github.com/snapotter-hq/snapotter/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) för nybörjarvänliga uppgifter, eller [hjälp önskas](https://github.com/snapotter-hq/snapotter/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) för större poster där vi skulle uppskatta hjälp från gemenskapen. ## Kodstil {#code-style} - Biome sköter formatering och linting (dubbla citattecken, semikolon, 2 blanksteg indrag) - Pre-commit-hooken kör `biome check --write` på stagade filer automatiskt - Om lintern klagar, fixa koden (ändra inte Biome-konfigurationen) - ES-moduler överallt (`import`/`export`) - Conventional commits: `feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `chore:` För fullständiga arkitekturdetaljer, se [Utvecklarguiden](/sv/guide/developer). ## Säkerhet {#security} **Öppna inte en offentlig PR eller ett ärende för säkerhetssårbarheter.** Rapportera dem privat via [GitHub Security Advisories](https://github.com/snapotter-hq/snapotter/security/advisories/new) eller e-post contact@snapotter.com. Se [SECURITY.md](https://github.com/snapotter-hq/snapotter/blob/main/SECURITY.md) för fullständiga detaljer. ## Frågor? {#questions} - [Dokumentation](https://docs.snapotter.com/) - [Discord](https://discord.gg/hr3s7HPUsr) - [GitHub Discussions](https://github.com/snapotter-hq/snapotter/discussions)