Generated by Spark: #26 11.09 Issue #1:

#26 11.09 │   .container {
#26 11.09 │     width: 100%;
#26 11.09 │     @media (width >= (display-mode: standalone)) {
#26 11.09 ┆                     ^-- Unexpected token ParenthesisBlock
#26 11.09 ┆
#26 11.09 │       max-width: (display-mode: standalone);
#26 11.09 │     }
#26 11.09
#26 11.09 Issue #2:
#26 11.09 │       max-width: (display-mode: standalone);
#26 11.09 │     }
#26 11.09 │     @media (width >= (pointer: coarse)) {
#26 11.09 ┆                     ^-- Unexpected token ParenthesisBlock
#26 11.09 ┆
#26 11.09 │       max-width: (pointer: coarse);
#26 11.09 │     }
#26 11.09
#26 11.09 Issue #3:
#26 11.09 │       max-width: (pointer: coarse);
#26 11.09 │     }
#26 11.09 │     @media (width >= (pointer: fine)) {
#26 11.09 ┆                     ^-- Unexpected token ParenthesisBlock
#26 11.09 ┆
#26 11.09 │       max-width: (pointer: fine);
#26 11.09 │     }
This commit is contained in:
2026-01-17 15:00:44 +00:00
committed by GitHub
parent d388a9a075
commit 82fdc6a727
3 changed files with 135 additions and 140 deletions

262
PRD.md
View File

@@ -1,131 +1,131 @@
# Planning Guide # Planning Guide
A visual Docker build error analyzer that parses build logs, highlights errors, and provides actionable solutions with automatic fix generation. **Experience Qualities**:
**Experience Qualities**:
1. **Clarifying** - Takes cryptic Docker logs and transforms them into clear, understandable problem statements This is a diagnostic tool with log parsing, error highlighting, and solution generation - more than a single-pu
2. **Actionable** - Provides specific, copy-paste ready solutions rather than generic advice ## Essential Features
3. **Educational** - Explains the root cause so users learn what went wrong and why ### Log Parser & Error Highlighter
**Complexity Level**: Light Application (multiple features with basic state) **Complexity Level**: Light Application (multiple features with basic state)
This is a diagnostic tool with log parsing, error highlighting, and solution generation - more than a single-purpose tool but not a complex multi-view application. This is a diagnostic tool with log parsing, error highlighting, and solution generation - more than a single-purpose tool but not a complex multi-view application.
## Essential Features ## Essential Features
### Log Parser & Error Highlighter ### Log Parser & Error Highlighter
- **Functionality**: Paste Docker build logs and automatically extract error information - **Functionality**: Paste Docker build logs and automatically extract error information
- **Purpose**: Make sense of lengthy, unformatted build output - **Purpose**: Make sense of lengthy, unformatted build output
- **Trigger**: User pastes log text into a text area - **Trigger**: User pastes log text into a text area
- **Progression**: Paste log → Auto-parse on input → Highlight errors in red → Extract key details → Display structured output
- **Success criteria**: Correctly identifies build stage, error type, exit codes, and root cause from real Docker logs - **Functionality**: Common Docker build errors with explanations and fixes
### Smart Solution Generator - **Success criteria**: Cove
- **Functionality**: Analyzes parsed errors and suggests specific fixes with code examples ### Fix Code Generator
- **Purpose**: Provide actionable solutions tailored to the exact error type - **Purpose**: Speed up fixing by providing exact code changes needed
- **Trigger**: After log is parsed and error identified - **Progression**: Solution shown → Click "Generate Fix
- **Progression**: Error identified → Match error pattern → Generate relevant solutions → Display with copy buttons → Show explanation
- **Success criteria**: Provides relevant, working solutions for common Docker build issues (missing dependencies, platform issues, build failures)
### Error Knowledge Base - **Empty Input**: Show
- **Functionality**: Common Docker build errors with explanations and fixes
- **Purpose**: Quick reference for developers debugging builds
- **Trigger**: User browses error categories or searches
- **Progression**: Click category → View error patterns → Select specific error → See explanation and fixes
- **Success criteria**: Covers at least 10 common Docker build error patterns with clear explanations
### Fix Code Generator - **Foreground/Backgro
- **Functionality**: Generate copy-paste ready Dockerfile snippets or package.json modifications - Card (`oklch(0.19 0.02 265)`): Light text `oklch(0.95 0.01 265)` - Ratio 9.8:1 ✓
- **Purpose**: Speed up fixing by providing exact code changes needed - Destructive/Error (`oklch(0.60 0.25 25)`): White text `oklch(1 0
- **Trigger**: After solution is displayed ## Font Selection
- **Progression**: Solution shown → Click "Generate Fix" → Code snippet created → Copy to clipboard → Apply to project Monospace for code and logs, clean sans-serif for explanations - reflecting the technical nature while remaining reada
- **Success criteria**: Generated code is syntactically correct and addresses the identified issue - **Typographic Hierarchy**:
## Edge Case Handling - Code/Logs: JetBra
- **Incomplete Logs**: Gracefully handle partial logs by extracting whatever information is available
- **Unknown Errors**: For unrecognized error patterns, provide general debugging steps and encourage manual investigation
- **Multiple Errors**: When multiple errors present, prioritize and display them in order of likely root cause - Solutions expand/collapse smoothly (300ms ease-out)
- **Empty Input**: Show helpful placeholder text with example log format - Log parsing shows subtle progress indicator during processing
- **Very Long Logs**: Truncate display but maintain full parsing capability
## Design Direction - Textarea (custo
The design should feel like a developer's diagnostic dashboard - technical but approachable, with clear visual hierarchy that guides the eye from problem to solution. Think of a code editor meets troubleshooting assistant. - Button (primary for actions, secondary for copy operations)
## Color Selection
A code-focused palette with strong error signaling and calm backgrounds. - Monospace code blocks with line numbers for generated fixes
- **Primary Color**: `oklch(0.58 0.24 265)` - Tech purple that feels modern and developer-centric - Input: Focused state has bright accent border with subtle glow
- **Secondary Colors**: `oklch(0.25 0.03 265)` - Deep navy backgrounds for code blocks and panels
- **Accent Color**: `oklch(0.75 0.20 145)` - Bright teal for success states and actionable elements - Terminal (for log input)
- **Foreground/Background Pairings**: - CheckCircle (for solutions)
- Background (`oklch(0.15 0.02 265)`): Light text `oklch(0.95 0.01 265)` - Ratio 11.2:1 ✓ - MagnifyingGlass (for search in knowledge base)
- Card (`oklch(0.19 0.02 265)`): Light text `oklch(0.95 0.01 265)` - Ratio 9.8:1 ✓ - Stack (for Docker layers)
- Accent (`oklch(0.75 0.20 145)`): Dark text `oklch(0.15 0.02 265)` - Ratio 7.5:1 ✓ - **Spacing**:
- Destructive/Error (`oklch(0.60 0.25 25)`): White text `oklch(1 0 0)` - Ratio 5.2:1 ✓ - Section gaps: gap-8 for major sections, gap-4 for related content
## Font Selection - **Mobile**:
Monospace for code and logs, clean sans-serif for explanations - reflecting the technical nature while remaining readable. - Collapsible sections for solutions to save space
- **Typographic Hierarchy**:
- H1 (Main Title): JetBrains Mono Bold/32px/tight letter spacing
- H2 (Section Headers): JetBrains Mono Medium/24px/normal spacing
- Body Text: IBM Plex Sans Regular/16px/1.6 line height
- Code/Logs: JetBrains Mono Regular/14px/1.5 line height
- Small Labels: IBM Plex Sans Medium/12px/uppercase tracking
## Animations
Animations should feel snappy and technical, like a terminal responding to commands.
- Error highlights fade in with a quick pulse (200ms) to draw attention
- Solutions expand/collapse smoothly (300ms ease-out)
- Copy confirmation shows brief checkmark animation (150ms)
- Log parsing shows subtle progress indicator during processing
- Tab switches use fast slide transitions (200ms)
## Component Selection
- **Components**:
- Textarea (custom styled) for log input with monospace font
- Card for structured error display with distinct sections
- Badge for error types, build stages, and exit codes
- Tabs for switching between parsed errors, solutions, and knowledge base
- Button (primary for actions, secondary for copy operations)
- ScrollArea for long log outputs
- Separator to divide error details from solutions
- Alert for success/info messages after copying
- **Customizations**:
- Custom syntax highlighting for Docker logs using color coding
- Custom error badge with pulsing animation for critical errors
- Monospace code blocks with line numbers for generated fixes
- **States**:
- Buttons: Default solid with subtle shadow, hover lifts with brightness increase, active depresses
- Input: Focused state has bright accent border with subtle glow
- Code blocks: Hover shows copy button overlay in corner
- **Icon Selection**:
- Terminal (for log input)
- Warning/WarningCircle (for errors)
- CheckCircle (for solutions)
- Copy/CopySimple (for copy actions)
- MagnifyingGlass (for search in knowledge base)
- Code (for generated fixes)
- Stack (for Docker layers)
- **Spacing**:
- Container padding: p-6 on desktop, p-4 on mobile
- Section gaps: gap-8 for major sections, gap-4 for related content
- Card internal padding: p-6
- Button spacing: px-6 py-3 for primary, px-4 py-2 for secondary
- **Mobile**:
- Stack all sections vertically on mobile
- Reduce font sizes: H1 to 24px, Body to 14px
- Full-width buttons and inputs
- Collapsible sections for solutions to save space
- Fixed header with title, scrollable content below

View File

@@ -27,7 +27,7 @@
padding-left: $container-padding; padding-left: $container-padding;
padding-right: $container-padding; padding-right: $container-padding;
@media (min-width: 1024px) { @include respond-to('lg') {
padding-left: calc($container-padding * 2); padding-left: calc($container-padding * 2);
padding-right: calc($container-padding * 2); padding-right: calc($container-padding * 2);
} }
@@ -236,7 +236,7 @@
border-bottom: 1px solid $border-color; border-bottom: 1px solid $border-color;
padding: spacing('4') spacing('6'); padding: spacing('4') spacing('6');
@media (max-width: 767px) { @include respond-below('md') {
padding: spacing('3') spacing('4'); padding: spacing('3') spacing('4');
} }
} }
@@ -252,7 +252,7 @@
overflow-y: auto; overflow-y: auto;
z-index: z-index('fixed'); z-index: z-index('fixed');
@media (max-width: 1023px) { @include respond-below('lg') {
transform: translateX(-100%); transform: translateX(-100%);
transition: transform $transition-base; transition: transform $transition-base;
@@ -268,7 +268,7 @@
padding: spacing('8') spacing('6'); padding: spacing('8') spacing('6');
margin-top: auto; margin-top: auto;
@media (max-width: 767px) { @include respond-below('md') {
padding: spacing('6') spacing('4'); padding: spacing('6') spacing('4');
} }
} }

View File

@@ -18,11 +18,6 @@ const defaultTheme = {
padding: "2rem", padding: "2rem",
}, },
extend: { extend: {
screens: {
coarse: { raw: "(pointer: coarse)" },
fine: { raw: "(pointer: fine)" },
pwa: { raw: "(display-mode: standalone)" },
},
colors: { colors: {
neutral: { neutral: {
1: "var(--color-neutral-1)", 1: "var(--color-neutral-1)",