Enhance documentation for E2E GUI testing framework and Tile16 editor palette system
- Added comprehensive sections on the E2E GUI testing framework in `A1-testing-guide.md`, detailing architecture, test writing, and execution. - Introduced a new document `E7-tile16-editor-palette-system.md` outlining the redesign and implementation of the Tile16 editor palette system, including problem analysis, solution architecture, and UI/UX refactoring. - Updated `E6-z3ed-cli-design.md` with recent refactoring improvements and code quality enhancements for the z3ed CLI tool. - Expanded the YAZE development tracker in `yaze.org` to reflect ongoing issues and features related to the Tile16 editor and E2E testing.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# YAZE Tre Theme - Enhanced Edition
|
||||
# yaze Tre Theme - Enhanced Edition
|
||||
# Premium theme resource edition with improved colors and contrast
|
||||
name=YAZE Tre
|
||||
description=Enhanced YAZE theme with improved readability and modern colors
|
||||
|
||||
@@ -158,6 +158,97 @@ TEST(CpuTest, InstructionExecution) {
|
||||
- **Performance tests**: May vary by system
|
||||
- **GUI components**: May require display context
|
||||
|
||||
## E2E GUI Testing Framework
|
||||
|
||||
### Overview
|
||||
|
||||
An agent-friendly, end-to-end testing framework built on `ImGuiTestEngine` to automate UI interaction testing for the YAZE editor.
|
||||
|
||||
### Architecture
|
||||
|
||||
**Test Execution Flow**:
|
||||
1. `z3ed test-gui` command invokes the modified `yaze_test` executable
|
||||
2. `yaze_test` initializes an application window and `ImGuiTestEngine`
|
||||
3. Tests are registered and executed against the live GUI
|
||||
4. Results are reported back with detailed logs and assertions
|
||||
|
||||
**Key Components**:
|
||||
- `test/yaze_test.cc` - Main test executable with GUI initialization
|
||||
- `test/e2e/framework_smoke_test.cc` - Basic infrastructure verification
|
||||
- `test/e2e/canvas_selection_test.cc` - Canvas interaction tests
|
||||
- `test/test_utils.h` - High-level action wrappers (LoadRomInTest, OpenEditorInTest, etc.)
|
||||
|
||||
### Writing E2E Tests
|
||||
|
||||
```cpp
|
||||
// Example: Canvas selection test
|
||||
#include "test/test_utils.h"
|
||||
|
||||
void RegisterCanvasSelectionTest() {
|
||||
ImGuiTestEngine* engine = ImGuiTestEngine_GetCurrentContext();
|
||||
|
||||
ImGuiTest* t = IM_REGISTER_TEST(engine, "e2e", "canvas_selection");
|
||||
t->GuiFunc = [](ImGuiTestContext* ctx) {
|
||||
// Load ROM and open editor
|
||||
LoadRomInTest(ctx, "zelda3.sfc");
|
||||
OpenEditorInTest(ctx, "Overworld Editor");
|
||||
|
||||
// Perform actions
|
||||
ctx->MouseMove("##OverworldCanvas");
|
||||
ctx->MouseClick(ImGuiMouseButton_Left);
|
||||
ctx->KeyPress(ImGuiMod_Ctrl | ImGuiKey_C); // Copy
|
||||
|
||||
// Assertions
|
||||
IM_CHECK(VerifyTileData(ctx, expected_data));
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### Helper Functions
|
||||
|
||||
**test/test_utils.h** provides high-level wrappers:
|
||||
- `LoadRomInTest(ctx, rom_path)` - Load ROM file in test context
|
||||
- `OpenEditorInTest(ctx, editor_name)` - Open specific editor
|
||||
- `VerifyTileData(ctx, expected)` - Assert tile data correctness
|
||||
- `WaitForRender(ctx)` - Wait for rendering to complete
|
||||
|
||||
### Running GUI Tests
|
||||
|
||||
```bash
|
||||
# Run all E2E tests
|
||||
z3ed test-gui --rom zelda3.sfc --test all
|
||||
|
||||
# Run specific test suite
|
||||
z3ed test-gui --rom zelda3.sfc --test canvas_selection
|
||||
|
||||
# Run in headless mode (CI)
|
||||
z3ed test-gui --rom zelda3.sfc --test all --headless
|
||||
```
|
||||
|
||||
### Test Categories for E2E
|
||||
|
||||
- **Smoke Tests**: Basic functionality verification (window opens, ROM loads)
|
||||
- **Canvas Tests**: Drawing, selection, copy/paste operations
|
||||
- **Editor Tests**: Specific editor workflows (Overworld, Dungeon, Graphics)
|
||||
- **Integration Tests**: Multi-editor workflows and data persistence
|
||||
|
||||
### Development Status
|
||||
|
||||
- ✅ **Phase 1**: Core infrastructure & test execution flow
|
||||
- ✅ **Phase 2**: Agent-friendly test definition & interaction
|
||||
- ✅ **Phase 3**: Initial test case - Canvas rectangle selection
|
||||
- ✅ **Phase 4**: Build and verify infrastructure
|
||||
- ⏳ **Phase 5**: Expand test coverage and fix identified bugs
|
||||
- ⏳ **Phase 6**: CI/CD integration with headless mode
|
||||
|
||||
### Best Practices
|
||||
|
||||
1. **Keep tests deterministic** - Use fixed delays and wait for specific states
|
||||
2. **Use high-level helpers** - Abstract ImGuiTestEngine complexity
|
||||
3. **Test user workflows** - Focus on real user interactions, not internal state
|
||||
4. **Verify visually** - Check rendered output, not just data structures
|
||||
5. **Clean up state** - Reset between tests to prevent interference
|
||||
|
||||
## Performance and Maintenance
|
||||
|
||||
### Regular Review
|
||||
@@ -171,3 +262,9 @@ TEST(CpuTest, InstructionExecution) {
|
||||
- **Identify slow tests** for optimization or recategorization
|
||||
- **Monitor CI resource usage** and adjust parallelism
|
||||
- **Benchmark critical path tests** for performance regression
|
||||
|
||||
### E2E Test Maintenance
|
||||
- **Update test helpers** as UI components change
|
||||
- **Maintain test ROM files** for consistent test data
|
||||
- **Review failed tests** for UI changes vs. actual bugs
|
||||
- **Expand coverage** for new features and bug fixes
|
||||
|
||||
@@ -235,3 +235,104 @@ Based on the current architecture, several UX improvements are planned:
|
||||
- **Context-Aware Help**: Help text will adapt based on current ROM state and available commands.
|
||||
- **Undo/Redo System**: Command history tracking for safer experimentation.
|
||||
- **Batch Operations**: Support for executing multiple related commands as a single operation.
|
||||
|
||||
## 10. Implementation Status and Code Quality
|
||||
|
||||
### 10.1. Recent Refactoring Improvements (January 2025)
|
||||
|
||||
The z3ed CLI underwent significant refactoring to improve code quality, fix linting errors, and enhance maintainability.
|
||||
|
||||
**Issues Resolved**:
|
||||
- ✅ **Missing Headers**: Added proper forward declarations for `ftxui::ScreenInteractive` and `TuiComponent`
|
||||
- ✅ **Include Path Issues**: Standardized all includes to use `cli/` prefix instead of `src/cli/`
|
||||
- ✅ **Namespace Conflicts**: Resolved namespace pollution issues by properly organizing includes
|
||||
- ✅ **Duplicate Definitions**: Removed duplicate `CommandInfo` and `ModernCLI` definitions
|
||||
- ✅ **FLAGS_rom Multiple Definitions**: Changed duplicate `ABSL_FLAG` declarations to `ABSL_DECLARE_FLAG`
|
||||
|
||||
**Build System Improvements**:
|
||||
- **CMake Configuration**: Cleaned up `z3ed.cmake` to properly configure all source files
|
||||
- **Dependency Management**: Added proper includes for `absl/flags/declare.h` where needed
|
||||
- **Conditional Compilation**: Properly wrapped JSON/HTTP library usage with `#ifdef YAZE_WITH_JSON`
|
||||
|
||||
**Architecture Improvements**:
|
||||
- Removed `std::unique_ptr<TuiComponent>` members from command handlers to avoid incomplete type issues
|
||||
- Simplified constructors and `RunTUI` methods
|
||||
- Maintained clean separation between CLI and TUI execution paths
|
||||
|
||||
### 10.2. File Organization
|
||||
|
||||
```
|
||||
src/cli/
|
||||
├── cli_main.cc (Entry point - defines FLAGS)
|
||||
├── modern_cli.{h,cc} (Command registry and dispatch)
|
||||
├── tui.{h,cc} (TUI components and layout management)
|
||||
├── z3ed.{h,cc} (Command handler base classes)
|
||||
├── service/
|
||||
│ ├── ai_service.{h,cc} (AI service interface)
|
||||
│ └── gemini_ai_service.{h,cc} (Gemini API implementation)
|
||||
├── handlers/ (Command implementations)
|
||||
│ ├── agent.cc
|
||||
│ ├── command_palette.cc
|
||||
│ ├── compress.cc
|
||||
│ ├── dungeon.cc
|
||||
│ ├── gfx.cc
|
||||
│ ├── overworld.cc
|
||||
│ ├── palette.cc
|
||||
│ ├── patch.cc
|
||||
│ ├── project.cc
|
||||
│ ├── rom.cc
|
||||
│ ├── sprite.cc
|
||||
│ └── tile16_transfer.cc
|
||||
└── tui/ (TUI component implementations)
|
||||
├── tui_component.h
|
||||
├── asar_patch.{h,cc}
|
||||
├── palette_editor.{h,cc}
|
||||
└── command_palette.{h,cc}
|
||||
```
|
||||
|
||||
### 10.3. Code Quality Improvements
|
||||
|
||||
**Removed Problematic Patterns**:
|
||||
- Eliminated returning raw pointers to temporary objects in `GetCommandHandler`
|
||||
- Used `static` storage for handlers to ensure valid lifetimes
|
||||
- Proper const-reference usage to avoid unnecessary copies
|
||||
|
||||
**Standardized Error Handling**:
|
||||
- Consistent use of `absl::Status` return types
|
||||
- Proper status checking with `RETURN_IF_ERROR` macro
|
||||
- Clear error messages for user-facing commands
|
||||
|
||||
**API Corrections**:
|
||||
- Fixed `Bitmap::bpp()` → `Bitmap::depth()`
|
||||
- Fixed `PaletteGroup::set_palette()` → direct pointer manipulation
|
||||
- Fixed `Bitmap::mutable_vector()` → `Bitmap::set_data()`
|
||||
|
||||
### 10.4. TUI Component System
|
||||
|
||||
**Implemented Components**:
|
||||
- `TuiComponent` interface for consistent UI components
|
||||
- `ApplyAsarPatchComponent` - Modular patch application UI
|
||||
- `PaletteEditorComponent` - Interactive palette editing
|
||||
- `CommandPaletteComponent` - Command search and execution
|
||||
|
||||
**Standardized Patterns**:
|
||||
- Consistent navigation across all TUI screens
|
||||
- Centralized error handling with dedicated error screen
|
||||
- Direct component function calls instead of handler indirection
|
||||
|
||||
### 10.5. Known Limitations
|
||||
|
||||
**Remaining Warnings (Non-Critical)**:
|
||||
- Unused parameter warnings (mostly for stub implementations)
|
||||
- Nodiscard warnings for status returns that are logged elsewhere
|
||||
- Copy-construction warnings (minor performance considerations)
|
||||
- Virtual destructor warnings in third-party zelda3 classes
|
||||
|
||||
### 10.6. Future Code Quality Goals
|
||||
|
||||
1. **Complete TUI Components**: Finish implementing all planned TUI components with full functionality
|
||||
2. **Error Handling**: Add proper status checking for all `LoadFromFile` calls
|
||||
3. **API Methods**: Implement missing ROM validation methods
|
||||
4. **JSON Integration**: Complete HTTP/JSON library integration for Gemini AI service
|
||||
5. **Performance**: Address copy-construction warnings by using const references
|
||||
6. **Testing**: Expand unit test coverage for command handlers
|
||||
|
||||
362
docs/E7-tile16-editor-palette-system.md
Normal file
362
docs/E7-tile16-editor-palette-system.md
Normal file
@@ -0,0 +1,362 @@
|
||||
# Tile16 Editor Palette System
|
||||
|
||||
**Status: Work in Progress** - Documentation for the ongoing Tile16 Editor palette system redesign, implementation, and refactoring improvements.
|
||||
|
||||
## Executive Summary
|
||||
|
||||
The tile16 editor palette system is undergoing a complete redesign to resolve critical crashes and ensure proper color alignment between the tile16 editor and overworld display. Significant progress has been made addressing fundamental architectural issues with palette mapping, implementing crash fixes, and creating an improved three-column layout. However, palette handling for the tile8 source canvas and palette button functionality remain works in progress.
|
||||
|
||||
## Problem Analysis
|
||||
|
||||
### Critical Issues Identified
|
||||
|
||||
1. **SIGBUS Crash in SnesColor::rgb()**
|
||||
- **Root Cause**: `SetPaletteWithTransparent()` method used incorrect `index * 7` calculation
|
||||
- **Impact**: Crashes when selecting palette buttons 4-7 due to out-of-bounds memory access
|
||||
- **Location**: `bitmap.cc:371` - `start_index = index * 7`
|
||||
|
||||
2. **Fundamental Architecture Misunderstanding**
|
||||
- **Root Cause**: Attempting to use `SetPaletteWithTransparent()` instead of `SetPalette()`
|
||||
- **Impact**: Broke the 256-color palette system that the overworld relies on
|
||||
- **Reality**: Overworld system uses complete 256-color palettes with `SetPalette()`
|
||||
|
||||
3. **Color Mapping Misunderstanding**
|
||||
- **Root Cause**: Confusion about how color mapping works in the graphics system
|
||||
- **Impact**: Incorrect palette handling in tile16 editor
|
||||
- **Reality**: Pixel data already contains correct color indices for the 256-color palette
|
||||
|
||||
## Solution Architecture
|
||||
|
||||
### Core Design Principles
|
||||
|
||||
1. **Use Same Palette System as Overworld**: Use `SetPalette()` with complete 256-color palette
|
||||
2. **Direct Color Mapping**: The pixel data in graphics already contains correct color indices that map to the 256-color palette
|
||||
3. **Proper Bounds Checking**: Prevent out-of-bounds memory access in palette operations
|
||||
4. **Consistent Architecture**: Match overworld editor's palette handling exactly
|
||||
|
||||
### 256-Color Overworld Palette Structure
|
||||
|
||||
Based on analysis of `SetColorsPalette()` in `overworld_map.cc`:
|
||||
|
||||
```
|
||||
Row 0-1: HUD palette (32 colors) - Slots 0-31
|
||||
Row 2-6: MAIN palette (35 colors) - Slots 32-87 (rows 2-6, cols 1-7)
|
||||
Row 7: ANIMATED palette (7 colors) - Slots 112-118 (row 7, cols 1-7)
|
||||
Row 8: Sprite AUX1 + AUX3 (14 colors) - Slots 128-141
|
||||
Row 9-12: Global sprites (60 colors) - Slots 144-203
|
||||
Row 13: Sprite palette 1 (7 colors) - Slots 208-214
|
||||
Row 14: Sprite palette 2 (7 colors) - Slots 224-230
|
||||
Row 15: Armor palettes (15 colors) - Slots 240-254
|
||||
|
||||
Right side (cols 9-15):
|
||||
Row 2-4: AUX1 palette (21 colors) - Slots 136-151
|
||||
Row 5-7: AUX2 palette (21 colors) - Slots 152-167
|
||||
```
|
||||
|
||||
### Sheet-to-Palette Mapping
|
||||
|
||||
```
|
||||
Sheet 0,3,4: → AUX1 region (slots 136-151)
|
||||
Sheet 5,6: → AUX2 region (slots 152-167)
|
||||
Sheet 1,2: → MAIN region (slots 32-87)
|
||||
Sheet 7: → ANIMATED region (slots 112-118)
|
||||
```
|
||||
|
||||
### Palette Button Mapping
|
||||
|
||||
| Button | Sheet 0,3,4 (AUX1) | Sheet 1,2 (MAIN) | Sheet 5,6 (AUX2) | Sheet 7 (ANIMATED) |
|
||||
|--------|---------------------|-------------------|-------------------|---------------------|
|
||||
| 0 | 136 | 32 | 152 | 112 |
|
||||
| 1 | 138 | 39 | 154 | 113 |
|
||||
| 2 | 140 | 46 | 156 | 114 |
|
||||
| 3 | 142 | 53 | 158 | 115 |
|
||||
| 4 | 144 | 60 | 160 | 116 |
|
||||
| 5 | 146 | 67 | 162 | 117 |
|
||||
| 6 | 148 | 74 | 164 | 118 |
|
||||
| 7 | 150 | 81 | 166 | 119 |
|
||||
|
||||
## Implementation Details
|
||||
|
||||
### 1. Fixed SetPaletteWithTransparent Method
|
||||
|
||||
**File**: `src/app/gfx/bitmap.cc`
|
||||
|
||||
**Before**:
|
||||
```cpp
|
||||
auto start_index = index * 7; // WRONG: Creates invalid indices for buttons 4-7
|
||||
```
|
||||
|
||||
**After**:
|
||||
```cpp
|
||||
// Extract 8-color sub-palette starting at the specified index
|
||||
// Always start with transparent color (index 0)
|
||||
colors.push_back(ImVec4(0, 0, 0, 0));
|
||||
// Extract up to 7 colors from the palette starting at index
|
||||
for (size_t i = 0; i < 7 && (index + i) < palette.size(); ++i) {
|
||||
auto &pal_color = palette[index + i];
|
||||
colors.push_back(pal_color.rgb());
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Corrected Tile16 Editor Palette System
|
||||
|
||||
**File**: `src/app/editor/overworld/tile16_editor.cc`
|
||||
|
||||
**Before**:
|
||||
```cpp
|
||||
// WRONG: Trying to extract 8-color sub-palettes
|
||||
current_gfx_individual_[i].SetPaletteWithTransparent(display_palette, base_palette_slot, 8);
|
||||
```
|
||||
|
||||
**After**:
|
||||
```cpp
|
||||
// CORRECT: Use complete 256-color palette (same as overworld system)
|
||||
// The pixel data already contains correct color indices for the 256-color palette
|
||||
current_gfx_individual_[i].SetPalette(display_palette);
|
||||
```
|
||||
|
||||
### 3. Palette Coordination Flow
|
||||
|
||||
```
|
||||
Overworld System:
|
||||
ProcessGraphicsBuffer() → adds 0x88 offset to sheets 0,3,4,5
|
||||
BuildTiles16Gfx() → combines with palette info
|
||||
current_gfx_bmp_ → contains properly offset pixel data
|
||||
|
||||
Tile16 Editor:
|
||||
Initialize() → receives current_gfx_bmp_ with correct data
|
||||
LoadTile8() → extracts tiles with existing pixel values
|
||||
SetPalette() → applies complete 256-color palette
|
||||
Display → correct colors shown automatically
|
||||
```
|
||||
|
||||
## UI/UX Refactoring
|
||||
|
||||
### New Three-Column Layout
|
||||
|
||||
The tile16 editor layout was completely restructured into a unified 3-column table for better space utilization:
|
||||
|
||||
**Column 1: Tile16 Blockset** (35% width)
|
||||
- Complete 512-tile blockset display
|
||||
- Integrated zoom slider (0.5x - 4.0x)
|
||||
- Zoom in/out buttons for quick adjustments
|
||||
- Click to select tiles for editing
|
||||
- Full vertical scrolling support
|
||||
|
||||
**Column 2: Tile8 Source Tileset** (35% width)
|
||||
- All 8x8 source tiles
|
||||
- Palette group selector (OW Main, OW Aux, etc.)
|
||||
- Integrated zoom slider (1.0x - 8.0x)
|
||||
- Click to select tiles for painting
|
||||
- Full vertical scrolling support
|
||||
|
||||
**Column 3: Editor & Controls** (30% width)
|
||||
- Tile16 editor canvas with dynamic zoom (2.0x - 8.0x)
|
||||
- Canvas size adjusts automatically with zoom level
|
||||
- All controls in compact vertical layout:
|
||||
- Tile8 preview and ID
|
||||
- Flip controls (X, Y, Priority)
|
||||
- Palette selector (8 buttons)
|
||||
- Action buttons (Clear, Copy, Paste)
|
||||
- Save/Discard changes
|
||||
- Undo button
|
||||
- Advanced controls (collapsible)
|
||||
- Debug information (collapsible)
|
||||
|
||||
**Benefits**:
|
||||
- Better space utilization - all three main components visible simultaneously
|
||||
- Improved workflow - blockset, source tiles, and editor all in one view
|
||||
- Resizable columns allow users to adjust layout to preference
|
||||
|
||||
### Canvas Context Menu Fixes
|
||||
|
||||
**Problem**: The "Advanced Canvas Properties" and "Scaling Controls" popup dialogs were not appearing when selected from the context menu.
|
||||
|
||||
**Solution**:
|
||||
- Changed popup windows from modal popups to regular windows
|
||||
- Added boolean flags `show_advanced_properties_` and `show_scaling_controls_` to track window state
|
||||
- Windows now appear as floating windows instead of modal dialogs
|
||||
- Added public accessor methods:
|
||||
- `OpenAdvancedProperties()`
|
||||
- `OpenScalingControls()`
|
||||
- `CloseAdvancedProperties()`
|
||||
- `CloseScalingControls()`
|
||||
|
||||
**Files Modified**:
|
||||
- `src/app/gui/canvas.cc` - Updated popup implementation
|
||||
- `src/app/gui/canvas.h` - Added boolean flags and accessor methods
|
||||
|
||||
### Dynamic Zoom Controls
|
||||
|
||||
Each canvas now has independent zoom control with real-time feedback:
|
||||
|
||||
**Tile16 Blockset Zoom**:
|
||||
- Range: 0.5x to 4.0x
|
||||
- Slider control with +/- buttons
|
||||
- Properly scales mouse coordinate calculations
|
||||
|
||||
**Tile8 Source Zoom**:
|
||||
- Range: 1.0x to 8.0x
|
||||
- Essential for viewing small pixel details
|
||||
- Correctly accounts for zoom in tile selection
|
||||
|
||||
**Tile16 Editor Zoom**:
|
||||
- Range: 2.0x to 8.0x
|
||||
- Canvas size dynamically adjusts with zoom
|
||||
- Grid scales proportionally
|
||||
- Mouse coordinates properly transformed
|
||||
|
||||
**Implementation Details**:
|
||||
```cpp
|
||||
// Mouse coordinate calculations account for dynamic zoom
|
||||
int tile_x = static_cast<int>(mouse_pos.x / (8 * tile8_zoom));
|
||||
|
||||
// Grid drawing scaled with zoom
|
||||
tile16_edit_canvas_.DrawGrid(8.0F * tile16_zoom / 4.0F);
|
||||
|
||||
// Canvas display size calculated dynamically
|
||||
float canvas_display_size = 16 * tile16_zoom + 4;
|
||||
```
|
||||
|
||||
## Testing Protocol
|
||||
|
||||
### Crash Prevention Testing
|
||||
|
||||
1. **Load ROM** and open tile16 editor
|
||||
2. **Test all palette buttons 0-7** - should not crash
|
||||
3. **Verify color display** - should match overworld appearance
|
||||
4. **Test different graphics sheets** - should use appropriate palette regions
|
||||
|
||||
### Color Alignment Testing
|
||||
|
||||
1. **Select tile16 in overworld** - note colors displayed
|
||||
2. **Open tile16 editor** - load same tile
|
||||
3. **Test palette buttons 0-7** - colors should match overworld
|
||||
4. **Verify sheet-specific behavior** - different sheets should show different colors
|
||||
|
||||
### UI/UX Testing
|
||||
|
||||
1. **Canvas Popups**: Right-click on each canvas → verify "Advanced Properties" and "Scaling Controls" open correctly
|
||||
2. **Zoom Controls**: Test each zoom slider and button for all three canvases
|
||||
3. **Tile Selection**: Verify clicking works at various zoom levels for blockset, tile8 source, and tile16 editor
|
||||
4. **Layout Responsiveness**: Resize window and columns to verify proper behavior
|
||||
5. **Workflow**: Test complete tile editing workflow from selection to save
|
||||
|
||||
## Error Handling
|
||||
|
||||
### Bounds Checking
|
||||
|
||||
- **Palette Index Validation**: Ensure palette indices don't exceed palette size
|
||||
- **Sheet Index Validation**: Ensure sheet indices are within valid range (0-7)
|
||||
- **Surface Validation**: Ensure SDL surface exists before palette operations
|
||||
|
||||
### Fallback Mechanisms
|
||||
|
||||
- **Default Palette**: Use MAIN region if sheet detection fails
|
||||
- **Safe Indices**: Clamp palette indices to valid ranges
|
||||
- **Error Logging**: Comprehensive logging for debugging
|
||||
|
||||
## Debug Information Display
|
||||
|
||||
The debug panel (collapsible by default) shows:
|
||||
|
||||
1. **Current State**: Tile16 ID, Tile8 ID, selected palette button
|
||||
2. **Mapping Info**: Sheet index, actual palette slot
|
||||
3. **Reference Table**: Complete button-to-slot mapping for all sheets
|
||||
4. **Color Preview**: Visual display of actual colors being used
|
||||
|
||||
## Known Issues and Ongoing Work
|
||||
|
||||
### Completed Items ✅
|
||||
- ✅ **No Crashes**: Fixed SIGBUS errors - palette buttons 0-7 work without crashing
|
||||
- ✅ **Three-Column Layout**: Unified layout with blockset, tile8 source, and editor
|
||||
- ✅ **Dynamic Zoom Controls**: Independent zoom for all three canvases
|
||||
- ✅ **Canvas Popup Fixes**: Advanced properties and scaling controls now working
|
||||
- ✅ **Stable Memory**: No memory leaks or corruption
|
||||
- ✅ **Code Architecture**: Proper bounds checking and error handling
|
||||
|
||||
### Active Issues ⚠️
|
||||
|
||||
**1. Tile8 Source Canvas Palette Issues**
|
||||
- **Problem**: The tile8 source canvas (displaying current area graphics) does not show correct colors
|
||||
- **Impact**: Source tiles appear with incorrect palette, making it difficult to preview how tiles will look
|
||||
- **Root Cause**: Area graphics not receiving proper palette application
|
||||
- **Status**: Under investigation - may be related to graphics buffer processing
|
||||
|
||||
**2. Palette Button Functionality**
|
||||
- **Problem**: Palette buttons (0-7) do not properly update the displayed colors
|
||||
- **Impact**: Cannot switch between different palette groups as intended
|
||||
- **Expected Behavior**: Clicking palette buttons should change the active palette for tile8 graphics
|
||||
- **Actual Behavior**: Button clicks do not trigger palette updates correctly
|
||||
- **Status**: Needs implementation of proper palette switching logic
|
||||
|
||||
**3. Color Alignment Between Canvases**
|
||||
- **Problem**: Colors in tile8 source canvas don't match tile16 editor canvas
|
||||
- **Impact**: Inconsistent visual feedback during tile editing
|
||||
- **Related To**: Issues #1 and #2 above
|
||||
- **Status**: Blocked by palette button functionality
|
||||
|
||||
### Current Status Summary
|
||||
|
||||
| Component | Status | Notes |
|
||||
|-----------|--------|-------|
|
||||
| Crash Prevention | ✅ Complete | No SIGBUS errors |
|
||||
| Three-Column Layout | ✅ Complete | Fully functional |
|
||||
| Zoom Controls | ✅ Complete | All canvases working |
|
||||
| Tile16 Editor Palette | ✅ Complete | Shows correct colors |
|
||||
| Tile8 Source Palette | ⚠️ In Progress | Incorrect colors displayed |
|
||||
| Palette Button Updates | ⚠️ In Progress | Not updating palettes |
|
||||
| Sheet-Aware Logic | ⚠️ Partial | Foundation in place, needs fixes |
|
||||
| Overall Color System | ⚠️ In Progress | Ongoing development |
|
||||
|
||||
### Future Enhancements
|
||||
|
||||
1. **Zoom Presets**: Add preset buttons (1x, 2x, 4x) for quick zoom levels
|
||||
2. **Zoom Sync**: Option to sync zoom levels across related canvases
|
||||
3. **Canvas Layout Persistence**: Save user's preferred column widths and zoom levels
|
||||
4. **Keyboard Shortcuts**: Add +/- keys for zoom control
|
||||
5. **Mouse Wheel Zoom**: Ctrl+Wheel to zoom canvases
|
||||
6. **Performance Optimization**: Cache palette calculations for frequently used combinations
|
||||
7. **Extended Debug Tools**: Add pixel-level color comparison tools
|
||||
8. **Palette Preview**: Real-time preview of palette changes before applying
|
||||
9. **Batch Operations**: Apply palette changes to multiple tiles simultaneously
|
||||
|
||||
## Maintenance Notes
|
||||
|
||||
1. **Palette Structure Changes**: Update `GetActualPaletteSlot()` if overworld palette structure changes
|
||||
2. **Sheet Detection**: Verify `GetSheetIndexForTile8()` logic if graphics organization changes
|
||||
3. **ProcessGraphicsBuffer**: Monitor for changes in pixel data offset logic
|
||||
4. **Static Zoom Variables**: User preferences preserved across sessions
|
||||
|
||||
---
|
||||
|
||||
## Next Steps
|
||||
|
||||
### Immediate Priorities
|
||||
1. **Fix Tile8 Source Canvas Palette Application**
|
||||
- Investigate graphics buffer processing for area graphics
|
||||
- Ensure consistent palette application across all graphics sources
|
||||
- Test with different area graphics combinations
|
||||
|
||||
2. **Implement Palette Button Update Logic**
|
||||
- Add proper event handling for palette button clicks
|
||||
- Trigger palette refresh for tile8 source canvas
|
||||
- Update visual feedback to show active palette
|
||||
|
||||
3. **Verify Color Consistency**
|
||||
- Ensure tile8 source colors match tile16 editor
|
||||
- Test sheet-specific palette regions
|
||||
- Validate color mapping for all graphics sheets
|
||||
|
||||
### Investigation Areas
|
||||
- Review `current_gfx_individual_` palette application
|
||||
- Check palette group management for tile8 source
|
||||
- Verify graphics buffer offset logic for area graphics
|
||||
- Test palette switching across different overworld areas
|
||||
|
||||
---
|
||||
|
||||
*Development Status: January 2025*
|
||||
*Status: Partial implementation - UI complete, palette system in progress*
|
||||
*Not yet ready for production use - active development ongoing*
|
||||
|
||||
445
docs/yaze.org
445
docs/yaze.org
@@ -1,63 +1,414 @@
|
||||
#+TITLE: yaze todo
|
||||
#+SUBTITLE: yet another zelda3 editor todo list
|
||||
#+TITLE: YAZE Development Tracker
|
||||
#+SUBTITLE: Yet Another Zelda3 Editor
|
||||
#+AUTHOR: @scawful
|
||||
#+TODO: TODO ACTIVE FEEDBACK VERIFY | DONE
|
||||
#+EMAIL: scawful@users.noreply.github.com
|
||||
#+DATE: 2025-01-31
|
||||
#+STARTUP: overview
|
||||
#+TODO: TODO ACTIVE FEEDBACK VERIFY | DONE CANCELLED
|
||||
#+TAGS: bug(b) feature(f) refactor(r) ui(u) performance(p) docs(d)
|
||||
#+PRIORITIES: A C B
|
||||
#+COLUMNS: %25ITEM %TODO %3PRIORITY %TAGS
|
||||
|
||||
* Daily Log
|
||||
* Active Issues [0/6]
|
||||
** TODO [#A] Overworld sprites can't be moved on the overworld canvas :bug:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
- Issue: Sprites are not responding to drag operations
|
||||
- Location: Overworld canvas interaction
|
||||
- Impact: Blocks sprite editing workflow
|
||||
|
||||
<2024-11-14 Thu>
|
||||
Been making lots of adjustments and cleaning up old code. Primarily improving the dungeon map editor and supporting bin graphics for my Oracle of Secrets dungeon maps. Additionally, working to support saving for resources like graphics sheets and expanded the project file system.
|
||||
** TODO [#A] Canvas multi select has issues with large map intersection drawing :bug:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
- Issue: Selection box rendering incorrect when crossing 512px boundaries
|
||||
- Location: Canvas selection system
|
||||
- Note: E2E test exists to reproduce this bug (canvas_selection_test)
|
||||
|
||||
<2024-09-07 Sat>
|
||||
Various header cleanup using the LSP in emacs to detect unused includes.
|
||||
Making adjustments to font loading so the editor can be opened from terminal/emacs.
|
||||
Currently the font files and the zeml files require the binary to be relative to `assets/layouts` and `assets/fonts`
|
||||
I've set it up so that the macOS app bundles the resources into the `yaze.app` so that the binary can be run from anywhere. This will need to be adjusted for other platforms.
|
||||
** TODO [#B] Right click randomly shows oversized tile16 :bug:ui:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
- Issue: Context menu displays abnormally large tile16 preview
|
||||
- Location: Right-click context menu
|
||||
- Frequency: Random/intermittent
|
||||
|
||||
<2024-09-02 Mon>
|
||||
Extracted the DisplayPalette function out of the PaletteEditor and into its own standalone function.
|
||||
** TODO [#B] Overworld Map properties panel popup displaying incorrectly :ui:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
- Issue: Modal popup positioning or rendering issues
|
||||
- Similar to: Canvas popup fixes (now resolved)
|
||||
- Potential fix: Apply same solution as canvas popup refactoring
|
||||
|
||||
<2024-09-01 Sun>
|
||||
Started learning spacemacs and org-mode.
|
||||
** TODO [#A] Tile8 source canvas palette issues in Tile16 Editor :bug:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:DOCUMENTATION: E7-tile16-editor-palette-system.md
|
||||
:END:
|
||||
- Issue: Tile8 source canvas (current area graphics) shows incorrect colors
|
||||
- Impact: Cannot properly preview tiles before placing them
|
||||
- Root cause: Area graphics not receiving proper palette application
|
||||
- Related issue: Palette buttons (0-7) do not update palettes correctly
|
||||
- Status: Active investigation - graphics buffer processing issue
|
||||
|
||||
** TODO [#C] Scratch space implementation incomplete :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
- Feature: Temporary workspace for tile/object manipulation
|
||||
- Status: Partially implemented
|
||||
- Priority: Low (quality of life feature)
|
||||
|
||||
* Editors
|
||||
** Overworld
|
||||
*** TODO ZSCustomOverworld implementation.
|
||||
**** DONE Custom Overworld Map Settings Inputs
|
||||
**** DONE Load ZSCOW data from ROM in OverworldMap
|
||||
**** TODO Add Main Palette support
|
||||
**** TODO Add Custom Area BG Color support
|
||||
** Overworld [2/7]
|
||||
*** DONE Custom Overworld Map Settings Inputs
|
||||
CLOSED: [2024-11-14]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-11-14]
|
||||
:END:
|
||||
|
||||
*** TODO Fix sprite icon draw positions
|
||||
*** TODO Fix exit icon draw positions
|
||||
*** DONE Load ZSCOW data from ROM in OverworldMap
|
||||
CLOSED: [2024-11-14]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-11-14]
|
||||
:END:
|
||||
|
||||
** Dungeon
|
||||
*** TODO Draw dungeon objects
|
||||
*** TODO [#A] ZSCustomOverworld Main Palette support :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-11-14]
|
||||
:DEPENDENCIES: Custom overworld data loading
|
||||
:END:
|
||||
|
||||
** Graphics
|
||||
*** TODO Tile16 Editor
|
||||
- [ ] Draw tile8 to tile16 quadrant.
|
||||
*** TODO [#A] ZSCustomOverworld Custom Area BG Color support :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-11-14]
|
||||
:DEPENDENCIES: ZSCOW Main Palette
|
||||
:END:
|
||||
|
||||
*** TODO Fix graphics sheet pencil drawing
|
||||
*** TODO [#B] Fix sprite icon draw positions :bug:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
** Message
|
||||
*** TODO Fix Message Parsing
|
||||
*** TODO [#B] Fix exit icon draw positions :bug:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
** Palette
|
||||
*** TODO Persist color changes for saving to ROM.
|
||||
*** TODO [#C] Overworld Map screen editor :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
** Screens
|
||||
*** ACTIVE Dungeon Maps
|
||||
*** ACTIVE Inventory Menu
|
||||
*** TODO Overworld Map
|
||||
*** TODO Title Screen
|
||||
*** TODO Naming Screen
|
||||
** Dungeon [0/2]
|
||||
*** TODO [#B] Draw dungeon objects :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
- See E5-dungeon-object-system.md for design
|
||||
|
||||
*** ACTIVE [#A] Dungeon Maps screen editor :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-11-14]
|
||||
:END:
|
||||
- Currently in active development
|
||||
- Supporting bin graphics for Oracle of Secrets
|
||||
|
||||
** Graphics [1/2]
|
||||
*** ACTIVE [#A] Tile16 Editor palette system :feature:ui:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:DOCUMENTATION: E7-tile16-editor-palette-system.md
|
||||
:STATUS: In Progress
|
||||
:END:
|
||||
- [X] Fix palette system crashes (SIGBUS errors)
|
||||
- [X] Three-column layout refactoring
|
||||
- [X] Dynamic zoom controls
|
||||
- [X] Canvas popup fixes
|
||||
- [ ] Tile8 source canvas palette issues (incorrect colors)
|
||||
- [ ] Palette button update functionality (not working)
|
||||
- [ ] Color consistency between canvases
|
||||
|
||||
*** TODO [#C] Fix graphics sheet pencil drawing :bug:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
** Message [0/1]
|
||||
*** TODO [#C] Fix Message Parsing :bug:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
** Palette [0/1]
|
||||
*** TODO [#B] Persist color changes for saving to ROM :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
** Screens [2/5]
|
||||
*** ACTIVE [#A] Dungeon Maps :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-11-14]
|
||||
:END:
|
||||
|
||||
*** ACTIVE [#B] Inventory Menu :feature:ui:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
*** TODO [#C] Overworld Map screen :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
*** TODO [#C] Title Screen editor :feature:ui:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
*** TODO [#C] Naming Screen editor :feature:ui:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-01]
|
||||
:END:
|
||||
|
||||
* Infrastructure [4/7]
|
||||
** DONE Package layout files with executable
|
||||
CLOSED: [2024-09-07]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-07]
|
||||
:END:
|
||||
|
||||
** DONE Create util for bundled resource handling
|
||||
CLOSED: [2024-09-07]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-07]
|
||||
:END:
|
||||
|
||||
** DONE DisplayPalette function extraction
|
||||
CLOSED: [2024-09-02]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-02]
|
||||
:END:
|
||||
|
||||
** DONE Header cleanup with LSP
|
||||
CLOSED: [2024-09-07]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-07]
|
||||
:END:
|
||||
|
||||
** TODO [#B] Update recent files manager for bundled apps :refactor:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-07]
|
||||
:END:
|
||||
|
||||
** TODO [#C] Make font sizes configurable :feature:ui:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-07]
|
||||
:END:
|
||||
|
||||
** TODO [#C] Cross-platform font/asset loading :refactor:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-09-07]
|
||||
:END:
|
||||
|
||||
* Testing [4/6]
|
||||
** DONE [#A] E2E testing framework infrastructure
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:DOCUMENTATION: A1-testing-guide.md
|
||||
:END:
|
||||
|
||||
** DONE [#A] Canvas selection E2E test
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#A] Stable test suite (CI/CD)
|
||||
CLOSED: [2024-11-14]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-11-14]
|
||||
:END:
|
||||
|
||||
** DONE [#B] ROM-dependent test separation
|
||||
CLOSED: [2024-11-14]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2024-11-14]
|
||||
:END:
|
||||
|
||||
** TODO [#B] Expand E2E test coverage :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** TODO [#C] E2E CI/CD integration with headless mode :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
* CLI Tool (z3ed) [8/12]
|
||||
** DONE [#A] Resource-oriented command structure
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:DOCUMENTATION: E6-z3ed-cli-design.md
|
||||
:END:
|
||||
|
||||
** DONE [#A] FTXUI TUI component system
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#A] Code quality refactoring
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#A] Interactive palette editor (TUI)
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#A] Interactive hex viewer (TUI)
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#A] Command palette (TUI)
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#B] ROM validation commands
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#B] Agent framework foundation
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** TODO [#A] Complete agent execution loop (MCP) :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:DEPENDENCIES: Agent framework foundation
|
||||
:END:
|
||||
|
||||
** TODO [#B] Agent GUI control panel :feature:ui:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** TODO [#B] Granular data manipulation commands :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** TODO [#C] SpriteBuilder CLI :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:STATUS: Deprioritized
|
||||
:END:
|
||||
|
||||
* Documentation [3/5]
|
||||
** DONE [#A] Consolidate tile16 editor documentation
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#A] Merge E2E testing documentation
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** DONE [#A] Merge z3ed refactoring documentation
|
||||
CLOSED: [2025-01-31]
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** TODO [#B] API documentation generation :docs:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** TODO [#C] User guide for ROM hackers :docs:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
* Research & Planning [0/3]
|
||||
** TODO [#B] Advanced canvas rendering optimizations :performance:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:REFERENCES: gfx_optimization_recommendations.md
|
||||
:END:
|
||||
|
||||
** TODO [#B] Oracle of Secrets dungeon support :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
** TODO [#C] Plugin system architecture :feature:
|
||||
:PROPERTIES:
|
||||
:CREATED: [2025-01-31]
|
||||
:END:
|
||||
|
||||
* Org-Mode Productivity Tips
|
||||
** Quick Capture Templates
|
||||
Add to your Emacs config:
|
||||
#+begin_src emacs-lisp
|
||||
(setq org-capture-templates
|
||||
'(("t" "TODO" entry (file+headline "~/Code/yaze/docs/yaze.org" "Active Issues")
|
||||
"** TODO [#B] %?\n:PROPERTIES:\n:CREATED: %U\n:END:\n")
|
||||
("b" "Bug" entry (file+headline "~/Code/yaze/docs/yaze.org" "Active Issues")
|
||||
"** TODO [#A] %? :bug:\n:PROPERTIES:\n:CREATED: %U\n:END:\n")
|
||||
("f" "Feature" entry (file+headline "~/Code/yaze/docs/yaze.org" "Active Issues")
|
||||
"** TODO [#B] %? :feature:\n:PROPERTIES:\n:CREATED: %U\n:END:\n")))
|
||||
#+end_src
|
||||
|
||||
** Useful Commands
|
||||
- =C-c C-t= : Cycle TODO state
|
||||
- =C-c C-q= : Add tags
|
||||
- =C-c ,= : Set priority
|
||||
- =C-c C-x C-s= : Archive DONE items
|
||||
- =C-c C-v= : View agenda
|
||||
- =C-c a t= : Global TODO list
|
||||
- =C-c a m= : Match tags/properties
|
||||
|
||||
** Agenda Configuration
|
||||
#+begin_src emacs-lisp
|
||||
(setq org-agenda-files '("~/Code/yaze/docs/yaze.org"))
|
||||
(setq org-agenda-custom-commands
|
||||
'(("y" "YAZE Active Tasks"
|
||||
((tags-todo "bug"
|
||||
((org-agenda-overriding-header "Active Bugs")))
|
||||
(tags-todo "feature"
|
||||
((org-agenda-overriding-header "Features in Development")))
|
||||
(todo "ACTIVE"
|
||||
((org-agenda-overriding-header "Currently Working On")))))))
|
||||
#+end_src
|
||||
|
||||
** Workflow Tips
|
||||
1. Use =C-c C-c= on headlines to update statistics cookies [/] and [%]
|
||||
2. Create custom views with =org-agenda-custom-commands=
|
||||
3. Use =org-refile= (C-c C-w) to reorganize tasks
|
||||
4. Archive completed tasks regularly
|
||||
5. Use =org-sparse-tree= (C-c /) to filter by TODO state or tags
|
||||
6. Link to documentation: =[[file:E7-tile16-editor-palette-system.md]]=
|
||||
7. Track time with =C-c C-x C-i= (clock in) and =C-c C-x C-o= (clock out)
|
||||
|
||||
* Infrastructure
|
||||
** File Handling
|
||||
*** TODO Update recent files manager to bundle the recent files list with the application
|
||||
*** DONE Create a util for handling file operations from the bundled resources.
|
||||
** Font Loading
|
||||
*** TODO Make font sizes variables so they can be reloaded by the user.
|
||||
** ZEML
|
||||
*** DONE Package layout files with the executable to avoid relative file lookup
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# YAZE vcpkg Setup Script
|
||||
# yaze vcpkg Setup Script
|
||||
# This script sets up vcpkg for YAZE development on Windows
|
||||
|
||||
param(
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# YAZE Windows Development Setup Script
|
||||
# yaze Windows Development Setup Script
|
||||
# Sequential approach with no functions and minimal conditionals
|
||||
|
||||
param(
|
||||
|
||||
Reference in New Issue
Block a user