Commit Graph

276 Commits

Author SHA1 Message Date
368b7cde75 refactor(i18n): remove duplicate German files
German content now handled via i18n.js translations module.
Removes index.de.html and app.de.js in favor of single
language-agnostic codebase.
2025-12-30 15:10:57 +01:00
2baf4787ff feat(i18n): integrate translations in app.js
- Import and initialize i18n module
- Add language toggle button handler
- Replace hardcoded strings with t() function calls
- Update dynamic text (progress, success messages, etc.)
2025-12-30 15:10:44 +01:00
c9513e4e33 feat(i18n): add JS-based internationalization
- Create i18n.js module with EN/DE translations
- Add data-i18n attributes to index.html for dynamic text
- Update renderer.js to use translation functions
- Language switcher button replaces link to German page
- Stores preference in localStorage, detects browser language
2025-12-30 15:10:38 +01:00
f4181d6ada feat: close dialogs on backdrop click
Native dialog elements don't close on backdrop click by default.
Added click handlers that check if click target is the dialog itself
(not its children) to enable this expected UX behavior.
2025-12-30 14:54:49 +01:00
7bbd2d9efd docs: expand help dialog with learning modes and editor tools
- Add About section mentioning open-source and no account required
- Add Learning Modes section (CSS, Tailwind, HTML)
- Add Editor Tools section (undo, redo, reset, show expected)
- Add dedicated Keyboard Shortcuts section
- Update Emmet examples to be more practical
2025-12-30 14:54:43 +01:00
d5c572b8de style: widen help dialog from 500px to 600px 2025-12-30 14:54:35 +01:00
4f863f46cf fix: remove redundant Lessons heading from sidebar
The HTML already has an h4 heading for the lessons section with proper
ARIA labeling. The renderer was adding a duplicate h3 heading.
2025-12-30 14:54:28 +01:00
75fd9644c2 fix(i18n): change button text 'Erneut' to 'Erneut anwenden' 2025-12-30 12:39:08 +01:00
15afa72a2f style: add code element styling and accessibility enhancements
- Style code elements in task instructions with white alpha background
- Style code elements in lesson descriptions and hints
- Add skip-link CSS for keyboard navigation
- Add sidebar shift animation when drawer is open
- Add focus styles for sidebar navigation items
2025-12-30 12:25:02 +01:00
71f0381554 feat: improve sidebar keyboard accessibility
- Add skip-to-content link for keyboard users
- Convert module headers and lesson items from divs to buttons
- Add ARIA attributes (aria-expanded, aria-controls, aria-label)
- Add focus return to trigger element when closing sidebar
- Shift main content when sidebar is open using CSS :has()
- Add code element styling in instruction boxes
2025-12-30 12:24:53 +01:00
6ea81a67e9 feat: add CSS lessons matching lecture content (box model, flexbox, responsive, transitions, variables)
- Add 5 CSS modules to lessons.js config (EN)
- Create German translations for all 5 CSS modules
- Add CSS modules to lessons.de.js config
- Fix test to use toBeGreaterThanOrEqual for module count
2025-12-29 15:26:59 +01:00
027232f5e8 fix: add kbd tags to validation messages for clarity
- Wrap HTML element names in <kbd> tags in all validation messages
- Apply consistent formatting to both English and German lessons
- Make hints clearer about which elements/attributes to use
- Fix mobile editor layout overflow issue
2025-12-25 15:55:26 +01:00
2c8d46d592 fix: improve WCAG compliance and mobile editor height
- Add aria-describedby to password inputs for screen readers
- Connect hint text to input via id reference
- Increase mobile editor min-height to 50vh
2025-12-25 15:28:11 +01:00
eb67d733d6 fix: add minimum height for code editor on mobile
- Set min-height: 200px for editor-section
- Set min-height: 150px for editor-content
- Ensures editor is usable on small screens
2025-12-25 15:27:03 +01:00
8949d5e709 feat: add module pill indicator and cross-module navigation
- Add module title pill above lesson title showing current category
- Enable next/prev buttons to cross module boundaries
- Automatically advance to next module when completing last lesson
- Go to last lesson of previous module when navigating back
2025-12-25 15:25:39 +01:00
d2cbf7d381 feat: add 10 new HTML5 lesson modules (EN + DE)
New lesson modules covering native HTML5 features:
- Details & Summary: disclosure widgets
- Progress & Meter: progress bars and gauges
- Datalist: autocomplete inputs
- Data Attributes: custom data-* attributes
- Dialog: native modal dialogs
- Forms with Fieldset: grouped form controls
- Figure & Figcaption: self-contained content
- Tables: structured data with caption, thead, tbody, tfoot
- Marquee: classic scrolling text (deprecated but fun)
- SVG Basics: drawing circles, rectangles, and lines

Each module includes 2-3 progressive lessons with fancy
styling (pastel gradients, 100vh layouts, etc).
2025-12-25 14:23:37 +01:00
ac662ea11d feat: rename success message to "CRISPY!" with Japanese smiley
- Update overlay text: "Perfect Match!" → "CRISPY! ٩(◕‿◕)۶"
- Update success hint in English and German versions
- Fun branding touch matching the app name
2025-12-24 01:43:26 +01:00
46ecbaba68 refactor: replace custom modal with native HTML dialog element
- Convert help and reset modals to native <dialog> elements
- Content is now in HTML, not dynamically generated via JS
- Use dialog.showModal() and dialog.close() native API
- Dialog handles Escape key natively for closing
- Fix list indentation in help dialog with proper padding
- Add styled kbd elements for keyboard shortcuts
- Separate dialogs for help and reset confirmation
- Apply same changes to German version

Benefits:
- Better accessibility (native focus trapping, escape handling)
- Simpler JavaScript (no DOM manipulation for content)
- Content visible in HTML source for easier editing
- Native backdrop styling via ::backdrop
2025-12-24 00:57:24 +01:00
79e7f69414 feat: add language switcher between English and German
- Add language toggle button in header (EN/DE)
- Link directly to the other language version
- Style consistent with existing header buttons
- Accessible with proper aria-labels
2025-12-24 00:51:54 +01:00
81614431e9 feat: add complete German translation of the website
- Add German HTML entry point (index.de.html)
- Add German app.js with translated UI strings (app.de.js)
- Add German lesson config (lessons.de.js)
- Add German translations of all 6 lesson modules:
  - HTML Elements: Block vs Inline
  - HTML Forms: Basic Inputs
  - HTML Forms: Validation
  - CSS: Basic Selectors
  - CSS: Advanced Selectors
  - Tailwind: Basics

All IDs, variable names, and code examples remain in English.
Only user-facing text has been translated to German.
2025-12-24 00:32:07 +01:00
df981f77d7 fix: remove unused validation percentage indicator
The 0% indicator next to the Run button was not providing useful
feedback. Removed from HTML, CSS, and app.js.
2025-12-24 00:17:28 +01:00
34659a1c85 feat: add undo/redo/reset editor tools with keyboard shortcuts
- Add history extension to CodeMirror for undo/redo support
- Ctrl+Z for undo, Ctrl+Shift+Z for redo now work
- Add toolbar buttons: ↶ Undo, ↷ Redo, ⟲ Reset
- Reset button restores editor to initial lesson code
- Add .btn-icon and .editor-tools CSS styles
2025-12-23 23:14:32 +01:00
be5f71bea5 fix: hide original textarea to prevent browser form restoration artifact
- Add display:none to initial textarea (CodeMirror replaces it)
- Add autocomplete=off to prevent browser from restoring old form values
2025-12-22 10:06:55 +01:00
8ee6f3dd0a fix: resolve initialization bugs breaking level indicator and expected preview
- Fix renderLesson to handle null inputEl (CodeMirror replaces textarea)
- Fix renderExpectedPreview to use 'solution' property instead of 'solutionCode'
- These fixes restore level indicator, expected preview, and auto-run functionality
2025-12-22 10:04:41 +01:00
0169c8c9a9 fix: use One Dark theme for CodeMirror syntax highlighting
- Replace custom highlight styles with @codemirror/theme-one-dark
- Cleaner implementation with official CodeMirror theme
- Keep custom font and padding overrides
2025-12-22 01:17:10 +01:00
238853d2e1 feat: add CodeMirror 6 editor with Emmet support
- Replace textarea with CodeMirror 6 for syntax highlighting
- Add Emmet abbreviation expansion (Tab to expand)
- Support HTML and CSS language modes with autocomplete
- Add dark theme matching app design
- Tab indentation with Shift-Tab for outdent
- Update help modal with Emmet shortcuts
2025-12-21 23:37:14 +01:00
60017aa1ba refactor: redesign layout to Flexbox Froggy style with slide-out sidebar
- Implement 50/50 split layout (left: instructions + editor, right: preview)
- Replace always-visible sidebar with slide-out drawer menu
- Move footer, progress, and settings into sidebar
- Add toggleable expected result overlay (hidden by default)
- Create new hint system with step progress indicators
- Add ghost button styles for modal and text button for sidebar reset
- Fix HTML lesson task instruction and typo ("important" not "importing")
- Add padding to preview frames to prevent corner clipping
- Optimize layout for iPadOS and tablet devices
2025-12-21 23:20:07 +01:00
50c4d51523 feat: add HTML lessons mode and side-by-side comparison UI
- Add HTML mode support with new validation types (element_exists,
  element_count, attribute_value, element_text, parent_child, sibling)
- Create 3 HTML lesson modules: Elements, Forms Basic, Forms Validation
- Implement side-by-side preview comparison (Your Output vs Expected)
- Add merge animation with "Perfect Match!" overlay on validation success
- Render expected output from solutionCode field in lesson JSON
- Update schema to support HTML mode and solutionCode
- Reorder modules: HTML first, then CSS, then Tailwind
- Update tests for new functionality
2025-12-21 22:12:00 +01:00
Michael Czechowski
671b6cc813 refactor: clean up unused lesson imports and improve code consistency 2025-06-10 23:45:46 +02:00
Michael Czechowski
0f55403b86 fix: update validation message for clarity and consistency 2025-06-05 23:38:00 +02:00
Michael Czechowski
0ff032439f fix: update success background color for improved visibility and remove unused color variables 2025-06-05 23:37:25 +02:00
Michael Czechowski
72ad162a73 feat: update instruction styles with new colors and enhanced readability 2025-06-05 23:31:19 +02:00
Michael Czechowski
7c9daa413c feat: enhance LessonEngine to manage user progress and code storage 2025-06-05 23:31:13 +02:00
Michael Czechowski
e30bb40b1a feat: enhance lesson functionality with user code storage and progress tracking 2025-06-05 14:05:35 +02:00
10fce10033 feat: implement tailwind validations and basic example 2025-06-01 22:34:55 +02:00
Michael Czechowski
6e4b3a141c wip 2025-05-23 14:35:05 +02:00
Michael Czechowski
17da3eb647 feat: add CSS carousels module and update lesson imports 2025-05-23 08:12:23 +02:00
Michael Czechowski
5b3068898d feat: add advanced selectors module and update lesson imports accordingly and release 2025-05-23 08:05:00 +02:00
Michael Czechowski
6995ab94e4 feat: add extended CSS examples and update lesson imports 2025-05-23 07:47:48 +02:00
Michael Czechowski
5a8df62c2c feat: add footer with links to project repository and author website 2025-05-20 19:42:17 +02:00
Michael Czechowski
9a562c46fd feat: make sure to scroll to the top when navigating to lesson 2025-05-20 18:49:39 +02:00
Michael Czechowski
868015f344 fix: update scroll behavior for lesson navigation and adjust lesson description width for better scrolling 2025-05-20 18:29:40 +02:00
Michael Czechowski
3cb2b9c412 fix: correct casing in validation message for consistency 2025-05-20 02:18:10 +02:00
Michael Czechowski
dcb4f77c09 style: organize CSS with section headers and sort rules 2025-05-20 01:51:50 +02:00
Michael Czechowski
0065cf497e feat: enhance module list rendering with expandable lessons and active lesson tracking 2025-05-20 01:43:57 +02:00
Michael Czechowski
7ffd6f92a0 fix: adjust hamburger menu animation for improved visual effect 2025-05-20 00:54:34 +02:00
Michael Czechowski
edf737092a feat: implement responsive hamburger menu and enhance header layout 2025-05-20 00:52:23 +02:00
Michael Czechowski
c00cac389c feat: update progress bar styling to increase height and change background color 2025-05-20 00:39:54 +02:00
Michael Czechowski
0f368b7373 feat: add toggle switch for disabling error feedback and persist user settings 2025-05-20 00:37:36 +02:00
Michael Czechowski
7cdbf0807f feat: update validation message to enhance user feedback 2025-05-20 00:26:47 +02:00