Files
openidea/CONTRIBUTING.md
T
l0ng-ai c3b7e34b22 perf(vcs): filter the Git log with git log instead of a background search index (#1537)
* perf(vcs): filter the Git log with git log instead of a background search index

The log built a persistent inverted index of every commit's message, authors and
changed paths in the background, with a progress bar above the commit list, and
walked trees itself to filter by path. Building it took minutes on large
repositories, and filters were slow until it finished.

- Text: plain text uses `git log --fixed-strings --grep` (with
  `--regexp-ignore-case` unless Match Case is on); text of 4+ hex digits also
  matches hash prefixes. Regex filters still match in-process.
- Paths: `git log -- :(literal)<paths>` replaces the in-process path walk and
  its per-commit tree cache. It uses git's history simplification and, when the
  repository has a changed-path commit-graph, its Bloom filters. Glob characters
  in a path are literal.
- Authors match against the commit metadata cache.
- Removed the search tables, `index_log`, the `vcs_log_index` command and the
  indexing progress bar. The commit metadata cache stays.

* docs(contributing): ask for screenshots only when a change alters what users see

Removing a feature together with its UI, copy-only and non-visual changes now
describe what was checked instead of attaching before/after screenshots.

* fix(vcs): match case-insensitive non-ASCII Git log text in process

git folds case only for ASCII under the C locale it runs with, so a
case-insensitive filter like "ärger" missed "Ärger". Such text is now
matched against commit messages directly. Path and text selection also
ignore log.showSignature and log.follow from the user's config.
2026-11-05 19:20:43 +08:00

2.1 KiB

Contributing to OpenIDEA

These rules apply to everyone, and to any coding agent working on their behalf. Project layout, coding rules, commands and checks are in AGENTS.md.

Issues

  • One problem or request per issue. Use the issue forms.
  • Bugs: steps that reproduce the problem from a fresh start. A minimal sample project is the fastest way to get a fix.
  • Features: state the problem and the acceptance criteria. A feature is ready to build once a maintainer labels it planned.
  • Labels track status: needs-info waits on the reporter, needs-decision waits on a maintainer, planned is accepted, needs-acceptance has a fix waiting to be checked.

Pull requests

  • One problem per PR. If it resolves an issue, link it with Closes #123.
  • Reproduce the problem first, or write a test that fails before the fix.
  • Fix the cause, and check whether the same cause breaks anything nearby.
  • Keep the diff focused. Unrelated refactors go in their own PR.
  • Title: Conventional Commits, e.g. fix(editor): keep the caret visible after folding.
  • Fill in the template. Keep the description short and in plain words. If it doesn't fit in a few sentences, the PR is probably too big.
  • How it was verified is required: the commands you ran and their results, and what else the change could affect. Changes to what users see need before/after screenshots; multi-step interactions need a recording. UI that goes away with a removed feature, copy-only and non-visual changes don't; say what you checked instead.
  • If a change needs a product decision you can't make, ask in the issue and stop rather than guessing.

Plugins: pull requests here add or change official plugins (plugins/official/) and the plugin API. Community plugins live in their authors' repositories and are listed through l0ng-ai/openidea-plugins; see plugins/README.md § 8.1.

A check on each PR adds needs-info when the verification section is missing, and removes it once it's filled in.