Skip to content

Latest commit

 

History

History
188 lines (138 loc) · 7.52 KB

File metadata and controls

188 lines (138 loc) · 7.52 KB

Contributing to Infinity

We're thrilled you're interested in contributing to Infinity. Whether you're fixing a bug, adding a feature, or improving our docs, every contribution makes Infinity smarter! To keep our community vibrant and welcoming, all members must adhere to our Code of Conduct.

Reporting Bugs or Issues

Bug reports help make Infinity better for everyone! Before creating a new issue, please search existing ones to avoid duplicates. When you're ready to report a bug, head over to our issues page where you'll find a template to help you with filling out the relevant information.

🔐 Important: If you discover a security vulnerability, please use the GitHub security tool to report it privately.

Before Contributing

All contributions must begin with a GitHub Issue, unless the change is for small bug fixes, typo corrections, minor wording improvements, or simple type fixes that don't change functionality.

  • Check existing issues: Search GitHub Issues.
  • Create an issue: Use appropriate templates:
    • Contributions: Use the "Contribution Request" template to propose what you'd like to work on.
    • Bugs: "Bug Report" template for reporting issues.
    • Features: "Detailed Feature Proposal" template for suggesting new features.
  • Wait for approval: A core Infinity contributor must approve your contribution request before you start implementation.
  • Claim issues: Once approved, the issue will be assigned to you.

PRs without approved issues may be closed.

Deciding What to Work On

Looking for a good first contribution? Check out issues labeled "good first issue" or "help wanted". These are specifically curated for new contributors and areas where we'd love some help!

We also welcome contributions to our documentation! Whether it's fixing typos, improving existing guides, or creating new educational content - we'd love to build a community-driven repository of resources that helps everyone get the most out of Infinity. You can start by diving into /docs and looking for areas that need improvement.

Development Setup

Local Development Instructions

  1. Clone the repository (Requires git-lfs):
    git clone https://github.com/infinity/infinity.git
  2. Open the project in VSCode:
    code infinity
  3. Install the necessary dependencies for the extension and webview-gui:
    npm run install:all
  4. Launch by pressing F5 (or Run->Start Debugging) to open a new VSCode window with the extension loaded. (You may need to install the esbuild problem matchers extension if you run into issues building the project.)

Creating a Pull Request

  1. Before creating a PR, generate a changeset entry:

    npm run changeset

    This will prompt you for:

    • Type of change (major, minor, patch)
      • major → breaking changes (1.0.0 → 2.0.0)
      • minor → new features (1.0.0 → 1.1.0)
      • patch → bug fixes (1.0.0 → 1.0.1)
    • Description of your changes
  2. Commit your changes and the generated .changeset file

  3. Push your branch and create a PR on GitHub. Our CI will:

    • Run tests and checks
    • Changesetbot will create a comment showing the version impact
    • When merged to main, changesetbot will create a Version Packages PR
    • When the Version Packages PR is merged, a new release will be published
  4. Testing

    • Run npm run test to run tests locally
    • Run npm run test:ci to run full CI test suite locally
    • Before submitting PR, run npm run format:fix to format your code

VS Code Extensions Setup

  • When opening the project, VS Code will prompt you to install recommended extensions
  • These extensions are required for development - please accept all installation prompts
  • If you dismissed the prompts, you can install them manually from the Extensions panel

Linux-specific Setup

VS Code extension tests on Linux require the following system libraries:

- `dbus`
- `libasound2`
- `libatk-bridge2.0-0`
- `libatk1.0-0`
- `libdrm2`
- `libgbm1`
- `libgtk-3-0`
- `libnss3`
- `libx11-xcb1`
- `libxcomposite1`
- `libxdamage1`
- `libxfixes3`
- `libxkbfile1`
- `libxrandr2`
- `xvfb`

These libraries provide necessary GUI components and system services for the test environment.

For example, on Debian-based distributions (e.g., Ubuntu), you can install these libraries using apt:

sudo apt update
sudo apt install -y \
  dbus \
  libasound2 \
  libatk-bridge2.0-0 \
  libatk1.0-0 \
  libdrm2 \
  libgbm1 \
  libgtk-3-0 \
  libnss3 \
  libx11-xcb1 \
  libxcomposite1 \
  libxdamage1 \
  libxfixes3 \
  libxkbfile1 \
  libxrandr2 \
  xvfb

Writing and Submitting Code

Anyone can contribute code to Infinity, but we ask that you follow these guidelines to ensure your contributions can be smoothly integrated:

  1. Keep Pull Requests Focused

    • Limit PRs to a single feature or bug fix
    • Split larger changes into smaller, related PRs
    • Break changes into logical commits that can be reviewed independently
  2. Code Quality

    • Run npm run lint to check code style
    • Run npm run format to automatically format code
    • All PRs must pass CI checks which include both linting and formatting
    • Address any ESLint warnings or errors before submitting
    • Follow TypeScript best practices and maintain type safety
  3. Testing

    • Add tests for new features
    • Run npm test to ensure all tests pass
    • Update existing tests if your changes affect them
    • Include both unit tests and integration tests where appropriate
  4. Version Management with Changesets

    • Create a changeset for any user-facing changes using npm run changeset
    • Choose the appropriate version bump:
      • major for breaking changes (1.0.0 → 2.0.0)
      • minor for new features (1.0.0 → 1.1.0)
      • patch for bug fixes (1.0.0 → 1.0.1)
    • Write clear, descriptive changeset messages that explain the impact
    • Documentation-only changes don't require changesets
  5. Commit Guidelines

    • Write clear, descriptive commit messages
    • Use conventional commit format (e.g., "feat:", "fix:", "docs:")
    • Reference relevant issues in commits using #issue-number
  6. Before Submitting

    • Rebase your branch on the latest main
    • Ensure your branch builds successfully
    • Double-check all tests are passing
    • Review your changes for any debugging code or console logs
  7. Pull Request Description

    • Clearly describe what your changes do
    • Include steps to test the changes
    • List any breaking changes
    • Add screenshots for UI changes

Contribution Agreement

By submitting a pull request, you agree that your contributions will be licensed under the same license as the project (Apache 2.0).

Remember: Contributing to Infinity isn't just about writing code - it's about being part of a community that's shaping the future of AI-assisted development. Let's build something amazing together! 🚀