You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: resolve squished canvas layout in sensor comparison and refine popular models
- Added `flexShrink: 0` to SensorSize canvas to prevent flexbox from compressing the rendering vertically.
- Allowed the canvas to grow dynamically to its full content height, utilizing overflow-y: auto on the container.
- Removed unused vars and missing hooks dependencies from SensorSize.
- Updated SENSORS data to remove Leica models from 24MP entries and Nikon Z8/Canon from specific Full Frame entries to declutter Pixel Density mode labels.
Copy file name to clipboardExpand all lines: GEMINI.md
+34-28Lines changed: 34 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,54 +5,60 @@ PhotoTools is a high-performance, educational photography application providing
5
5
## Core Design Philosophy
6
6
7
7
-**No Page Scroll**: This is a **hard constraint**. The application MUST fit within 100vh. The page never scrolls; only individual panels (controls, results, sidebars) scroll internally via `overflow-y: auto`.
8
-
-**Vanilla CSS Only**: No external UI libraries (MUI, Shadcn, etc.) or Tailwind CSS. Use CSS Modules and existing design tokens.
9
-
-**Reference Implementation**: The FOV Simulator (`components/tools/fov-simulator/`) is the gold-standard. All new tools must mirror its layout, spacing, and interactive patterns.
8
+
-**Vanilla CSS Only**: No external UI libraries (MUI, Shadcn, etc.) or Tailwind CSS. Use CSS Modules and existing design tokens (CSS custom properties).
9
+
-**Reference Implementation**: The FOV Simulator (`src/app/fov-simulator/`) is the gold-standard. All new tools must mirror its layout, spacing, and interactive patterns.
10
10
-**SEO & Ads**: Layouts must be clean, semantic, and have predictable content regions for ad placement without layout shifts (CLS).
11
11
12
12
## Architecture & Core Systems
13
13
14
-
### 1. Tool Registry (`lib/data/tools.ts`)
14
+
### 1. Tool Registry (`src/lib/data/tools.ts`)
15
15
Central source of truth for all tools.
16
-
-**Status**: `live` (visible in production) or `draft` (hidden in production, accessible via direct URL with `DraftBanner`).
17
-
-**Visibility**: In `development`, all tools are visible regardless of status.
16
+
-**Status**: Each tool has `dev` and `prod` status fields: `'live'`, `'draft'`, or `'disabled'`.
17
+
-**Visibility**: `live`tools are fully visible. `draft` tools are hidden from menus but accessible via direct URL with a `DraftBanner`. `disabled` tools are completely hidden.
18
18
19
-
### 2. Pure Math Modules (`lib/math/`)
20
-
Core photography logic is isolated into pure TypeScript modules.
19
+
### 2. Pure Math Modules (`src/lib/math/`)
20
+
Core photography logic is isolated into pure TypeScript modules (FOV, DOF, exposure, shaders, etc.).
21
21
-**TDD Requirement**: Every math module MUST have a co-located `*.test.ts` file with 100% coverage.
22
22
-**UI Integration**: Components should be thin wrappers around these math functions.
23
23
24
-
### 3. Education System (`lib/data/education/`)
24
+
### 3. Education System (`src/lib/data/education/`)
25
25
Every tool features a `LearnPanel` (right sidebar) defined in `content.ts` and `content2.ts`:
0 commit comments