Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

refactor: per-feature operation modules so features can land in parallel

Chiusa
#78 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
12/100
Tipo di issue
Refactoring
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
rust

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

area/infra area/mcp effort/m impact/internal in-progress priority/p2 severity/low triaged type/chore urgency/this-quarter

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)

  1. 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.rs are the seed of this pattern.
  2. Derived catalog: TOOL_NAMES and the MCP catalog are built from registered features; docs reference a generated tool table instead of literal counts.
  3. Split app.rs (shell/layout, guards and dispatch, menus/shortcuts, panels) and mcp_editor_tests.rs (per feature).
  4. 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.

Lingua principale
Rust
Stelle
4
Fork
2
Merge medio
7h 53m
PR unite (30g)
126

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di cristim/AztecCraft

Tutte le issue di cristim/AztecCraft

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.