-
Couldn't load subscription status.
- Fork 37
feat: Add file generation wizard for QMK keyboard and keymap files #895
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add new file generation feature to Workbench that allows users to generate keyboard.json and keymap.c files for QMK Firmware through a guided wizard interface. Changes: - Add FileGenerationDialog component with comprehensive form fields - Add "File Generation" button to Workbench header with AutoFixHigh icon - Support for MCU type selection (development board vs integrated) - Dynamic MCU selection based on type (18 dev boards, 44 integrated MCUs) - Form fields for manufacturer, maintainer, keyboard name, vendor/product IDs - Japanese localization for all new UI elements - Small-sized UI components for compact dialog layout 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add FileGenerationDialog with comprehensive form validation - Manufacturer/maintainer name validation (single-byte, 256 chars max) - Keyboard name validation (filename-safe characters) - MCU type selection (development board vs integrated) - Vendor/Product ID validation (4-digit hex) - Dynamic MCU selection based on type - Add file existence checking with overwrite confirmation - Implement service layer architecture for file generation - FileGenerator service with IResult return types - KeyboardJsonTemplate and KeymapCTemplate placeholders - Type-safe FileGenerationTypes with IBuildableFirmwareFileType - Add Japanese localization for all validation messages - Integrate Firebase Auth for auto-populating user information - Add form reset functionality when dialog opens 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add comprehensive KeyboardJsonTemplate with layout-based generation - Implement KeymapCTemplate with default keycode mapping - Extend FileGenerationTypes with layout interfaces and MCUType - Support both development board and integrated MCU configurations - Generate matrix pins and layout definitions automatically 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Define AVAILABLE_LAYOUTS with various keyboard layouts - Include ortho, numpad, traditional layouts with specifications - Add DEFAULT_LAYOUT and getLayoutOption utility function - Support layout-specific key counts and dimensions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add keyboard layout selection dropdown to dialog - Improve MCU type handling with proper type definitions - Add Japanese translation for "Keyboard Layout" - Integrate layout constants for dynamic layout options - Refactor MCU type display names for better UX 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add FileGenerator unit and integration tests - Implement KeyboardJsonTemplate tests with various layouts - Add KeymapCTemplate tests for keycode generation - Test error handling and edge cases - Cover MCU type variations and layout options 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
…ding 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Update test expectations to match the [y,x] matrix coordinate order used in the implementation. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
…fetching - Make generateKeyboardJson, generateKeymapC, and generateFiles async - Update workbench action to handle async file generation - Add proper typing for file mapping 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add McuConstants.ts with development board and integrated MCU lists - Add MCU to bootloader mapping for automatic bootloader selection - Add template_keyboard_json.json as base template for file generation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
…rate file - Convert AVAILABLE_LAYOUTS from complex objects to simple string array - Extract MCU lists from FileGenerationDialog to McuConstants.ts - Update layout selection UI to use simplified layout names - Change default layout to split_3x6_3 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add proper mocking for KeyboardJsonTemplate and KeymapCTemplate - Convert all test methods to async to match implementation - Update integration tests with correct bootloader expectations - Fix type annotations for file filtering - Remove outdated test expectations for removed content 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Replace complex keycode generation logic with direct GitHub fetch - Fetch keymap.c templates from QMK layouts/default directory - Simplify template to return content as-is from GitHub repository - Update tests to use mocking and async patterns - Remove layout-specific keycode generation logic 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add --run flag examples for single-run test execution - Make layout field required in IFileGenerationConfig - Update test command documentation for better developer experience 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
• Add comprehensive file generation wizard for QMK keyboard.json and keymap.c files
• Implement keyboard.json template generation with matrix calculation and MCU configuration
• Add keymap.c template fetching from QMK GitHub repository
• Create MCU constants and bootloader mapping for automatic configuration
• Add comprehensive test coverage with mocking and async patterns
Key Features
Technical Improvements
Files Changed
Test Plan
🤖 Generated with Claude Code