feat(input): scalar entry via dynamic input

Text-input steps (OFFSET distance, POLYGON sides, radii, counts) were
swallowed by the dynamic-input overlay: typed digits landed in the field
buffer and Enter committed a point pick, so the value never reached
on_text_input (issue #61). Now each text step shows one scalar box whose
value routes to on_text_input on commit; non-numeric prompts (names,
keywords) keep going to the command line so mixed text like "Bolt12"
isn't split.

OFFSET reworked: object first, then through-mode by default — the offset
follows the cursor at the perpendicular distance to the object. Typing a
number locks the magnitude (cursor then only picks the side); a value
typed and clicked without Enter is applied before the point pick.

The dynamic-input overlay and the command line now show the active
step's prompt and hold it until the step completes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan SevenandClaude Opus 4.8 committed 2026-06-09 18:32:03 +03:00
1 parent c9c6e45793
commit 4b878b88c4
15 files changed
+405 -70

No files matched your search

+8
View File
@@ -781,6 +781,14 @@ impl CadCommand for CircleTTRCommand {
matches!(self.step, StepTTR::Radius { .. })
}
fn dyn_field(&self) -> crate::command::DynField {
if matches!(self.step, StepTTR::Radius { .. }) {
crate::command::DynField::Scalar
} else {
crate::command::DynField::Point
}
}
fn prompt(&self) -> String {
match &self.step {
StepTTR::First => "CIRCLE TTR Select first tangent object:".into(),