Files
2026-05-19 16:05:30 +02:00

2.3 KiB

File Editor - Tasks

Phase 1: Dependencies and Setup

  • Task 1.1: Install dependencies

    • react-simple-code-editor
    • prismjs
    • @types/prismjs
    • Add Prism CSS theme
  • Task 1.2: Create language detection utility

    • Map file extensions to Prism.js language names
    • Handle common extensions (.js, .ts, .py, .md, etc.)
    • Default to plaintext for unknown extensions

Phase 2: Syntax Highlighting

  • Task 2.1: Create SyntaxHighlighter component

    • Use Prism.js to tokenize code
    • Render highlighted HTML
    • Add line numbers
    • Copy-to-clipboard button
  • Task 2.2: Add Prism.js themes

    • Light theme (matches app)
    • Dark theme support
    • CSS custom properties integration
  • Task 2.3: Lazy load language support

    • Only load language grammar when needed
    • Dynamic imports for language files

Phase 3: Edit Mode

  • Task 3.1: Create CodeEditor component

    • Use react-simple-code-editor
    • Prism.js highlighting overlay
    • Line numbers
    • Tab key support
  • Task 3.2: Add keyboard shortcuts

    • Ctrl/Cmd + E: Toggle edit
    • Ctrl/Cmd + S: Save
    • Escape: Cancel
    • Tab: Insert spaces

Phase 4: Commit Dialog

  • Task 4.1: Create CommitDialog component

    • Diff preview (simple comparison)
    • Commit message input (required)
    • Author info display
    • Cancel and Commit buttons
  • Task 4.2: Add diff generation

    • Simple line-by-line diff
    • Show added/removed lines
    • Highlight changes

Phase 5: FileEditor Integration

  • Task 5.1: Create FileEditor component

    • Manage view/edit state
    • Load file content
    • Toggle modes
    • Handle save flow
  • Task 5.2: Replace FileViewer in RepoWorkspace

    • Update imports
    • Pass required props
    • Handle file selection

Phase 6: Styling

  • Task 6.1: Add editor CSS

    • Toolbar styling
    • Editor container
    • Line numbers
    • Syntax colors
    • Commit dialog styles
  • Task 6.2: Add responsive styles

    • Mobile layout
    • Touch-friendly buttons
    • Collapsible toolbar

Phase 7: Quality Gates

  • Task 7.1: Run backend checks

    • ruff
    • mypy
  • Task 7.2: Run frontend checks

    • TypeScript typecheck
    • ESLint
    • Build
  • Task 7.3: Manual testing

    • Test various file types
    • Test commit flow
    • Test error handling
    • Test responsive design