feat(install): add native JetBrains Junie install target#849
Conversation
|
All contributors have signed the CLA. Thank you! |
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
2 issues found across 6 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="scripts/lib/install-manifests.js">
<violation number="1" location="scripts/lib/install-manifests.js:7">
P2: Missing `junie` entry in `IDE_INSTALL_URLS` in `helpers.js`. When `junie` adapter validation runs and the target's `.junie/` directory is not found, the `IDE_INSTALL_URLS` lookup returns `undefined`, so no 'ide-not-detected' validation warning is emitted. Other targets like `trae`, `kiro`, and `goose` all have URL entries. Add a `junie` entry with JetBrains Junie's install page to keep the validation feedback consistent.</violation>
</file>
<file name="tests/lib/install-targets.test.js">
<violation number="1" location="tests/lib/install-targets.test.js:1690">
P2: The two new junie test blocks have an indentation inconsistency: the `if (test(...` line uses 4-space indent while all surrounding tests use 2-space indent, and the test function body is at the same indentation level as the `if` line instead of being one level deeper. This will cause a readability inconsistency and may trigger linter warnings in projects with consistent formatting rules. Consider matching the 2-space indent for `if (test(...` and using 4-space indent for the body (or 4/6 space if the tests are inside an outer block that warrants 4-space).</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
|
|
||
| const DEFAULT_REPO_ROOT = path.join(__dirname, '../..'); | ||
| const SUPPORTED_INSTALL_TARGETS = ['egc', 'claude', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'windsurf', 'amp', 'copilot', 'zed', 'continue', 'kiro', 'trae', 'goose', 'amazonq', 'openhands', 'aider', 'warp']; | ||
| const SUPPORTED_INSTALL_TARGETS = ['egc', 'claude', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'windsurf', 'amp', 'copilot', 'zed', 'continue', 'kiro', 'trae', 'junie', 'goose', 'amazonq', 'openhands', 'aider', 'warp']; |
There was a problem hiding this comment.
P2: Missing junie entry in IDE_INSTALL_URLS in helpers.js. When junie adapter validation runs and the target's .junie/ directory is not found, the IDE_INSTALL_URLS lookup returns undefined, so no 'ide-not-detected' validation warning is emitted. Other targets like trae, kiro, and goose all have URL entries. Add a junie entry with JetBrains Junie's install page to keep the validation feedback consistent.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At scripts/lib/install-manifests.js, line 7:
<comment>Missing `junie` entry in `IDE_INSTALL_URLS` in `helpers.js`. When `junie` adapter validation runs and the target's `.junie/` directory is not found, the `IDE_INSTALL_URLS` lookup returns `undefined`, so no 'ide-not-detected' validation warning is emitted. Other targets like `trae`, `kiro`, and `goose` all have URL entries. Add a `junie` entry with JetBrains Junie's install page to keep the validation feedback consistent.</comment>
<file context>
@@ -4,7 +4,7 @@ const path = require('node:path');
const DEFAULT_REPO_ROOT = path.join(__dirname, '../..');
-const SUPPORTED_INSTALL_TARGETS = ['egc', 'claude', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'windsurf', 'amp', 'copilot', 'zed', 'continue', 'kiro', 'trae', 'goose', 'amazonq', 'openhands', 'aider', 'warp'];
+const SUPPORTED_INSTALL_TARGETS = ['egc', 'claude', 'cursor', 'antigravity', 'codex', 'gemini', 'opencode', 'codebuddy', 'windsurf', 'amp', 'copilot', 'zed', 'continue', 'kiro', 'trae', 'junie', 'goose', 'amazonq', 'openhands', 'aider', 'warp'];
const COMPONENT_FAMILY_PREFIXES = {
baseline: 'baseline:',
</file context>
| assert.strictEqual(statePath, path.join(projectRoot, '.trae', 'egc-install-state.json')); | ||
| })) passed++; else failed++; | ||
|
|
||
| if (test('resolves junie adapter root and install-state path from project root', () => { |
There was a problem hiding this comment.
P2: The two new junie test blocks have an indentation inconsistency: the if (test(... line uses 4-space indent while all surrounding tests use 2-space indent, and the test function body is at the same indentation level as the if line instead of being one level deeper. This will cause a readability inconsistency and may trigger linter warnings in projects with consistent formatting rules. Consider matching the 2-space indent for if (test(... and using 4-space indent for the body (or 4/6 space if the tests are inside an outer block that warrants 4-space).
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At tests/lib/install-targets.test.js, line 1690:
<comment>The two new junie test blocks have an indentation inconsistency: the `if (test(...` line uses 4-space indent while all surrounding tests use 2-space indent, and the test function body is at the same indentation level as the `if` line instead of being one level deeper. This will cause a readability inconsistency and may trigger linter warnings in projects with consistent formatting rules. Consider matching the 2-space indent for `if (test(...` and using 4-space indent for the body (or 4/6 space if the tests are inside an outer block that warrants 4-space).</comment>
<file context>
@@ -1687,6 +1687,29 @@ function runTests() {
assert.strictEqual(statePath, path.join(projectRoot, '.trae', 'egc-install-state.json'));
})) passed++; else failed++;
+ if (test('resolves junie adapter root and install-state path from project root', () => {
+ const adapter = getInstallTargetAdapter('junie');
+ const projectRoot = '/workspace/app';
</file context>
|
Welcome! A couple of things to fix before this gets a full review. EGC is a large project (hooks, Guardian, DCO, conventions) -- this is normal for a first PR, not a rejection. Tests are failing. npm ci
npm testFix any failures shown in the "Run fast test check" step log on this PR. Make sure your branch is on your own fork (not a branch on this repo directly) -- see CONTRIBUTING.md for the full guide. Push your fixes and this check re-runs automatically. Once it passes, CodeRabbit reviews the PR in full. |
|
Hi @Om-Beast, great pace, from welcome to PR in under two hours! I reviewed the change and the adapter itself is exactly right: junie-project.js mirrors the trae-project template 1:1, the registry and schema entries are correct, and your two tests follow the existing coverage shape. I ran the install-targets suite on your branch and it passes 104/104. DCO is also properly signed, nice job on the hook setup. Three things before we can merge:
I've also approved the CI workflows (they're gated for first-time contributors), so you'll see the full pipeline running now. Once the three items above are done and CI is green, we merge. You're very close! |
|
Quick follow-up now that the full CI matrix ran: 2741 of 2743 tests pass on your branch. The 2 failures are the same deterministic pair on every OS, and they point to one thing you couldn't have guessed: EGC has a docs contract test for install targets.
After that, |
|
I have read the CLA Document and I hereby sign the CLA. |
|
One more finding while you work on the remaining items: your CLA signature comment was correct, but the cla check keeps failing because of something subtler. The email on your commits ( Two ways to fix it, pick one: Option A (easiest): link the email to your account. GitHub Settings > Emails > Add Option B: switch your git identity to an email already on your account, then rewrite the two commits: git config user.email "YOUR-ID+Om-Beast@users.noreply.github.com"
git rebase -r origin/main --exec 'git commit --amend --no-edit --reset-author -s'
git push --force-with-lease(You can find your noreply address in Settings > Emails, under "Keep my email addresses private".) Option A is less error-prone since B involves force-pushing. This also makes sure you get credit for the contribution on your GitHub profile, which you definitely want for your first merged PR here! |
8de76ec to
5287519
Compare
|
@coderabbitai review |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Signed-off-by: Om-Beast <kesaharwanio685@gmail.com> Signed-off-by: Om-Beast <kesharwanio685@gmail.com>
Signed-off-by: Om-Beast <kesaharwanio685@gmail.com> Signed-off-by: Om-Beast <kesharwanio685@gmail.com>
Signed-off-by: Om-Beast <kesaharwanio685@gmail.com> Signed-off-by: Om-Beast <kesharwanio685@gmail.com>
885e93c to
fb9d9ba
Compare
|
@coderabbitai review |
|
Great work on the email fix, the CLA is green now and the whole pipeline is passing (39/39 checks). You're two small steps from merge, and neither shows up as a red check, so listing them here so they don't get lost:
Once those two land, this gets merged. You've handled every round of feedback fast and precisely, this is exactly how a first contribution should go. |
Signed-off-by: Om-Beast <kesharwanio685@gmail.com>
|
@coderabbitai review |
|
|
Thanks Felipe! I have completed all requested changes. The PR is ready for final review. |
|
Almost! One truly last thing: the issue's acceptance criteria ask for the official Junie doc link in the PR description (the page you used to verify the |
|
Added the official JetBrains Junie documentation link to the PR description as requested. Thanks for the review! |
Fmarzochi
left a comment
There was a problem hiding this comment.
All acceptance criteria met: adapter mirrors the established pattern, registry/schema/tests complete, integration tiers documented, clean lockfile, CLA signed, full CI matrix green (40/40). Excellent first contribution.
|
Merged! 🎉 Welcome to the EGC contributors, @Om-Beast! This was a model first contribution: you took every round of feedback (lockfile hygiene, docs contract, CLA identity) and turned each one around fast and precisely. EGC now supports JetBrains Junie as its 20th tool thanks to you. Your name goes up on the Hall of Fame on the project site shortly. If you want another challenge, keep an eye on the open issues, there are a few with the help wanted label waiting. Hope to see you around! |



What Changed
Added native JetBrains Junie install target support.
Why This Change
This allows EGC to install project guidelines directly for JetBrains Junie using
.junie/guidelines.md.Documentation
Official JetBrains Junie documentation:
https://www.jetbrains.com/help/junie/customize-guidelines.html
Testing Done
node tests/lib/install-targets.test.js)~/.egc/), a concurrent-access test was added or updatedTest result:
Type of Change
fix:Bug fixfeat:New featurerefactor:Code refactoringdocs:Documentationtest:Testschore:Maintenance/toolingci:CI/CD changesSecurity & Quality Checklist
Documentation
Summary by cubic
Adds a native JetBrains Junie install target so EGC can install and track project guidelines under
.junie/. You can now selectjunieas an install target.junie-projectadapter resolving.junieandegc-install-state.json.juniein the registry, supported targets, schema validation, and IDE metadata.Written for commit 3c481ff. Summary will update on new commits.