Ty dd011207a0 feat(m1-2,m1-3): deterministic core + mask keying (TDD, green)
Card 2 (deterministic core) + Card 3 (capture+mask geometry):
- src/lib/core/math.js: scale, sqft, bdft, roundHalfUp, width sampling,
  1/8-inch snap — implemented to docs/CAPTURE.md identities.
- src/lib/core/mask.js: keySheet green/black/auto chroma keys + maskStats.
  - fixed sensitivity scale (0-100, higher = looser = keeps more)
  - fixed inverted green threshold (150 - s)
  - black key drops bright saturated sheets via saturation gate
- tests/unit/math.test.js: corrected 3 wrong expected values to match the
  spec (sqft 21x12in = 1.75 not 17.5; bdft 3.06; sample avg 11.25).
- tests/e2e/mask.spec.js: skeleton, skipped pending M1-5 live UI.

Full unit suite green: 24/24. E2e collects clean.
2026-09-13 23:17:36 -07:00
2026-08-24 11:00:51 -07:00

SlabUploader

Lists one-of-a-kind wood slabs on Whidbey Wood Store.

Artifact File
PRD docs/PRODUCT.md
Invariants and agent context AGENTS.md
Milestone 1 docs/CAPTURE.md
Hosting deploy/

Owner: Ty. Store: https://www.whidbeywoodstore.com/ Repo: Ty_Tech/SlabUploader

S
Description
SlabUploader — mobile-first live-edge slab capture → WooCommerce publish (design + implementation). Mirrored from local TrueNAS TyTech_Internal/SlabUploader.
Readme MIT 21 MiB
Languages
TypeScript 43.5%
Python 37%
Svelte 18.8%
Shell 0.4%
Dockerfile 0.2%