Skip to main content
IINA Plugin BookmarksIINA Plugin Bookmarks
Development

Contributing Guide

How to contribute to the IINA Plugin Bookmarks project

Contributing Guide

Thank you for your interest in contributing to IINA Plugin Bookmarks! This guide will help you get started.

Getting Started

Prerequisites

  • Node.js (v22 or higher)
  • pnpm (v10 or higher)
  • Git
  • IINA media player (for testing)
  • TypeScript knowledge (recommended)

Development Setup

Fork and Clone

git clone https://github.com/YOUR_USERNAME/iina-plugin-bookmarks.git
cd iina-plugin-bookmarks

Build and Test

make build
make test

Development Workflow

Build Commands

make build    # TypeScript compile + Parcel UI build
make test     # Run test suite with Vitest
make dev      # Start dev servers for sidebar/overlay/window
make release  # Full production pipeline

Commit Guidelines

We follow Conventional Commits:

feat: add bookmark export functionality
fix: resolve metadata detection for edge cases
docs: update installation instructions
test: add unit tests for bookmark manager

The project uses Husky v9 pre-commit hooks with lint-staged to enforce code quality. Your commits will automatically be linted and formatted before being accepted.

Code Standards

  • Use strict TypeScript settings
  • Add JSDoc comments for public APIs
  • Follow ESLint 9 flat config and Prettier 3.x configurations
  • Maintain 80%+ test coverage

Testing

Write comprehensive tests using Vitest:

describe('BookmarkManager', () => {
  it('should create a new bookmark', async () => {
    await manager.addBookmark('Test Movie', 120);
    expect(manager.getBookmarks()).toHaveLength(1);
  });
});

Pull Request Process

  1. Create feature branch from main
  2. Make changes with tests
  3. Update documentation if needed
  4. Submit PR with clear description
  5. Address review feedback

For major changes, please open an issue for discussion first.

Community Guidelines

  • Be respectful and inclusive
  • Provide constructive feedback
  • Help others learn and grow
  • Follow our Code of Conduct

Thank you for contributing!