Skip to content

Remove Challenger plugin feature#90

Merged
anand-92 merged 3 commits into
mainfrom
remove-challenger-feature
May 26, 2026
Merged

Remove Challenger plugin feature#90
anand-92 merged 3 commits into
mainfrom
remove-challenger-feature

Conversation

@anand-92
Copy link
Copy Markdown
Owner

Summary

Removes the Challenger droids feature in its entirety.

What was dropped

  • Settings UI -- Challenger Plugin row (Apply / Re-apply button + info popover) in SettingsView.swift, along with its @State flag, .onAppear initializer, and the // MARK: - Challenger Plugin section (challengerPluginFiles table, checkChallengerPluginInstalled(), renderedChallengerPluginContent(), applyChallengerPlugin()).
  • Bundled .factory/ assets -- .factory/droids/challenger-{opus,gpt,gemini}.md and .factory/commands/challenge-{opus,gpt,gemini}.md.
  • Documentation -- README "Challenger Droids - 1 Click Install via UI" section; the "Challenger plugin Apply button" mention inside AGENTS.md's Key Files table.
  • CHANGELOG -- The unreleased ### Changed bullet about "Challenger GPT droid now runs on GPT 5.2" (plus its rationale blockquote). Historical entries (e.g. the Opus 4.7 migration parenthetical) are preserved. A new ### Removed entry documents this removal.

Verification

  • rg "[Cc]hallenger|challenge-(opus|gpt|gemini)" returns only the intentional CHANGELOG entries (the new Removed note + the preserved Opus 4.7 historical bullet).
  • cd src && swift build -- clean build (Build complete!).
  • Settings layout inspected: the section now ends after the Factory custom models block with no leftover empty row.

Notes

User-installed copies under ~/.factory/droids/challenger-*.md and ~/.factory/commands/challenge-*.md have also been removed locally as part of this change request; existing users of prior builds should clean them up manually per the new CHANGELOG entry.

Drop the bundled Challenger droids (Opus / GPT / Gemini), their
slash-command shims, and the corresponding Settings UI Apply button.
Removes the related Swift state, file-content tables, and helpers in
SettingsView, the .factory/{droids,commands}/challenger-* assets, the
README section, the AGENTS.md mention, and the [Unreleased] CHANGELOG
bullet; adds a [Unreleased] > Removed entry documenting the change.
@factory-droid
Copy link
Copy Markdown
Contributor

factory-droid Bot commented May 26, 2026

Droid finished @anand-92's task —— View job


The PR looks like a clean removal of the Challenger plugin UI and bundled .factory assets. One Unreleased changelog bullet still mentions a bundled Challenger droid and should be reworded for consistency; otherwise the change set looks solid.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 26, 2026

Review Change Stack

Warning

Review limit reached

@anand-92, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 15 minutes and 21 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a6e27df8-60e4-47ad-bb74-b8cd1b3b1dc0

📥 Commits

Reviewing files that changed from the base of the PR and between a560413 and 52b8a68.

📒 Files selected for processing (1)
  • CHANGELOG.md
📝 Walkthrough

Walkthrough

This PR removes the Challenger plugin feature: deletes the SettingsView Challenger UI and helper methods, removes bundled .factory droid/command files, and updates README, CHANGELOG, and AGENTS.md to reflect the removal.

Changes

Challenger Plugin Removal

Layer / File(s) Summary
Remove SettingsView Challenger Plugin implementation
src/Sources/SettingsView.swift
Deletes the @State flag tracking plugin installation, removes the Challenger Plugin UI section and its About alert, drops the onAppear installation check, and removes the // MARK: - Challenger Plugin implementation and helper methods that applied files into ~/.factory.
Update documentation and changelog
CHANGELOG.md, README.md, AGENTS.md
CHANGELOG marks the Challenger plugin as removed with cleanup instructions; README deletes the "Challenger Droids - 1 Click Install via UI" section; AGENTS.md removes mention of the "Challenger plugin Apply button" from the SettingsView entry.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • anand-92/droidproxy#27: Previously added the challenger droid/command markdown files and SettingsView install/detection UI that this PR removes.
  • anand-92/droidproxy#75: Also modifies SettingsView's Challenger-related rendering/logic; this PR removes that feature entirely.

Suggested labels

junie-review

Poem

🐰 The Challenger droids hop out the door,
SettingsView sighs—no plugin anymore.
Files tucked away from ~/.factory's nest,
Docs trimmed neat, the project's at rest.
A little rabbit cheers, "Merge and sprint!"

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Remove Challenger plugin feature' directly and clearly summarizes the main change—the complete removal of the Challenger droids feature—which is reflected throughout all modified files.
Description check ✅ Passed The description provides detailed and relevant information about what was removed (Settings UI, bundled assets, documentation, and CHANGELOG updates) and includes verification steps, which is directly related to the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch remove-challenger-feature

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request removes the Challenger plugin entirely, deleting the associated droid configuration files, removing the "Challenger Plugin" UI elements and installation logic from SettingsView.swift, and updating the documentation accordingly. The review feedback identifies opportunities to clean up dead code resulting from this removal, specifically pointing out unused @State variables (showingInfoAlert, infoAlertMessage, and expandedRowCount) and an unused alert modifier in SettingsView.swift.

@@ -325,7 +325,6 @@ struct SettingsView: View {
@State private var authDirectoryMonitor: AuthDirectoryMonitor?
@State private var expandedRowCount = 0
@State private var factoryModelsInstalled = false
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

With the removal of the Challenger Plugin row, the @State variables showingInfoAlert and infoAlertMessage (defined at lines 323-324) are now completely unused. Additionally, the .alert('About', isPresented: $showingInfoAlert) modifier at lines 921-925 is now dead code.\n\nPlease remove these unused state variables and the corresponding alert modifier to keep the codebase clean and maintainable.

@@ -325,7 +325,6 @@ struct SettingsView: View {
@State private var authDirectoryMonitor: AuthDirectoryMonitor?
@State private var expandedRowCount = 0
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The @State variable expandedRowCount is only incremented and decremented within the onExpandChange closures of the ServiceRow views, but its value is never read anywhere in the application.\n\nSince it is a write-only state variable, it represents dead code. Consider removing expandedRowCount and its updates in the onExpandChange closures to simplify the state management.

The Challenger Plugin row was the only caller of the About info alert
(showingInfoAlert / infoAlertMessage), so its @State variables and the
.alert("About") modifier on the view are now dead. Drop them. Flagged
by gemini-code-assist on PR #90.
Comment thread CHANGELOG.md
>
> Top-tier quality at half the cost of Opus 4.6.
### Removed
- **Challenger plugin removed** -- The Challenger droids (Opus / GPT / Gemini), the Settings "Challenger Plugin" Apply button, and the bundled `.factory/droids/challenger-*.md` + `.factory/commands/challenge-*.md` files have all been removed. Any previously installed copies under `~/.factory/droids/` and `~/.factory/commands/` should be deleted manually if you no longer want them.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Unreleased still references bundled Challenger droid

Now that [Unreleased] documents the Challenger plugin/droids removal, the later “Claude Opus 4.7 migration” bullet still mentioning the bundled Challenger droid (challenger-opus) reads as inconsistent. Could you reword that clause (e.g., remove the bundled-droid reference, or make it explicitly historical/move it under the release where it actually shipped) so the Unreleased section is self-consistent?

The same [Unreleased] block now both removes the Challenger plugin and
described retargeting the bundled Challenger droid to Opus 4.7; trim the
latter so the section is internally consistent. Flagged by Droid Auto
Review on PR #90.
@anand-92 anand-92 merged commit 9918245 into main May 26, 2026
2 checks passed
@anand-92 anand-92 deleted the remove-challenger-feature branch May 26, 2026 08:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant