Getting started
Discuss your idea
Before writing code, discuss your proposed change:
- Open an issue for bugs or feature requests
- Comment on existing issues to volunteer
- Reach out via email for major architectural changes
This helps avoid duplicate work and ensures your contribution aligns with project goals.
Development workflow
Make your changes
Write code following the coding standards below.
Reference the AGENTS.md file for architecture-specific guidelines when implementing features.
Write tests
Pull request process
Commit your changes
Open a pull request
- Go to the main repository
- Click “Pull requests” → “New pull request”
- Select your fork and branch
- Fill out the PR template with:
- Description of changes
- Related issue numbers
- Testing performed
- Screenshots (if UI changes)
Address review feedback
Maintainers will review your PR and may request changes. Push additional commits to the same branch to update the PR.
Coding standards
Style guidelines
Indentation and formatting
Indentation and formatting
- Use 2 spaces for indentation in all
.ts,.tsx,.js, and.jsonfiles - Run Prettier before committing (if configured):
TypeScript conventions
TypeScript conventions
- Enable strict mode in
tsconfig.json - Prefer
interfaceovertypefor object shapes - Use explicit return types for public functions:
- Avoid
any- useunknownor specific types
React conventions
React conventions
- Use functional components with hooks
- Destructure props in function signature:
- Keep components small and focused
- Extract custom hooks for reusable logic
Import organization
Import organization
Order imports by category:
Architecture guidelines
Follow the principles outlined in AGENTS.md:Core package
- Implement business logic as pure functions
- Create use cases in
src/core/src/use-cases/ - Orchestrate with epics in
src/core/src/controllers/ - Never import from
background,popup, ordesign-system
Background package
- Initialize store and wire services
- Implement service interfaces from core
- Keep background scripts thin - delegate to core use cases
- Handle browser extension APIs
Popup package
- Build UI with components from design system
- Connect to Redux store via
react-redux - Keep components presentational when possible
- Write Storybook stories for complex components
Design system
- Create reusable, accessible components
- Use Radix UI primitives as foundation
- Style with Tailwind CSS
- Document props and usage in Storybook
Commit guidelines
Use the conventional commit format:Commit types
Common types
Common types
feat: New feature for the userfix: Bug fix for the userdocs: Documentation changesstyle: Formatting, missing semicolons, etc. (no code change)refactor: Refactoring production codetest: Adding or refactoring testschore: Updating build tasks, package manager configs, etc.
Examples
Multi-line commit messages
Multi-line commit messages
For complex changes, add a body and footer:
Focus commit messages on why the change was made, not what changed (the diff shows that).
Testing requirements
See the Testing guide for detailed testing patterns.
Build artifact handling
Before committing, verify no artifacts are staged:Automation guidelines
If you’re using AI assistants or automation tools to contribute:The AGENTS.md file contains specific instructions for automated contributions:
- Where to implement features (use cases vs. epics)
- How to organize code across packages
- Build and test requirements
- Artifact handling rules
- Install dependencies with
pnpm installwhen necessary - Run
pnpm testbefore submitting - Build with
pnpm run buildand verify output - Remove
dist/and archives after verification - Follow the commit message format strictly
Code of conduct
This project follows the Contributor Covenant Code of Conduct.Core principles
Core principles
Our pledge: Create a harassment-free experience for everyone, regardless of:
- Age, body size, disability
- Ethnicity, gender identity and expression
- Level of experience, education, socio-economic status
- Nationality, personal appearance, race, religion
- Sexual identity and orientation
- Use welcoming and inclusive language
- Be respectful of differing viewpoints
- Accept constructive criticism gracefully
- Focus on what’s best for the community
- Show empathy toward others
- Sexualized language or imagery
- Trolling, insults, or personal attacks
- Public or private harassment
- Publishing others’ private information
- Other unprofessional conduct
Reporting violations
Reporting violations
Report unacceptable behavior to: [email protected]All complaints will be:
- Reviewed and investigated promptly
- Treated with confidentiality
- Responded to appropriately
TL;DR: Be kind. Treat others with respect and kindness.
Getting help
Issues
Ask questions or report problems
Discussions
Chat about ideas and features
Contact maintainer: [email protected]
Documentation
Read development guides
Recognition
All contributors are recognized in the project’s contributor graph and release notes. Thank you for making HLS Downloader better!
Quick checklist
Before submitting a PR, verify:- Tests pass:
pnpm test - Extension builds:
pnpm run build - No build artifacts committed
- Commit messages follow conventional format
- Documentation updated if needed
- Code follows style guidelines (2 spaces, TypeScript conventions)
- Changes discussed in an issue (for large changes)
- PR description explains changes and motivation
See you in the pull requests! We’re excited to review your contribution.