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
A visual Docker build error analyzer that parses build logs, highlights errors, and provides actionable solutions with automatic fix generation.
**Experience Qualities**:
1. **Clarifying** - Takes cryptic Docker logs and transforms them into clear, understandable problem statements
2. **Actionable** - Provides specific, copy-paste ready solutions rather than generic advice
3. **Educational** - Explains the root cause so users learn what went wrong and why
**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.
## Essential Features
### Log Parser & Error Highlighter
- **Functionality**: Paste Docker build logs and automatically extract error information
- **Purpose**: Make sense of lengthy, unformatted build output
- **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
### Smart Solution Generator
- **Functionality**: Analyzes parsed errors and suggests specific fixes with code examples
- **Purpose**: Provide actionable solutions tailored to the exact error type
- **Trigger**: After log is parsed and error identified
- **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
- **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
- **Functionality**: Generate copy-paste ready Dockerfile snippets or package.json modifications
- **Purpose**: Speed up fixing by providing exact code changes needed
- **Trigger**: After solution is displayed
- **Progression**: Solution shown → Click "Generate Fix" → Code snippet created → Copy to clipboard → Apply to project
- **Success criteria**: Generated code is syntactically correct and addresses the identified issue
## Edge Case Handling
- **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
- **Empty Input**: Show helpful placeholder text with example log format
- **Very Long Logs**: Truncate display but maintain full parsing capability
## Design Direction
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.
## Color Selection
A code-focused palette with strong error signaling and calm backgrounds.
- **Primary Color**: `oklch(0.58 0.24 265)` - Tech purple that feels modern and developer-centric
- **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
- **Foreground/Background Pairings**:
- Background (`oklch(0.15 0.02 265)`): Light text `oklch(0.95 0.01 265)` - Ratio 11.2:1 ✓
- Card (`oklch(0.19 0.02 265)`): Light text `oklch(0.95 0.01 265)` - Ratio 9.8:1 ✓
- Accent (`oklch(0.75 0.20 145)`): Dark text `oklch(0.15 0.02 265)` - Ratio 7.5:1 ✓
- Destructive/Error (`oklch(0.60 0.25 25)`): White text `oklch(1 0 0)` - Ratio 5.2:1 ✓
## Font Selection
Monospace for code and logs, clean sans-serif for explanations - reflecting the technical nature while remaining readable.
- **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
# Planning Guide
**Experience Qualities**:
This is a diagnostic tool with log parsing, error highlighting, and solution generation - more than a single-pu
## Essential Features
### Log Parser & Error Highlighter
**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.
## Essential Features
### Log Parser & Error Highlighter
- **Functionality**: Paste Docker build logs and automatically extract error information
- **Purpose**: Make sense of lengthy, unformatted build output
- **Trigger**: User pastes log text into a text area
- **Functionality**: Common Docker build errors with explanations and fixes
- **Success criteria**: Cove
### Fix Code Generator
- **Purpose**: Speed up fixing by providing exact code changes needed
- **Progression**: Solution shown → Click "Generate Fix
- **Empty Input**: Show
- **Foreground/Backgro
- Card (`oklch(0.19 0.02 265)`): Light text `oklch(0.95 0.01 265)` - Ratio 9.8:1 ✓
- Destructive/Error (`oklch(0.60 0.25 25)`): White text `oklch(1 0
## Font Selection
Monospace for code and logs, clean sans-serif for explanations - reflecting the technical nature while remaining reada
- **Typographic Hierarchy**:
- Code/Logs: JetBra
- Solutions expand/collapse smoothly (300ms ease-out)
- Log parsing shows subtle progress indicator during processing
- Textarea (custo
- Button (primary for actions, secondary for copy operations)
- Monospace code blocks with line numbers for generated fixes
- Input: Focused state has bright accent border with subtle glow
- Terminal (for log input)
- CheckCircle (for solutions)
- MagnifyingGlass (for search in knowledge base)
- Stack (for Docker layers)
- **Spacing**:
- Section gaps: gap-8 for major sections, gap-4 for related content
- **Mobile**:
- Collapsible sections for solutions to save space

View File

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

View File

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