refactor: per-feature operation modules so features can land in parallel
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 12/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- rust
- Domain
- desktop, developer-experience
Research direction
This is design work spanning src/app.rs, src/editor_operations.rs, src/mcp/tools.rs and src/mcp_editor_tests.rs, and it is meant to be planned and reviewed before any code. Start by reading move_ui.rs and move_mcp_tests.rs to see the per-feature pattern the issue wants to generalise, then the central dispatch in apply_operation_guarded. Done means a reviewed plan, not a patch; a newcomer should wait for maintainer direction.
Written by the indexing model from the issue text.
Description
Problem
Every user-facing feature edits the same central files, so independent PRs always conflict and each rebase needs hand composition and re-review (Face, curves and Move all conflicted in these files on 2026-10-15/16):
| File | Role every feature touches |
|---|---|
src/app.rs (~4.9k lines) |
editor state, guards, apply_operation_guarded, menus, shortcuts, panels, inspection, large test module |
src/editor_operations.rs |
Operation enum and hardcoded TOOL_NAMES: [&str; N] |
src/mcp/tools.rs |
central parse_request match, catalog, annotation list |
src/mcp_editor_tests.rs (~4.8k lines) |
single protocol test file |
Tool counts are also written as prose ("twenty-eight tools") in README, .project-docs/mcp.md and an app.rs assertion, so unrelated features conflict on docs.
Goal
A feature can be added mostly in its own module(s) with only small, append-only touches to shared dispatch, so external contributors and agents can work in parallel under the issue-claim and draft-PR workflow.
Proposed direction (to be planned and reviewed before code)
- Per-feature operation modules: each feature declares its typed operation(s), guard requirements, MCP tool schema and parser, inspection fragment and native UI hooks.
move_ui.rs/move_mcp_tests.rsare the seed of this pattern. - Derived catalog:
TOOL_NAMESand the MCP catalog are built from registered features; docs reference a generated tool table instead of literal counts. - Split
app.rs(shell/layout, guards and dispatch, menus/shortcuts, panels) andmcp_editor_tests.rs(per feature). - Contributor docs: area map and an "adding a feature" guide separated from verification evidence logs.
Acceptance
- Behavior-neutral: every existing unit, Editor protocol, SDK and headless GPU test passes unchanged except for moves; MCP schemas byte-identical (snapshot test) unless a change is intended and reviewed.
- Native UI and MCP still dispatch the same typed operations through the same guards (drafts/commit_pending, modal, close, dirty scene, scene token, Move busy).
- A demonstration that adding a new tool touches only its module plus append-only registration.
- Landed as a reviewed PR series, each PR atomic and CI green.
Sequenced after the Move PR (#77) and before Rotate/Scale (#34, #35, #36), which will be the first features built on it.
- Dominant language
- Rust
- Stars
- 4
- Forks
- 2
- Avg merge
- 2h 51m
- Merged PRs (30d)
- 84
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from cristim/AztecCraft
-
area/viewport effort/s impact/internal priority/p3 severity/low triaged type/chore urgency/eventually
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
cristim/AztecCraft#186 ·
Maintainers usually reply within 1 day
-
area/infra effort/s impact/internal priority/p3 severity/low triaged type/chore urgency/eventually
Difficulty 1/5 Under an hour Newbie friendliness 94/100
cristim/AztecCraft#181 · 1 comment ·
Maintainers usually reply within 1 day
-
area/modeling effort/s impact/many priority/p3 severity/low triaged type/bug urgency/this-quarter
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
cristim/AztecCraft#176 ·
Maintainers usually reply within 1 day
-
area/modeling effort/m impact/many priority/p3 severity/low triaged type/bug urgency/this-quarter
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
cristim/AztecCraft#175 ·
Maintainers usually reply within 1 day
-
area/ui-parity effort/s impact/many priority/p3 severity/low triaged type/bug urgency/this-quarter
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
cristim/AztecCraft#172 · 1 comment ·
Maintainers usually reply within 1 day
All issues in cristim/AztecCraft
Similar issues
-
`image_generation`: `max_retries` is ignored for OpenAI-compatible providers (always 2 retries)Possibly taken @ericz7900 claimed this today. Openllm translation
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
Maintainers usually reply within 1 day
-
Help-Wanted Needs-Triage Package-Request
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
microsoft/winget-pkgs#456324 ·
Maintainers usually reply within 1 day
-
ai_p2
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
ClickHouse/ClickHouse#126833 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
area/runtime good first issue size/S type/refactor
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
lorica-labs/volant#681 ·
Maintainers usually reply within 1 day