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

オープン
#138 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
25/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
活発
技術スタック
rust
領域
desktop, tooling

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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.
主要言語
Rust
スター
11
フォーク
1
平均マージ
13時間 16分
マージ済み PR(30日)
38

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

aliasfoxkde/FireCraft のほかの issue

aliasfoxkde/FireCraft の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。