diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 6e2c5b3244..85263d8813 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,33 +1,28 @@ name: Detailed Feature Proposal -description: Propose a specific, actionable feature or enhancement for implementation +description: Report a specific problem that needs solving in Roo Code labels: ["proposal", "enhancement"] body: - type: markdown attributes: value: | - **Thank you for proposing a feature for Roo Code!** + **Thank you for submitting a feature request for Roo Code!** - This template is for specific, actionable proposals following our [Issue-First Approach](https://github.com/RooCodeInc/Roo-Code/blob/main/CONTRIBUTING.md). + This template helps you describe problems that need solving. Focus on the problem - the Roo team will work to design solutions unless you want to contribute the implementation yourself. - **Quality over speed:** We prefer detailed, clear proposals over quick ones. Vague proposals often get closed or require multiple rounds of clarification, which wastes everyone's time. + **Quality over speed:** We prefer detailed, clear problem descriptions over quick ones. Vague requests often get closed or require multiple rounds of clarification, which wastes everyone's time. **Before submitting:** - Search existing [Issues](https://github.com/RooCodeInc/Roo-Code/issues) and [Discussions](https://github.com/RooCodeInc/Roo-Code/discussions) to avoid duplicates - - For general ideas, use [GitHub Discussions](https://github.com/RooCodeInc/Roo-Code/discussions/categories/feature-requests) first, or use the #collaboration-board channel in our [Discord](https://discord.gg/roocode) - - Join [Discord](https://discord.gg/roocode) and DM **Hannes Rudolph** (`hrudolph`) for guidance - - **Review process:** A maintainer (especially @hannesrudolph) will review this proposal. **Do not start implementation until approved and assigned.** We're a small team with limited resources, so every code addition needs careful consideration. We're always happy to receive clear, actionable proposals though! + - For general ideas, use [GitHub Discussions](https://github.com/RooCodeInc/Roo-Code/discussions/categories/feature-requests) instead of this template. - type: markdown attributes: value: | - ## ❌ Common mistakes that lead to proposal rejection: + ## ❌ Common mistakes that lead to request rejection: - **Vague problem descriptions:** "UI is bad" -> Should be: "Submit button is invisible on dark theme" - - **Solution without context:** "Add feature X" -> Should explain the problem first, then the solution - **Missing user impact:** "This would be cool" -> Should explain who benefits and how - - **No acceptance criteria:** How do we know when it's done? What does success look like? + - **No specific context:** Describe exactly when and how the problem occurs - If you're unsure how a good proposal should look like, you can check out our [Roadmap](https://github.com/orgs/RooCodeInc/projects/1/views/1?query=sort%3Aupdated-desc+is%3Aopen&filterQuery=is%3Aissue%2Copen%2Cclosed+label%3A%22feature+request%22+status%3A%22Issue+%5BUnassigned%5D%22%2C%22Issue+%5BIn+Progress%5D%22) where we have a list of all open feature requests that are ready to be implemented or currently being worked on. - type: textarea id: problem-description @@ -55,11 +50,68 @@ body: validations: required: true + + - type: textarea + id: additional-context + attributes: + label: Additional context (optional) + description: Mockups, screenshots, links, user quotes, or other relevant information that supports your proposal. + + - type: checkboxes + id: checklist + attributes: + label: Request checklist + options: + - label: I've searched existing Issues and Discussions for duplicates + required: true + - label: This describes a specific problem with clear impact and context + required: true + + - type: markdown + attributes: + value: | + --- + + ## 🛠️ **Optional: Contributing & Technical Analysis** + + **🎯 Just reporting a problem?** You can click "Submit new issue" right now! The sections below are only needed if you want to contribute a solution via pull request. + + **⚠️ Only continue if you want to:** + - Propose a specific solution design + - Implement the feature yourself via pull request + - Provide technical analysis to help with implementation + + **For contributors who continue:** + - A maintainer (especially @hannesrudolph) will review this proposal. **Do not start implementation until approved and assigned.** We're a small team with limited resources, so every code addition needs careful consideration. We're always happy to receive clear, actionable proposals though! + - Join [Discord](https://discord.gg/roocode) and DM **Hannes Rudolph** (`hrudolph`) for guidance on implementation + - Check our [Roadmap](https://github.com/orgs/RooCodeInc/projects/1/views/1?query=sort%3Aupdated-desc+is%3Aopen&filterQuery=is%3Aissue%2Copen%2Cclosed+label%3A%22feature+request%22+status%3A%22Issue+%5BUnassigned%5D%22%2C%22Issue+%5BIn+Progress%5D%22) to see open feature requests ready to be implemented or currently being worked on + + - type: checkboxes + id: willingness-to-contribute + attributes: + label: Interested in implementing this? + description: | + **Important:** If you check "Yes" below, the technical sections become REQUIRED. + We need detailed technical analysis from contributors to ensure quality implementation. + options: + - label: Yes, I'd like to help implement this feature + required: false + + - type: checkboxes + id: implementation-approval + attributes: + label: Implementation requirements + options: + - label: I understand this needs approval before implementation begins + required: false + - type: textarea id: proposed-solution attributes: - label: How should this be solved? + label: How should this be solved? (REQUIRED if contributing, optional otherwise) description: | + **If you want to implement this feature, this section is REQUIRED.** + **Describe your solution in detail.** Explain not just what to build, but how it should work. ✅ **Good examples:** @@ -77,14 +129,14 @@ body: - How will users interact with it? - What will the new behaviour look like? placeholder: Describe the specific changes and how they will work. Include user interaction details if relevant. - validations: - required: true - type: textarea id: acceptance-criteria attributes: - label: How will we know it works? (Acceptance Criteria) + label: How will we know it works? (Acceptance Criteria - REQUIRED if contributing, optional otherwise) description: | + **If you want to implement this feature, this section is REQUIRED.** + **This is crucial - don't skip it.** Define what "working" looks like with specific, testable criteria. **Format suggestion:** @@ -108,42 +160,14 @@ body: placeholder: | Define specific, testable criteria. What should users be able to do? What should happen? What should NOT happen? Use the Given/When/Then format above or your own clear structure. - validations: - required: true - - - type: textarea - id: estimated-effort - attributes: - label: Estimated effort and complexity - description: | - **Help us understand the scope.** This helps with planning and prioritisation. - - **Please include:** - - **Size estimate:** XS/Small/Medium/Large/XL (or hours/days if you prefer) - - **Reasoning:** What makes it this size? Which parts are complex? - - **Main challenges:** What's the trickiest bit to implement? - - **Dependencies:** Does this require other changes or external libraries? - - **Example:** - ``` - Size: Large (2-3 weeks) - Reasoning: Touches task execution engine, UI components, and state management - Main challenges: Preventing memory leaks with parallel execution and managing shared resources - Dependencies: Might need to add a new dependency for the new feature - ``` - placeholder: | - Size: [your estimate] - Reasoning: [why this size?] - Main challenges: [what's tricky?] - Dependencies: [what else is needed?] - validations: - required: true - type: textarea id: technical-considerations attributes: - label: Technical considerations (optional but helpful) + label: Technical considerations (REQUIRED if contributing, optional otherwise) description: | + **If you want to implement this feature, this section is REQUIRED.** + Share technical insights that could help planning: - Implementation approach or architecture changes - Performance implications @@ -155,40 +179,13 @@ body: - type: textarea id: trade-offs-and-risks attributes: - label: Trade-offs and risks (optional) + label: Trade-offs and risks (REQUIRED if contributing, optional otherwise) description: | + **If you want to implement this feature, this section is REQUIRED.** + What could go wrong or what alternatives did you consider? - Alternative approaches and why you chose this one - Potential negative impacts (performance, UX, etc.) - Breaking changes or migration concerns - Edge cases that need careful handling placeholder: 'e.g., "Alternative: use library X but it is 500KB larger", "Risk: might slow older devices", "Breaking: changes API response format"' - - - type: textarea - id: additional-context - attributes: - label: Additional context (optional) - description: Mockups, screenshots, links, user quotes, or other relevant information that supports your proposal. - - - type: checkboxes - id: checklist - attributes: - label: Proposal checklist - options: - - label: I've searched existing Issues and Discussions for duplicates - required: true - - label: This is a specific, actionable proposal with clear problem and solution - required: true - - label: I've included concrete acceptance criteria - required: true - - label: I understand this needs approval before implementation begins - required: true - - - type: checkboxes - id: willingness-to-contribute - attributes: - label: Interested in implementing this? - description: Optional - doesn't affect proposal consideration - options: - - label: Yes, I'd like to help implement this feature - required: false