epiphany/crates
Levi Neuwirth 7f8d1a1f95 editor-core: a meter-derived default grid for click-to-insert
default_grid_at(point) gives the GridResolution the pencil should snap to,
derived from the meter of the region under the cursor instead of a fixed
quarter. region_default_grid resolves the governing time signature the way the
prepass's resolve_measure_units does (a region measure's, else the score's
first), and time_signature_beat reads its beat — 1/denominator from the display
(4/4 -> quarter, 6/8 -> eighth, 2/2 -> half) — defaulting to a quarter when the
meter has no single denominator or none is declared. None only when the click
resolves to no staff.

This is additive: position_at / insert_note_at still take an explicit
GridResolution, so their signatures and tests are untouched. The GUI's pencil
click (and the empty-staff preview) now pick the grid via
default_grid_at(world).unwrap_or_else(GridResolution::quarter).

Tests: the beat is 1/denominator (4/4, 2/2; mixed-denominator -> none); a
declared 6/8 yields an eighth-note grid; a meter-less score defaults to a
quarter and a non-finite click yields no grid.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NAtEiJtt9yKVV1zjKYmZhS
2026-06-30 17:38:58 -04:00
..
epiphany-bundle Pass 11 audit follow-up: honest LayoutObjectId status + doc/test gaps 2026-06-22 10:02:05 -04:00
epiphany-core Agent I-0: real clef + key-signature data in the core graph 2026-06-26 10:31:16 -04:00
epiphany-determinism P12-I2: wire the ratified MUSCLOID layout-object id derivation 2026-06-27 12:46:19 -04:00
epiphany-editor-core editor-core: a meter-derived default grid for click-to-insert 2026-06-30 17:38:58 -04:00
epiphany-editor-gui editor-core: a meter-derived default grid for click-to-insert 2026-06-30 17:38:58 -04:00
epiphany-engrave layout-ir, engrave: ledger lines 2026-06-29 17:12:56 -04:00
epiphany-layout-ir editor-core: a staff_pitch_at click→pitch vertical inverse 2026-06-29 18:56:34 -04:00
epiphany-ops ops: ModifyEvent materializes metric placement changes (trim/move) 2026-06-30 10:43:10 -04:00
epiphany-render-svg layout-ir, engrave: ledger lines 2026-06-29 17:12:56 -04:00
epiphany-testkit epiphany-editor-core: a headless editor API + a conformance UI-seam gate 2026-06-27 16:47:34 -04:00