Selection and filter depth: the thirteen selection.* and filter.* commands the shell never binds

Abierto
#138 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Refactorización
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust
Área
desktop, tooling

Línea de trabajo

Start with ShellAction::SelectAll and fn select_inverse in crates/app/src/shell/mod.rs, which currently act on the editor's cell selection directly. Find where the engine's selection.* and filter.* commands are registered, then route the shell's menu or panel actions through those dispatches. Done means each of the thirteen commands is dispatched from a real UI surface, the reachability floor is re-blessed with cargo run -p xtask -- reachability --bless, and a regression test fails when a binding is removed.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement parity

The engine already carries these thirteen selection and filter commands; the shell's designed surface never binds any of them.

The selection half is the sharpest case: the shell implements Select All and Select Inverse, but over the editor's own cell selection (ShellAction::SelectAll in crates/app/src/shell/mod.rs, fn select_inverse) rather than by dispatching selection.selectAll / selection.selectInverse. The behaviour exists; the registry path is not exercised from the UI, so the engine's own semantics (its selection model, its undo, its scripting surface) are not what the user gets.

The commands:

  • selection.selectAll, selection.selectNone, selection.selectInverse, selection.selectAllOnLayer — the four selection verbs.
  • selection.duplicateToFrames, selection.duplicateToFrameRange, selection.distributeToFrames — CS6's "duplicate to frames" and "distribute to frames".
  • filter.selection, filter.selectionByID, filter.selectionByName, filter.convolveSelection, filter.motionBlurSelection, filter.setEffectName — the filters that act on a selection, and the effect-name setter.

Acceptance:

  • the shell dispatches the engine's selection verbs rather than reimplementing them over its own state, so the engine's selection model, undo and scripting surface are the ones the user gets.
  • each command named here is dispatched from the shell's designed surface — a menu row, a panel field or a tool action. A literal in a comment does not count: the gate is a literal scan, and the binding has to be a real dispatch.
  • where the surface writes a value the renderer ignores, the renderer honours it too. A field that engages and changes nothing observable is not a binding.
  • the reachability measurement rises accordingly and the floor is re-pinned deliberately with cargo run -p xtask -- reachability --bless (the bless refuses to lower it).
  • a regression test fails when the binding is removed.
Lenguaje dominante
Rust
Estrellas
11
Forks
1
Merge medio
13 h 16 min
PR fusionados (30 d)
38

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de aliasfoxkde/FireCraft

Todos los issues de aliasfoxkde/FireCraft

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.