All notable changes to this project will be documented in this file.
- Implemented Polygon Lasso tool in Sprite Editor using ray-casting point-in-polygon mask generation. Added
onMouseMovetoBrushinterface to support interactive previews.
- Stabilized documentation and submodule sync loop.
- Created
VISION.md,MEMORY.md,DEPLOY.md, andTODO.mdto comprehensively document project goals, observations, deployment steps, and upcoming tasks. - Added new references for Defold, Love2D, Phaser, and
bobuito the git submodules for feature analysis and integration. - Updated
AGENTS.md,CLAUDE.md,GEMINI.md,GPT.md,copilot-instructions.md, andLLM_INSTRUCTIONS.mdto point to the universal LLM instructions.
- Bumped
VERSION.mdto2.0.31.
- Scene2D Unified Template Library: Added a combined Scene2D library table that displays built-in templates, preset slots, and recent history entries in a single list with mixed-source badges and direct load/apply actions.
- Refactored Scene2D table rebuilding to support mixed-source template cards.
- Bumped
VERSION.mdto2.0.30.
./gradlew compileJava✅
- Scene2D Template-to-Slot Shortcuts:
CustomGameEditor.javanow lets creators save built-in templates directly into preset slots 1–3 from the Scene2D template browser without first overwriting the active draft.
- Scene2D built-in template browsing and saved-slot authoring now connect through direct slot-save actions, making the template workflow less fragmented.
- Bumped
VERSION.mdto2.0.29.
./gradlew compileJava✅
- Scene2D Template Browser:
CustomGameEditor.javanow renders a browsable preset catalog table with family summaries and one-click apply buttons for the built-in starter templates.
- Scene2D preset browsing now surfaces family, mode, grid, gravity/lock, preview, and chain summaries directly in the editor instead of relying only on the top preset rows.
- Bumped
VERSION.mdto2.0.28.
./gradlew compileJava✅
- Scene2D Compact Preset Families:
CustomGameEditor.javanow groups starter presets into clearer family rows and adds curatedSprint Drop,Zen Garden, andMicro Stacktemplates alongside the original presets.
- Expanded preset application so the Scene2D editor now seeds gravity, lock delay, and next-piece preview counts more explicitly for each family starter.
- Bumped
VERSION.mdto2.0.27.
./gradlew compileJava✅
- Scene2D Saved Template Slot Summaries:
CustomGameEditor.javanow renders compact preset-slot status rows so each in-memory slot advertises its stored ruleset name, mode, piece count, and rotation count.
- Preset slot saves/loads now refresh a dedicated Scene2D template summary table, reducing guesswork when authoring multiple rulesets in one session.
- Bumped
VERSION.mdto2.0.26.
./gradlew compileJava✅
- Scene2D Conversion-Pair Editing:
CustomGameEditor.javanow supports focused first-pass touching-block conversion authoring with add/clear conversion flows and visible conversion summaries.
- Expanded block detail and summary reporting so conversion-pair data appears alongside reward, chain, palette, and field-effect authoring.
- Bumped
VERSION.mdto2.0.25.
./gradlew compileJava✅
- Scene2D Advanced Field-Effect Toggles:
CustomGameEditor.javanow exposes engine-backed field-effect toggles for ignoring move-down gravity, removing same-color field blocks on set, and diamond-color field swaps.
- Expanded block behavior reporting so field-wide consequences appear alongside the existing chain and reward hooks.
- Bumped
VERSION.mdto2.0.24.
./gradlew compileJava✅
- Scene2D Block Gameplay Hooks:
CustomGameEditor.javanow exposes reward-piece assignment plus focused chain-behavior toggles for selected blocks, including clear-every-other-line, ignore-chain, required-in-chain, and exploding-chain-link hooks.
- Expanded block detail and summary readouts so reward-piece and chain-behavior authoring is visible alongside the existing block palette and special-color data.
- Bumped
VERSION.mdto2.0.23.
./gradlew compileJava✅
- Scene2D Richer Block Color Set Editing:
CustomGameEditor.javanow adds palette color growth/shrink controls and surfaces the full authored palette in the block detail readout.
- Reused the current primary color as the palette-source color for new palette entries, keeping Scene2D color-set editing simple and coherent with the existing dialog-driven UI.
- Bumped
VERSION.mdto2.0.22.
./gradlew compileJava✅
- Scene2D Deeper Block Rule Editing:
CustomGameEditor.javanow exposes a focused second-pass block authoring set with special color, special chance/frequency, flashing special, match-any-color, and counter-type controls.
- Expanded block detail readouts so authored special behavior is visible alongside color and usage data.
- Bumped
VERSION.mdto2.0.21.
./gradlew compileJava✅
- Scene2D Block Type / Color Controls:
CustomGameEditor.javanow exposes a focused first-pass block authoring workflow with block navigation, rename/color editing, normal/garbage/filler usage toggles, and block override assignment for the selected piece.
- Bumped
VERSION.mdto2.0.20.
./gradlew compileJava✅
- Scene2D Recent Action Breadcrumbs:
CustomGameEditor.javanow shows a bounded recent-action panel that tracks meaningful authoring operations like presets, imports, shares, piece/rotation edits, and cleanup helpers.
- Kept the breadcrumb feed intentionally focused on meaningful edits rather than noisy navigation clicks, making it useful as lightweight workflow memory without pretending to be full undo.
- Bumped
VERSION.mdto2.0.19.
./gradlew compileJava✅
- Scene2D Center-All Helper:
CustomGameEditor.javanow provides a one-click helper to center every rotation in the selected piece, making full-set layout cleanup faster after import, duplication, and normalize-all passes.
- Reused a shared centering helper so single-rotation and full-set centering follow the same geometry logic.
- Bumped
VERSION.mdto2.0.18.
./gradlew compileJava✅
- Scene2D Recent Share / Import History:
CustomGameEditor.javanow adds Scene2D import/share entry points plus a bounded recent-history list with quick load/copy actions.
- Share flow now copies to the system clipboard when available and falls back to a manual-copy string dialog when clipboard access is unavailable.
- Bumped
VERSION.mdto2.0.17.
./gradlew compileJava✅
- Scene2D Empty Rotation Cleanup:
CustomGameEditor.javanow provides a one-click helper to remove empty rotations after confirmation, improving cleanup after experimentation and duplication.
- Bumped
VERSION.mdto2.0.16.
./gradlew compileJava✅
- Scene2D Normalize-All Helper:
CustomGameEditor.javanow provides a one-click helper to normalize every rotation in the selected piece, making full-set cleanup much faster.
- Bumped
VERSION.mdto2.0.15.
./gradlew compileJava✅
- Scene2D Duplicate Cleanup Helper:
CustomGameEditor.javanow provides a one-click duplicate-rotation cleanup action that removes redundant rotations after confirmation.
- Bumped
VERSION.mdto2.0.14.
./gradlew compileJava✅
- Scene2D Normalize / Center Helpers:
CustomGameEditor.javanow provides one-click normalize and center helpers for the current rotation, making custom piece cleanup much faster.
- Bumped
VERSION.mdto2.0.13.
./gradlew compileJava✅
- Scene2D Symmetry & Duplicate Hints:
CustomGameEditor.javanow reports current-rotation symmetry and highlights duplicate rotations in the rotation overview, giving authors direct feedback about redundant states.
- Bumped
VERSION.mdto2.0.12.
./gradlew compileJava✅
- Scene2D Rotation Analytics:
CustomGameEditor.javanow reports current rotation bounding-box size plus unique-vs-duplicate rotation counts for the selected piece, and the rotation overview buttons include bounding-box information.
- Bumped
VERSION.mdto2.0.11.
./gradlew compileJava✅
- Scene2D Preset Shortcut Buttons:
CustomGameEditor.javanow includes one-click Classic Drop, Cascade Puzzle, and Stack Arcade preset buttons layered on top of the in-session preset-slot workflow.
- Bumped
VERSION.mdto2.0.10.
./gradlew compileJava✅
- Scene2D Preset Slots:
CustomGameEditor.javanow supports quick in-session preset save/load slots using deep-clonedGameTypesnapshots, enabling fast iteration without replacing the active draft permanently.
- Bumped
VERSION.mdto2.0.9.
./gradlew compileJava✅
- Scene2D Movement / Randomizer Toggles:
CustomGameEditor.javanow exposes Scene2D checkboxes for next-piece preview, hold piece, bag randomizer, hard-drop punch-through, and multiple kick/movement options.
- The Java editor summary now includes enabled movement/randomizer rules together with the earlier advanced rule set.
- Bumped
VERSION.mdto2.0.8.
./gradlew compileJava✅
- Scene2D Advanced Rule Toggles:
CustomGameEditor.javanow exposes Scene2D checkboxes for cascade gravity, disconnected-only gravity, row/column/diagonal chain checks, and recursive chain search.
- The Java editor summary now reports enabled advanced rules explicitly.
- Bumped
VERSION.mdto2.0.7.
./gradlew compileJava✅
- Scene2D Rotation Overview:
CustomGameEditor.javanow builds a clickable rotation overview strip with per-rotation occupied-cell counts, allowing direct selection instead of only cycling next/previous.
- Bumped
VERSION.mdto2.0.6.
./gradlew compileJava✅
- Scene2D Duplication Workflow:
CustomGameEditor.javanow supports duplicating the selected piece and duplicating the selected rotation, making iterative ruleset authoring much faster.
- Bumped
VERSION.mdto2.0.5.
./gradlew compileJava✅
- Safer Scene2D Deletes: Piece and rotation removals in
CustomGameEditor.javanow go throughScene2DYesNoDialogconfirmations instead of deleting immediately. - Bumped
VERSION.mdto2.0.4.
./gradlew compileJava✅
- Scene2D Delete Controls:
CustomGameEditor.javanow supports removing the selected piece and removing the selected rotation, extending the Scene2D editor beyond pure additive editing.
- Editor Guardrails: Grid buttons are disabled when no piece is selected, and the editor now recovers selection cleanly after deleting a piece or rotation.
- Bumped
VERSION.mdto2.0.3.
./gradlew compileJava✅
- nD Puzzle Bootstrap:
NDPuzzleGame.javanow constructsGameLogicwith a localGameManager/Roomcontext, assigns the activePuzzlePlayer, and callsupdate(0, 1)with the modern signature. - TWL/LWJGL Input Bridge: Added a tracked parent-repo override at
src/main/java/de/matthiasmann/twl/input/lwjgl/LWJGLInput.javaplus a Gradle exclude for the conflicting nested-submodule source file, avoiding the compile-time API drift that previously brokecompileJava.
- Bumped
VERSION.mdto2.0.2.
./gradlew compileJava✅
- Scene2D Custom Piece Editing:
CustomGameEditor.javanow maintains a liveGameType, supports adding piece types and rotations, and exposes an interactive 4x4 rotation grid for sketching custom puzzle pieces. - Editor Summary Feedback: Added current piece / rotation labels plus a summary line showing grid, mode, piece count, rotation count, and filled-cell count for the active rotation.
- Bumped
VERSION.mdto2.0.1. - The Scene2D custom editor now serves as a real editing surface instead of placeholder buttons.
./gradlew compileJavastill fails, but the remaining failures are pre-existing and unrelated to this editor change:NDPuzzleGame.javaconstructor/update mismatch withGameLogiclibs/twl-lwjgl3GUIAPI mismatches (handleKey,handleMouse,handleMouseWheel)
- Submodules: Fixed
libs/aseprite-filesubmodule pointer to a valid commit (06b6189) as the previous one was missing on the remote, causing clone failures.
- Maintenance: Automated cleanup and merge of feature branches.
- Submodules: Removed broken
GeoIP2-javasubmodule.
- Submodules: Updated all submodules to latest upstream versions and merged upstream changes.
- Dashboard: Updated
docs/dashboard.mdwith latest submodule status and project structure explanation. - Maintenance: Merged all feature branches into
mainand ensured clean state.
- Environment: Standardized development environment on Java 21 to resolve Gradle 8.8 compatibility issues.
- Documentation: Consolidated and updated
LLM_INSTRUCTIONS.mdto serve as the single source of truth for all AI models. - Documentation: Updated
docs/dashboard.mdwith current submodule hashes and build status.
- Project Merging: Implemented full project merging capabilities. Users can now merge maps, tilesets, palettes, sprites, and other data from another project zip file into the current project.
- Documentation: Updated
LLM_INSTRUCTIONS.mdwith strict versioning protocols. - Dashboard: Updated
docs/dashboard.mdwith latest submodule status.
- Submodules: Updated all submodules to latest upstream versions.
- Branches: Merged all local feature branches into
main. - Versioning: Incremented version to 0.1.3.
- Import Image to Tileset: New feature in
Tileset Toolsmenu allowing users to import BMP/PNG images directly into the tileset. Supports appending or overwriting, and automatically matches or adds colors to the palette. - Pattern Fill:
MapCanvasnow supports filling a selection with a pattern from the tileset selection (tiling). - Random Sprite Export: Added "Export Random Sprites" to Sprite Editor to export sprites marked as random.
- Grid Layout: Sprite Editor now displays frames in a responsive grid layout instead of a single line.
- Palette Synchronization: Implemented synchronized sorting and color addition across all tileset palettes to maintain consistency when modifying the master palette.
- Optimized Redo: Improved performance of the Redo operation in
MapCanvas. - Documentation: Updated
dashboard.md,LLM_INSTRUCTIONS.md, andROADMAP.md. - Versioning: Project now references
VERSION.md.
- Fixed
GameSave.javacompilation errors (previous session). - Fixed
SEFrameCanvaspainting logic.
- Resolved compilation errors in
GameSave.javaby removing duplicate methods and fixing structure. - Fixed duplicate field definitions in
CustomGameEditor.java. - Fixed missing method calls in
GLUtils.javaby correctingBitmapFontimport. - Fixed missing variables in
GameLogic.java.
docs/dashboard.md: Project dashboard with submodule status and structure explanation.VERSION.md: Single source of truth for project version.LLM_INSTRUCTIONS.md: Unified instructions for AI assistants.
- Merged feature branches:
modernize-codebase-final-polishmodernize-codebase-polishmodernize-codebase-polish-2modernize-java-project-part-2new-feature-branch
- Updated all submodules to latest upstream versions.
- Fixed
cpp_reposubmodule issue.