Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .agents/skills/review-architecture/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Required on every review. Read the remaining pages on demand when the diff touch
- `wiki/architecture/scene-registry.md`
- `wiki/architecture/spatial-queries.md`
- `wiki/architecture/node-schemas.md`
- `wiki/architecture/inspector-field-limits.md` — no arbitrary `min`/`max` on dimension fields. Read whenever the diff adds or edits `parametrics.ts`, a kind `panel.tsx`, or `<SliderControl>` bounds.
- `wiki/architecture/events.md`
- `wiki/architecture/interaction-scope.md` — the interaction state machine + the unified snapping/modifier convention. Read whenever the diff touches a tool, a `move-tool` / `selection` / endpoint / reshape file, `lib/interaction/**`, `lib/snapping-mode.ts`, or `use-interaction-scope`.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,8 +240,6 @@ function MultiVec3Field({
<SliderControl
key={`${fieldKey}-${label}`}
label={label}
max={axisValue + 5}
min={axisValue - 5}
mixed={mixed}
onChange={(next) => previewMultiNodeFields(patchAxis(next))}
onCommit={(next) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,6 @@ export function ParametricFieldControl({
<SliderControl
key={`${key}-${label}`}
label={label}
max={axisValue + 5}
min={axisValue - 5}
mixed={mixed}
onChange={(next) => onChange(apply(next))}
onCommit={onCommit ? (next) => onCommit(apply(next)) : undefined}
Expand Down
2 changes: 0 additions & 2 deletions packages/nodes/src/block/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,6 @@ export default function BlockPanel() {
<SliderControl
key={label}
label={label}
max={node.position[axis] + 2}
min={node.position[axis] - 2}
onChange={onChange}
precision={2}
step={0.01}
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/box-vent/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ export default function BoxVentPanel() {
<PanelSection title="Dimensions">
<SliderControl
label="Width"
max={0.8}
max={1000}
min={0.15}
onChange={(v) => previewProp({ width: v })}
onCommit={(v) => handleUpdate({ width: v })}
Expand All @@ -197,7 +197,7 @@ export default function BoxVentPanel() {
/>
<SliderControl
label="Depth"
max={0.8}
max={1000}
min={0.15}
onChange={(v) => previewProp({ depth: v })}
onCommit={(v) => handleUpdate({ depth: v })}
Expand All @@ -209,7 +209,7 @@ export default function BoxVentPanel() {
/>
<SliderControl
label="Height"
max={0.4}
max={1000}
min={0.05}
onChange={(v) => previewProp({ height: v })}
onCommit={(v) => handleUpdate({ height: v })}
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/box-vent/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ export const boxVentParametrics: ParametricDescriptor<BoxVentNode> = {
{
label: 'Dimensions',
fields: [
{ key: 'width', kind: 'number', unit: 'm', min: 0.15, max: 0.8, step: 0.01 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.15, max: 0.8, step: 0.01 },
{ key: 'height', kind: 'number', unit: 'm', min: 0.05, max: 0.4, step: 0.01 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.15, max: 1000, step: 0.01 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.15, max: 1000, step: 0.01 },
{ key: 'height', kind: 'number', unit: 'm', min: 0.05, max: 1000, step: 0.01 },
{ key: 'hoodOverhang', kind: 'number', unit: 'm', min: 0, max: 0.12, step: 0.005 },
],
},
Expand Down
2 changes: 1 addition & 1 deletion packages/nodes/src/ceiling/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ export function CeilingPanel() {
) : (
<SliderControl
label="Height"
max={Math.min(20, maxHeight)}
max={Math.min(1000, maxHeight)}
min={0}
onChange={handleHeightChange}
precision={3}
Expand Down
2 changes: 1 addition & 1 deletion packages/nodes/src/ceiling/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ export const ceilingParametrics: ParametricDescriptor<CeilingNode> = {
groups: [
{
label: 'Dimensions',
fields: [{ key: 'height', kind: 'number', unit: 'm', min: 1.5, max: 20, step: 0.05 }],
fields: [{ key: 'height', kind: 'number', unit: 'm', min: 0.1, max: 1000, step: 0.05 }],
},
],
customPanel: () => import('./panel'),
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/chimney/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -369,7 +369,7 @@ export default function ChimneyPanel() {
/>
<SliderControl
label={(node.bodyShape ?? 'square') === 'round' ? 'Diameter' : 'Width'}
max={3}
max={1000}
min={0.2}
onChange={(v) => previewProp({ width: v })}
onCommit={(v) => commitProp({ width: v })}
Expand All @@ -382,7 +382,7 @@ export default function ChimneyPanel() {
{(node.bodyShape ?? 'square') !== 'round' && (
<SliderControl
label="Depth"
max={3}
max={1000}
min={0.2}
onChange={(v) => previewProp({ depth: v })}
onCommit={(v) => commitProp({ depth: v })}
Expand Down Expand Up @@ -436,7 +436,7 @@ export default function ChimneyPanel() {
<PanelSection title="Height">
<SliderControl
label="Above Ridge"
max={5}
max={1000}
min={0.1}
onChange={(v) => previewProp({ heightAboveRidge: v })}
onCommit={(v) => commitProp({ heightAboveRidge: v })}
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/chimney/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,17 @@ export const chimneyParametrics: ParametricDescriptor<ChimneyNode> = {
options: ['square', 'round'],
display: 'segmented',
},
{ key: 'width', kind: 'number', unit: 'm', min: 0.2, max: 2, step: 0.05 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.2, max: 1000, step: 0.05 },
{
key: 'depth',
kind: 'number',
unit: 'm',
min: 0.2,
max: 2,
max: 1000,
step: 0.05,
visibleIf: (n) => n.bodyShape === 'square',
},
{ key: 'heightAboveRidge', kind: 'number', unit: 'm', min: 0.2, max: 3, step: 0.05 },
{ key: 'heightAboveRidge', kind: 'number', unit: 'm', min: 0.2, max: 1000, step: 0.05 },
{
key: 'cornerBevel',
kind: 'number',
Expand Down
8 changes: 4 additions & 4 deletions packages/nodes/src/column/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ export default function ColumnPanel() {
{!managedByLeanTo && (
<SliderControl
label="Height"
max={20}
max={1000}
min={0.8}
onChange={(value) => handleUpdate({ height: value })}
precision={2}
Expand All @@ -606,7 +606,7 @@ export default function ColumnPanel() {
supportStyle === 'box-frame') && (
<SliderControl
label="Bottom Spread"
max={4}
max={1000}
min={0.2}
onChange={(value) =>
handleUpdate({
Expand Down Expand Up @@ -667,7 +667,7 @@ export default function ColumnPanel() {
<>
<SliderControl
label="Width"
max={1.6}
max={1000}
min={0.12}
onChange={(value) =>
handleUpdate({
Expand All @@ -684,7 +684,7 @@ export default function ColumnPanel() {
{node.crossSection === 'rectangular' && (
<SliderControl
label="Depth"
max={1.6}
max={1000}
min={0.12}
onChange={(value) => handleUpdate({ depth: value })}
precision={2}
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/column/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ export const columnParametrics: ParametricDescriptor<ColumnNode> = {
{
label: 'Dimensions',
fields: [
{ key: 'height', kind: 'number', unit: 'm', min: 0.5, max: 20, step: 0.05 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.1, max: 2, step: 0.01 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.1, max: 2, step: 0.01 },
{ key: 'height', kind: 'number', unit: 'm', min: 0.5, max: 1000, step: 0.05 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.1, max: 1000, step: 0.01 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.1, max: 1000, step: 0.01 },
],
},
],
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/cupola/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ export default function CupolaPanel() {
<PanelSection title="Dimensions">
<SliderControl
label="Width"
max={2}
max={1000}
min={0.3}
onChange={(v) => previewProp({ width: v })}
onCommit={(v) => handleUpdate({ width: v })}
Expand All @@ -177,7 +177,7 @@ export default function CupolaPanel() {
/>
<SliderControl
label="Depth"
max={2}
max={1000}
min={0.3}
onChange={(v) => previewProp({ depth: v })}
onCommit={(v) => handleUpdate({ depth: v })}
Expand All @@ -189,7 +189,7 @@ export default function CupolaPanel() {
/>
<SliderControl
label="Height"
max={2.5}
max={1000}
min={0.4}
onChange={(v) => previewProp({ height: v })}
onCommit={(v) => handleUpdate({ height: v })}
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/cupola/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ export const cupolaParametrics: ParametricDescriptor<CupolaNode> = {
{
label: 'Dimensions',
fields: [
{ key: 'width', kind: 'number', unit: 'm', min: 0.3, max: 2, step: 0.05 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.3, max: 2, step: 0.05 },
{ key: 'height', kind: 'number', unit: 'm', min: 0.4, max: 2.5, step: 0.05 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.3, max: 1000, step: 0.05 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.3, max: 1000, step: 0.05 },
{ key: 'height', kind: 'number', unit: 'm', min: 0.4, max: 1000, step: 0.05 },
],
},
],
Expand Down
2 changes: 1 addition & 1 deletion packages/nodes/src/door/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -731,7 +731,7 @@ export default function DoorPanel() {
/>
<SliderControl
label="Height"
max={4}
max={1000}
min={1.0}
onChange={(v) =>
handleUpdate({
Expand Down
4 changes: 2 additions & 2 deletions packages/nodes/src/door/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ export const doorParametrics: ParametricDescriptor<DoorNode> = {
{
label: 'Dimensions',
fields: [
{ key: 'width', kind: 'number', unit: 'm', min: 0.5, max: 6, step: 0.05 },
{ key: 'height', kind: 'number', unit: 'm', min: 1.0, max: 4, step: 0.05 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.5, max: 1000, step: 0.05 },
{ key: 'height', kind: 'number', unit: 'm', min: 1.0, max: 1000, step: 0.05 },
],
},
{
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/dormer/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ export default function DormerPanel() {
<PanelSection title="Dimensions">
<SliderControl
label="Width"
max={4}
max={1000}
min={0.5}
onChange={(v) => previewProp({ width: v })}
onCommit={(v) => commitProp({ width: v })}
Expand All @@ -214,7 +214,7 @@ export default function DormerPanel() {
/>
<SliderControl
label="Depth"
max={5}
max={1000}
min={0.5}
onChange={(v) => previewProp({ depth: v })}
onCommit={(v) => commitProp({ depth: v })}
Expand All @@ -226,7 +226,7 @@ export default function DormerPanel() {
/>
<SliderControl
label="Wall Height"
max={5}
max={1000}
min={0}
onChange={(v) => previewProp({ height: v })}
onCommit={(v) => commitProp({ height: v })}
Expand Down
10 changes: 6 additions & 4 deletions packages/nodes/src/dormer/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ export const dormerParametrics: ParametricDescriptor<DormerNode> = {
{
label: 'Dormer',
fields: [
{ key: 'width', kind: 'number', unit: 'm', min: 0.5, max: 4, step: 0.05 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.5, max: 5, step: 0.05 },
{ key: 'height', kind: 'number', unit: 'm', min: 0, max: 5, step: 0.05 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.5, max: 1000, step: 0.05 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.5, max: 1000, step: 0.05 },
{ key: 'height', kind: 'number', unit: 'm', min: 0, max: 1000, step: 0.05 },
],
},
{
Expand All @@ -30,7 +30,9 @@ export const dormerParametrics: ParametricDescriptor<DormerNode> = {
},
{
label: 'Hung wall',
fields: [{ key: 'wallSkirtHeight', kind: 'number', unit: 'm', min: 0.2, max: 6, step: 0.05 }],
fields: [
{ key: 'wallSkirtHeight', kind: 'number', unit: 'm', min: 0.2, max: 1000, step: 0.05 },
],
},
{
label: 'Window opening',
Expand Down
2 changes: 1 addition & 1 deletion packages/nodes/src/downspout/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ export const downspoutParametrics: ParametricDescriptor<DownspoutNode> = {
{
label: 'Dimensions',
fields: [
{ key: 'length', kind: 'number', unit: 'm', min: 0.1, max: 8, step: 0.05 },
{ key: 'length', kind: 'number', unit: 'm', min: 0.1, max: 1000, step: 0.05 },
{ key: 'diameter', kind: 'number', unit: 'm', min: 0.02, max: 0.15, step: 0.005 },
// Cross-section: follow the gutter profile, or force round / rect.
{
Expand Down
4 changes: 2 additions & 2 deletions packages/nodes/src/duct-terminal/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ export const ductTerminalParametrics: ParametricDescriptor<DuctTerminalNode> = {
{
label: 'Face',
fields: [
{ key: 'width', kind: 'number', unit: 'm', min: 0.1, max: 1.5, step: 0.05 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.05, max: 1.5, step: 0.05 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.1, max: 1000, step: 0.05 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.05, max: 1000, step: 0.05 },
],
},
{
Expand Down
6 changes: 0 additions & 6 deletions packages/nodes/src/elevator/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -496,8 +496,6 @@ export default function ElevatorPanel() {
<PanelSection title="Position">
<SliderControl
label="X"
max={50}
min={-50}
onChange={(value) => {
const position = getSupportedPosition(value, displayPosition[2])
previewTransform(position, displayRotation)
Expand All @@ -514,8 +512,6 @@ export default function ElevatorPanel() {
/>
<SliderControl
label="Y"
max={50}
min={-50}
onChange={(value) => {
const position: ElevatorNode['position'] = [
displayPosition[0],
Expand All @@ -540,8 +536,6 @@ export default function ElevatorPanel() {
/>
<SliderControl
label="Z"
max={50}
min={-50}
onChange={(value) => {
const position = getSupportedPosition(displayPosition[0], value)
previewTransform(position, displayRotation)
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/eyebrow-vent/panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ export default function EyebrowVentPanel() {
<PanelSection title="Dimensions">
<SliderControl
label="Width"
max={3}
max={1000}
min={0.4}
onChange={(v) => previewProp({ width: v })}
onCommit={(v) => handleUpdate({ width: v })}
Expand All @@ -196,7 +196,7 @@ export default function EyebrowVentPanel() {
/>
<SliderControl
label="Depth"
max={1.5}
max={1000}
min={0.2}
onChange={(v) => previewProp({ depth: v })}
onCommit={(v) => handleUpdate({ depth: v })}
Expand All @@ -208,7 +208,7 @@ export default function EyebrowVentPanel() {
/>
<SliderControl
label="Height"
max={1}
max={1000}
min={0.08}
onChange={(v) => previewProp({ height: v })}
onCommit={(v) => handleUpdate({ height: v })}
Expand Down
6 changes: 3 additions & 3 deletions packages/nodes/src/eyebrow-vent/parametrics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ export const eyebrowVentParametrics: ParametricDescriptor<EyebrowVentNode> = {
{
label: 'Dimensions',
fields: [
{ key: 'width', kind: 'number', unit: 'm', min: 0.3, max: 2, step: 0.05 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.2, max: 1.5, step: 0.05 },
{ key: 'height', kind: 'number', unit: 'm', min: 0.08, max: 1, step: 0.02 },
{ key: 'width', kind: 'number', unit: 'm', min: 0.3, max: 1000, step: 0.05 },
{ key: 'depth', kind: 'number', unit: 'm', min: 0.2, max: 1000, step: 0.05 },
{ key: 'height', kind: 'number', unit: 'm', min: 0.08, max: 1000, step: 0.02 },
],
},
],
Expand Down
Loading
Loading