Files
streamyfin/.github/CONTRIBUTING.md
Chris 87d02078c8
Some checks failed
🏗️ Build Apps / 🤖 Build Android APK (Phone) (push) Has been cancelled
🏗️ Build Apps / 🤖 Build Android APK (TV) (push) Has been cancelled
🏗️ Build Apps / 🍎 Build iOS IPA (Phone) (push) Has been cancelled
🔒 Lockfile Consistency Check / 🔍 Check bun.lock and package.json consistency (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (actions) (push) Has been cancelled
🛡️ CodeQL Analysis / 🔎 Analyze with CodeQL (javascript-typescript) (push) Has been cancelled
🏷️🔀Merge Conflict Labeler / 🏷️ Labeling Merge Conflicts (push) Has been cancelled
🚦 Security & Quality Gate / 📝 Validate PR Title (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Vulnerable Dependencies (push) Has been cancelled
🚦 Security & Quality Gate / 🚑 Expo Doctor Check (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (check) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (format) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (lint) (push) Has been cancelled
🚦 Security & Quality Gate / 🔍 Lint & Test (typecheck) (push) Has been cancelled
🕒 Handle Stale Issues / 🗑️ Cleanup Stale Issues (push) Has been cancelled
docs: Add AI Assistance Disclosure Clause
Update introduces a new section outlining requirements for contributors who use AI tools while working on the project.
2025-10-24 10:01:36 +02:00

6.5 KiB
Raw Permalink Blame History

Contributing to Streamyfin

Thank you for your interest in contributing to the Streamyfin project. This document outlines the guidelines for effective collaboration across the Streamyfin codebase and aims to ensure a smooth, productive experience for all contributors.


Table of Contents


AI Assistance Disclosure

Important

If any AI tool was used while contributing to Streamyfin, it must be disclosed in the pull request.

State in your PR whether AI assistance was used and to what extent (for example, docs only or code generation).
If AI-generated text was used in PR discussions or responses, disclose that as well.
Minor autocomplete or keyword suggestions do not require disclosure.

Examples

This PR was written primarily by Claude Code.
I used Cursor to explore parts of the codebase, but the implementation is fully manual.

Failing to disclose AI usage wastes maintainers time and complicates review efforts.
AI-assisted contributions are welcome, but contributors remain fully responsible for the code they submit.

Always disclose AI involvement to maintain transparency and respect for maintainers time.

Reporting Issues

Streamyfin uses GitHub issues to track bugs and improvements. Before opening a new issue:

  • Search existing issues for duplicates.
  • Provide clear, reproducible steps to demonstrate bugs.
  • Include device info, OS version, Streamyfin version, and any relevant logs.
  • Apply the bug label to the issue for easier triage; no title prefix needed.

If you're unsure about how to report an issue or need help, reach out to the community via our chat links.

Reporting Security Vulnerabilities

Please do not file public GitHub issues for security vulnerabilities.

Report security concerns via GitHub Security Advisories (Repository → Security → Report a vulnerability). Provide steps to reproduce, affected versions, and mitigation ideas if available. Well acknowledge receipt and coordinate a fix before public disclosure.

If Security Advisories are unavailable for you, contact the maintainers via the email listed in SECURITY.md.---

Requesting Features & Enhancements

Please submit feature and enhancement requests as GitHub issues labeled enhancement.

When creating a new feature request:

  • Check if the idea or similar request exists.
  • Use reactions like 👍 to support existing requests.
  • Clearly describe the use case and potential benefits.
  • Include screenshots when relevant.

Developing Streamyfin

Codebase Overview

Streamyfin is built primarily using Expo and React Native to support both iOS and Android platforms within a single repository. The app communicates directly with Jellyfin backend servers for media streaming.

Setting Up Your Development Environment

  1. Fork the Streamyfin repository on GitHub. If prompted with “Copy the main branch only,” uncheck it so all branches are copied.
  2. Clone your fork:

git clone git@github.com:yourusername/streamyfin.git
# or
git clone https://github.com/yourusername/streamyfin.git
cd streamyfin

  1. Initialize submodules and install dependencies:
bun run submodule-reload
bun install
  1. Start the development server locally (with Expo):
bun ios / bun android

Optionally, to run directly on a device or emulator:

# For iOS (requires macOS and Xcode):
bun run ios
# For Android (requires Android Studio or Android Debug Bridge (ADB) tool, plus an emulator or physical device):
bun run android 
  1. Use the Expo app on your mobile device or emulator to run and debug Streamyfin.

Making Changes

  1. Stay up to date by syncing with upstream:
# Add the upstream remote only once (skip if already added)
git remote add upstream https://github.com/streamyfin/streamyfin.git
# Fetch latest changes from upstream
git fetch upstream
# Rebase your current branch onto the upstream default branch (replace 'develop' if you are working from another upstream branch)
git rebase upstream/develop
  1. Create a descriptive feature or bugfix branch:

git checkout -b feat/feature-name

  1. Commit changes with clear, concise messages using imperative mood.
  2. Push changes to your fork:

git push --set-upstream origin feat/feature-name


Pull Request Guidelines

When opening a PR:

  • Title should clearly summarize the change.
  • Reference any related issue(s) using keywords like closes #123.
  • Follow our Conventional Commits style, e.g., feat: add new playback controls.
  • Provide a detailed description in the PR body, explaining what, why, and any impacts.
  • Include screenshots or recordings if UI changes are involved.
  • Ensure CI checks are green (lint, type-check, build).
  • Confirm that the branch is up to date with main before submission.
  • Mention if AI-generated code or content was used (see AI Assistance Disclosure).
  • Do not include secrets, tokens, or production credentials. Redact sensitive data in logs and screenshots.
  • Keep PRs focused; avoid bundling unrelated changes together.

PRs require review and approval by maintainers before merging.---

Release Process

  • Streamyfin follows semantic versioning (MAJOR.MINOR.PATCH).
  • Releases are made periodically after testing and QA cycles.
  • Tag each release and publish a GitHub Release with a changelog.
  • Consider automating versioning and changelogs (e.g., Changesets or semantic-release).
  • Release announcements are posted on our repository and community channels.
  • Contributions accepted through PRs will be included in upcoming releases according to readiness.

Getting Help and Community

  • Join our community chat channels on Discord for questions and support.
  • Use GitHub discussions or open issues to get assistance or report problems.

Thank you for contributing to make Streamyfin better for everyone!