12 Commits

Author SHA1 Message Date
alexei.dolgolyov 8c61cd182e feat(furniture): add scratching post with simple, tree, condo, wall variants
New SCRATCHING_POST type under a new "pets" category with 8 presets
covering single posts, multi-tier cat trees, enclosed condos, and
wall-mounted scratcher pads. Includes 3D meshes, i18n labels (en/ru),
and palette integration.
2026-04-16 14:59:04 +03:00
alexei.dolgolyov c808bf1add feat(furniture): nightstand legs, bookcase columns/drawers, AC unit LG style, soundbars, wood-cube sconce
- NIGHTSTAND: optional legs with adjustable height (capped at 60% of total height)
- BOOKCASE: shelfColumns with vertical dividers, per-cell drawer fronts with handles,
  z-fighting fix between dividers and back panel, stale drawerCells pruned on grid shrink
- AC_UNIT: new 'lg' style with dark vent, grille lines, deflector flap, LG accent
- SPEAKER: new 'soundbar' variant (90/110/140cm) with grille, driver cones, LED strip;
  SpeakerMesh split into dispatcher + SpeakerCabinetMesh to keep hook order stable
- Wall light: new 'wood-cube' style (wooden block sconce with top/bottom glow)
- PropertiesPanel: tf() helper replaces repeated i18n.exists fallbacks; inline checkbox
  styles consolidated into styles.checkboxLabel
- Translations: en/ru entries for new property keys
2026-04-16 03:06:08 +03:00
alexei.dolgolyov 5fbd382120 feat(export): tighter 3D framing, readable projection fonts, cleaner per-wall filters
- Drop file size: jsPDF compression + 3D page encoded as JPEG (0.95) on a
  white composite canvas (no more black background), PDF pixelRatio=1.
- Tighten 3D export framing: new 'birds-eye-export' preset derives camera
  height from Three.js vertical FOV at the wall-top plane so the room
  fills the page without the interactive preset's extra headroom.
- Thread canvas + preset trigger through Room3DView props so the export
  dialog can always find the live canvas and snap the camera even when
  the view was lazy-mounted by the dialog itself.
- 2D capture on PDF uses an A4-landscape-matched aspect (1820x1200) so
  the image fills the page box without large empty bands.
- Projection exports: per-wall hidden renderer mounts every wall at
  native aspect with a right/bottom overflow budget for label headroom;
  fontScale prop (passed as 2 from the export block) keeps Konva text
  legible at high export resolution without affecting interactive view.
- Filter out annotations attached to electrical items from the 2D view
  and exported images (they belong to the wall-projection context).
- Projection filters: assign furniture and orphan electrical items to a
  single 'home' wall (minimum edge / perpendicular distance) so a corner
  item stops double-projecting onto both neighbouring walls; stale
  wallIds fall back to the proximity path instead of being dropped.
- Annotate tool works in projection view: clicking creates a wall-
  anchored annotation rendered next to the wall at the click position.
- Outlet projection coord labels now show 3 decimal places.
- PDF page titles use a Unicode font (DejaVu Sans) so Cyrillic renders
  correctly; wall projections get one dedicated landscape page each at
  native aspect; pdf aspect-preserving addImage helper centres images
  horizontally and top-aligns vertically.
2026-04-14 21:00:39 +03:00
alexei.dolgolyov 68d2b5e3b0 feat(export): default-view option, Cyrillic PDF, per-wall projection pages
- Add 'Default View' scope to PNG export (fit-to-room for 2D, birds-eye for 3D)
- PDF now includes 3D top view, 2D default view, and every wall projection
- Embed DejaVu Sans TTF so Cyrillic room names render correctly in PDFs
- Preserve image aspect ratios and top-align on PDF pages
- Render each wall projection on its own PDF page at native aspect
- Mount a hidden per-wall projection renderer during export so all walls
  are captured even when the visible panel is in tab mode
- Keep 3D view mounted off-screen once requested so PDF can always snap
  to birds-eye without a visible view switch
- Outlet projection coordinate labels now show 3 decimal places
2026-04-14 18:49:26 +03:00
alexei.dolgolyov ea4fb5c6c9 docs: add project README 2026-04-14 03:10:07 +03:00
alexei.dolgolyov 108f1ac2c7 fix: allow panning in projection view when mouse is outside room boundaries
The background Rect was intercepting mouse events, causing the pan
hit-test to treat it as an interactive item and skip panning. Adding
listening={false} lets clicks pass through to the Stage.
2026-04-13 11:39:09 +03:00
alexei.dolgolyov 5929ba6bbb feat: add WALL_CABLE electrical type and room outlet/switch count stats
Add wall cable item — a bare cable exit from the wall for direct
consumer connection without an outlet. Includes 2D symbol (circle +
cable stub), 3D mesh (round plate + protruding cable), and palette entry.

Also add outlet and switch count metrics to the room info section in
the properties panel.
2026-04-13 11:16:54 +03:00
alexei.dolgolyov 521ea5e85b feat: add outlet direction (horizontal/vertical), wall light styles, floor textures, and stretch ceiling
- Add configurable outlet direction (horizontal/vertical) stored in metadata
- Add wall light style variants (classic, pendant-globe, sconce-up, sconce-down)
- Add PBR floor textures including natural oak
- Add stretch ceiling offset support with DB migration
- Add furniture surface texture selection
- Add canvas theme colors utility for dark mode support
- Update projection views with improved rendering
- Add EN and RU translations for all new properties
2026-04-12 20:52:49 +03:00
alexei.dolgolyov d8a914bf2a feat: editor improvements and collapsible sidebars
Add collapse/expand toggle for the AppShell navigation sidebar and the
editor properties panel (both persisted to localStorage). Bundles other
in-progress editor work including position anchors, outlet sizing, PBR
textures, window slope/frame depth, curtain metadata, and various 2D/3D
rendering tweaks.
2026-04-08 12:27:57 +03:00
alexei.dolgolyov aa8a874348 feat: merge house plan maker application
Complete house/apartment floor plan editor with 2D/3D views,
wall projections, i18n (EN/RU), dark mode, and full editing suite.
2026-04-05 22:34:17 +03:00
alexei.dolgolyov af8b9fe00f feat: complete house plan maker application
Full-featured house/apartment floor plan editor with:

- Turborepo monorepo (React/Vite client, Fastify/Prisma server, shared Zod schemas)
- 2D room editor with walls, doors, windows, furniture, electrical elements
- 3D room preview with Three.js (auto-hide nearest walls, bird's eye default)
- Wall projection views with interactive drag (elevation, position)
- Apartment floor plan view with room positioning
- Copy/paste, alignment tools, measurement tool, annotations
- Item-attached annotations with leader lines (visible on projections)
- Door open direction (LEFT/RIGHT/INWARD/OUTWARD) with swing arc
- Floor type textures (wood, tile, concrete, laminate, herringbone)
- Wall color picker for 3D view
- Furniture: bed, desk, wardrobe, sofa, table, chair, shelf, nightstand, dresser, bookcase, TV (with stand toggle), AC unit
- Furniture elevation support (wall-mounted items)
- Auto-save with dirty state tracking, batch save API
- Rotation-aware collision detection (SAT/OBB) with 3D elevation check
- Rotation-aware hit testing
- i18n (English/Russian) with locale-aware number formatting
- Dark mode with system preference detection
- Undo/redo, keyboard shortcuts, scale bar
- PDF/PNG/JSON export and JSON import
- Focus trap modal, toast notifications, tooltips
- Responsive layout with overlay palettes
2026-04-05 22:34:03 +03:00
alexei.dolgolyov b84807bbdb docs: add project plan prompt 2026-04-05 11:51:39 +03:00