The earlier articles in this series covered geometry, curved forms, multiple cavities, and material wrap. All of them assumed one thing without saying it: the product is hidden until the box opens.

A window breaks that assumption. The moment you cut a transparent panel into a case, the product becomes permanently visible — and a dozen new constraints arrive with it.

Windowed wooden wine case, upright

A window is not a hole

In a spec, aperture sounds like a cutout. It is not. A hole removes structure; a window removes structure and adds an optical element. Five properties matter, and none of them are length or width:

type WindowAperture = { shape: 'rect' | 'ellipse'; material: 'glass' | 'acrylic'; thicknessMm: number; // 2–3 for glass, 3–5 for acrylic transmissionPct: number; // optical clarity; cheap acrylic yellows sealed: boolean; // gasket vs open edge recessedMm?: number; // set back from the surface, or flush }; 

Choosing glass buys clarity and scratch resistance, and costs weight and fragility. Choosing acrylic buys impact resistance, and costs clarity over time — most acrylic yellows, and a yellowed window on a €200 case is a defect, not a patina.

The binding constraint: the interior is now a stage

This is the part that gets missed, and it is not a materials question at all.

Once the product is visible from outside, the interior layout is no longer free. You can't place a cavity wherever it fits — you have to place it where it reads through the window.

In the case shown, the window sits in the lid, and the interior holds a bottle plus two glasses. That layout only works because the bottle is positioned so its label faces the glass, and the glasses sit in the corners where they frame it rather than block it.

Put that as a rule:

// Every cavity must be at least partially visible through the aperture. for (const cavity of spec.cavities) { if (!overlaps(cavity.projectedRect, spec.aperture.rect)) { errors.push( `cavity "${cavity.id}" is invisible through the window` ); } } 

If your spec can express "hidden from view", the same schema can catch a cavity that no customer will ever see.

Three failure modes that only exist with a window

  1. Misting. A sealed case with any residual humidity fogs the inside of the glass in transit. Either vent it or control the assembly environment — both are process specs, and neither appears in a render.
  2. Breakage under drop. Glass in a lid is the furthest point from the impact edge and the most fragile element in the assembly. A recessed window survives drops that a flush window does not.
  3. Glare. A flush, highly polished window reflects more than it transmits under retail lighting. Recessing it by a couple of millimetres changes what the customer actually sees.

The pattern, five articles in

  • 1 — separate universal fields from variable ones.
  • 2 — geometry lives in a profile.
  • 3 — repeated objects live in a list.
  • 4 — the material owns part of the spec (wrap).
  • 5 (this one) — an optical element constrains the interior layout, not just the surface.

The recurring lesson: every element you add to a box doesn't just add a field — it adds a constraint on the fields you already had.

A window is the clearest example, because it silently converts the inside of your packaging from storage into staging.

The case shown is a windowed wooden wine case from TANCYBOX — glass panel in the lid, molded interior for one bottle and two glasses.