-
Tree Search with Navigation: Comprehensive search functionality for finding nodes
- Forward and backward navigation through search results
- Visual highlighting of found nodes with persistent search state
- Search field integrated into tree view for seamless user experience
- Result navigation with keyboard shortcuts and visual indicators
-
Navigation History System: Professional back/forward navigation
- Back and forward buttons for intuitive project exploration
- Navigation history persistence throughout session
- Seamless integration with search and selection workflows
- Visual feedback for navigation state changes
-
Click-to-Focus Integration: Enhanced canvas interactivity
- Click canvas elements to automatically focus corresponding tree nodes
- Bidirectional synchronization between canvas and tree view
- Improved workflow for large projects with complex hierarchies
- Visual feedback for focused elements across both views
-
Enhanced Tree UI Organization: Improved component layout
- Action bar relocated within tree view container for better association
- Clear visual separation between tree and canvas controls
- Consistent styling and interaction patterns
- Better component organization for user experience
-
Comprehensive CI Infrastructure: Robust testing automation
- Enhanced headless testing with proper JavaFX initialization
- Platform-compatible CI configuration for reliable builds
- Comprehensive test suite with 451 tests passing
- Cross-platform compatibility validation
-
Perfect Fit-to-Window Algorithm: Revolutionary fit functionality that eliminates all scrolling
- Calculates optimal column arrangements to maximize viewport usage
- Sizes canvas exactly to viewport dimensions for perfect fitting
- Zero horizontal or vertical scrollbars when fitted
- Intelligent layout optimization based on available space
-
Dynamic Window Responsiveness: Advanced viewport awareness system
- Auto-fit mode automatically readjusts when window size changes
- Maintains perfect fit as user resizes application window
- Real-time layout recalculation for optimal space utilization
- Seamless integration with window resize events
-
Mac Trackpad Integration: Native gesture support for professional UX
- Pinch-to-zoom gesture recognition with smooth zoom factor handling
- ZoomEvent integration for natural Mac user experience
- Cross-platform compatibility maintained for non-Mac devices
- Gesture zoom preserves layout consistency and performance
-
Smart Scroll Behavior Management: Context-aware scrolling system
- Vertical-only scrolling at 100% zoom for optimal content viewing
- 2D scrolling when zoomed beyond viewport for full navigation
- No scrollbars in fit mode for clean, professional appearance
- Dynamic scroll policies based on zoom state and canvas mode
-
Professional Action Bar Redesign: Modern zoom control interface
- Unicode symbols for clear visual communication (➕ ➖ ⊞)
- Interactive zoom percentage field with real-time editing
- Functional zoom slider with orange theme consistency
- Clear button labels: "Save Image", "Print", "Fit" with proper functionality
- Consistent hover effects (#fd7e14) throughout the interface
-
Enhanced Drawing System: Viewport-aware rendering engine
- Canvas drawing logic adapts to fit mode for optimal layout
- Dynamic element arrangement based on actual available width
- Intelligent content scaling that preserves readability
- Perfect integration between zoom, fit, and layout systems
- JavaFX Version Compatibility: Resolved CI packaging issues
- Fixed version mismatch in jlink script (was hardcoded to 21, now uses ${javafx.version})
- Added platform-specific JavaFX dependency classifiers for proper native library downloads
- Platform detection profiles for automatic javafx.platform property setting
- Enhanced Maven configuration for reliable cross-platform builds
- Canvas Behavior Refinement: Removed BusyService complexity for synchronous operations
- Layout Management: Simplified canvas container structure for better performance
- Zoom Persistence: Enhanced zoom level storage and restoration capabilities
- Theme Consistency: Orange theme applied throughout zoom controls and action bar
-
Modern JavaFX Canvas: Full implementation of FDDCanvasFX with professional zoom and pan capabilities
- Zoom range: 0.1x to 5.0x with smooth scaling and fit-to-window functionality
- Mouse drag panning with scroll bar integration
- Keyboard shortcuts: Ctrl+Scroll (zoom), Ctrl +/-/0 (zoom controls), Space+Drag (pan mode)
- Professional control panel with zoom indicators and buttons
- Image export: Save canvas as PNG/JPEG with file chooser dialog
- Context menu: Right-click access to all canvas functions
-
High-Quality Text Rendering: Optimized font system for crisp, readable text at all zoom levels
- SF Pro Text Semi-Bold on macOS for optimal clarity
- Cross-platform font fallback: Segoe UI (Windows), Roboto, Source Sans Pro, Liberation Sans
- Disabled image smoothing for pixel-perfect text rendering
- Decorative font filtering to ensure readability
-
Smart Text Contrast System: Intelligent color adjustment for optimal visibility
- Dynamic text color based on position over progress bars
- Black text over light areas, white text over dark progress sections
- Single percentage display with perfect positioning
- High contrast styling for professional appearance
- Edit Dialog Focus Restoration: Seamless node selection after edit operations
- Problem solved: Users no longer lose their place in the tree after editing
- Pure JavaFX implementation (legacy Swing path removed)
- Thread-safe execution via Platform.runLater()
- Enhanced editSelectedFDDElementNode() with callback-based focus restoration
- JavaFX Tree View Default: Application now starts with JavaFX tree view by default
- Auto-expand functionality: All tree nodes expand automatically on startup
- Root node auto-selection: Root node is automatically selected on initialization
- Professional action panel: FDDActionPanelFX with reliable text symbol buttons
- High contrast styling: Enhanced visibility with professional appearance
- Canvas integration: Tree selection properly updates canvas view
- Startup sequence: Simplified to pure JavaFX initialization
- Thread coordination: Platform.runLater() usage consolidated
- Selection handling: Clean JavaFX selection logic
- Production code: Removed transitional debug output
-
Key JavaFX Files (current set):
FDDCanvasFX.java- Modern JavaFX canvas (zoom/pan)FDDGraphicFX.java- Element rendering with smart contrastCenteredTextDrawerFX.java- Optimized text rendering utilitiesFDDTreeViewFX.java- JavaFX tree implementationFDDActionPanelFX.java- Action button panel
-
Removed Legacy:
- All Swing frame/canvas bridge classes (FDDFrame, FDDCanvasBridge, CanvasSelector, FDDGraphic) deleted
- Swing TreeNode coupling removed from model
- Swing dependencies pruned from pom.xml
-
Canvas Architecture: BorderPane layout with ScrollPane, VBox control panel, and GraphicsContext rendering
-
Thread Safety: Proper coordination between JavaFX and Swing EDT threads
-
Memory Management: Efficient canvas sizing and redraw optimization -- Bridge Pattern: Retired; application now fully JavaFX
- BusyService Progress & Cancellation: Long-running operations (open, save, image export) now run inside cancellable JavaFX Tasks with overlay progress indicator.
- Image Export Async: PNG/JPEG export moved off UI thread; supports cancellation and progress updates; audit + performance spans recorded.
- XML Read/Write Tasks: Project load/save now emit coarse progress milestones enabling future UI progress granularity.
- AUDIT & PERF Loggers: Dedicated rolling appenders added (logback.xml) for audit trail and performance spans; non-additive to keep channels clean.
- Span Timing API: LoggingService provides Span objects (start/close) capturing durationMs and optional metrics (zoom level, pixel counts, target scale).
- Audit Events: Project lifecycle (new/open/save/saveAs), command execute/undo/redo, clipboard actions (cut/copy/paste), image export events all recorded with MDC context (projectPath, action, selectedNode, auditAction).
- Performance Spans: Canvas redraw cycles, fitToWindow, and image export instrumented; spans nested where appropriate.
- MDC Safety: Nested MDC scope restoration prevents leakage across async boundaries.
- Last Project Path & Auto-Load: Application optionally auto-loads most recent project on startup (user-controlled preference).
- Zoom Persistence: Last canvas zoom level saved between sessions with separate enable/disable toggle.
- Preferences Dialog Enhancements: New checkboxes for auto-load last project and restore last zoom.
- Preference Corruption Handling: Tests ensure safe fallback to defaults on malformed entries.
- PNG Encoder Hardening: Custom pure JavaFX PNG export now uses zlib DEFAULT compression (replacing previous uncompressed output) with automated structural integrity test (signature + IHDR length & CRC validation) ensuring portability and future optimization baseline.
- Live Theme & Language Preview: Preferences dialog now applies theme (light/dark/system) and language bundle reload instantly with cancel rollback; publishes UI_THEME_CHANGED / UI_LANGUAGE_CHANGED events for future dynamic relabeling.
- Runtime Language Switching & Full UI Externalization: All remaining hard-coded JavaFX UI strings moved to resource bundles (English + Spanish + Japanese + Chinese). Introduced
I18n(bundle reload) andI18nRegistry(weak-reference dynamic relabel) enabling instant menu/label/tooltip updates on UI_LANGUAGE_CHANGED without restart.
-
Save & Persistence:
- Correct separation of Save vs Save As semantics (Save no longer always triggers dialog)
- Eliminated zero-byte project saves by ensuring serialization of the registered ProjectService root
- Filename normalization:
buildDefaultSaveFileNamenow returns base name only (no premature extension) - Single extension enforcement via
ensureFddiOrXmlExtensionandstripDuplicateFddi(prevents.fddi.fddi) - Duplicate extension bug in file chooser fully resolved
- Dirty flag now reliably clears after successful save/saveAs
- MRU list ordering fixed; Save As / Open add entries, plain Save does not duplicate entries
- Recent file paths stored in normalized form
- Added structural diagnostics (pre/post save child & total node counts) with guard log when overwriting existing file with zero-child root
- Added regression tests:
FDDOpenExistingSaveRegressionTest(structure persistence) andFDDDeepHierarchyPersistenceTest(deep hierarchy integrity)
-
UI Refresh:
- Tree node rename immediately refreshes & re-selects edited node (no stale label)
-
Busy Overlay / UX:
- Added ~180ms delayed Busy overlay to eliminate flicker for fast operations (overlay cancelled if task finishes quickly)
-
Tests / Reliability:
- Expanded
FDDMainWindowSaveBehaviorTestcovering: Save vs Save As semantics, MRU ordering, filename normalization, duplicate extension prevention, root persistence - Added command-related tests (rename/paste) ensuring tree state integrity post-operations
- All new and existing tests passing (current targeted suite: 10 green)
- Expanded
-
Documentation Alignment:
- README & ROADMAP updated to reflect save workflow hardening, MRU reliability, tree rename refresh, and delayed Busy overlay behavior
-
Deprecated IconUtils-based SVG icon utility (replaced by FontAwesome glyph usage in action panel / toolbar).
-
Outdated documentation file JAVAFX_ICONS_IMPLEMENTATION.md referencing removed toolbar/IconUtils implementation.
-
Dormant print subsystem stubs (FDDPrintManager, FDDImagePrinter) removed; printing will be reintroduced with new JavaFX-centric pipeline in future roadmap phase.
-
JavaFX Milestone Completion: Fixed milestone status synchronization in FDDElementDialogFX
- Milestone completion checkboxes now properly update the model
- Progress bars correctly reflect milestone completion status
- No more "Index out of bounds" errors when toggling milestones
- Full save/load functionality for milestone states
- Enhanced error handling: Added proper bounds checking in milestone progress calculation
- Improved debugging: Added console output for milestone updates (removed in production)
- Cross-platform compatibility: Verified on macOS, Windows, and Linux
- Performance optimization: Eliminated complex scene traversal overhead
- Ordered Move Support:
MoveNodeCommandnow accepts optional insertion index; undo restores original position. - Insertion Indicators: Top/bottom orange lines show before/after insertion zones; middle region for reparent.
- Snapshot Drag Image: Row snapshot replaces default platform paper icon.
- Auto-Expand on Hover: Collapsed parents expand after 600ms hover during drag.
- Invalid Drop Feedback: Transient tooltip explains why a drop target is disallowed (hierarchy or position).
- Keyboard Structural Shortcuts: Alt+Up/Down reorder, Alt+Left outdent to grandparent, Alt+Right indent into previous sibling (all undoable).
- Model API Extension: New
insertChildAtdefault method added toFDDTreeNode; implemented for all hierarchical container types. - Command Undo Integrity: Original sibling index captured to ensure precise undo ordering restoration.
-
Completed semantic stylesheet rollout (tree & dialogs now use semantic classes; legacy
modern-style.cssno longer referenced) -
Introduced
semantic-theme.cssbase plus variantglobal-theme-(light|dark|highcontrast|system).cssswitching viaThemeService -
Added
ThemeServiceSmokeTestandThemeAndLanguageSmokeTestto verify variant swaps retain semantic base and live language relabel works -
Added
ForbiddenAWTSwingUsageTestguard (import-level) preventing reintroduction ofjavax.swing/java.awtdependencies (excluding reflective macOS integration) -
Renamed legacy message constants to FX-neutral aliases; deprecated old JPanel/JFrame-prefixed keys for downstream stability
-
Refactored
FDDTreeViewFXto remove inline styles/data URIs; selection + hover states now semantic -
Updated
ROADMAP.mdto mark semantic theming acceptance criteria COMPLETE -
Minor CSS compatibility fixes (added standard
background-color/border-widthduplicates for cross-engine harmony) -
Controller Extraction: Drag & drop + insertion indicator logic moved from
FDDTreeViewFXinto newFDDTreeDragAndDropControllerfor clearer separation of concerns. -
Slimmer Tree Cell: Tree cell now delegates drag lifecycle; reduces per-cell complexity and eases future feature additions (multi-select, progress pills).
-
No Functional Regression Expected: Behavior preserved (auto-expand, tooltips, snapshot drag image, keyboard structural shortcuts) with cleaner architecture.
-
Foundation for Incremental Improvements: Controller centralization enables upcoming enhancements (cached tooltips, audit enrichment, drag metrics) without inflating UI class size.
-
FDDElementDialogFX Decomposition (Phase 1): Extracted milestone alignment/update logic into
FeatureMilestoneHelperwith dedicated tests. -
FDDElementDialogFX Decomposition (Phase 2): Extracted work package combo population & assignment logic into
FeatureWorkPackageHelper(pure logic + JavaFX harness-backed test) reducing dialog complexity. -
FDDElementDialogFX Decomposition (Phase 3): Introduced
GenericInfoPanelBuilderto construct name/owner/prefix panel, enabling isolated unit testing and further slimming of dialog stage class. -
FDDElementDialogFX Decomposition (Phase 4): Introduced
FeaturePanelBuildercentralizing feature-specific owner/work package/milestone UI. -
FDDElementDialogFX Decomposition (Phase 5): Extracted milestone apply (grid scraping + update) into
FeatureMilestoneApplyHelper; pending: OK handler strategy segmentation & progress label consolidation.
- Modern JavaFX Canvas with professional zoom/pan controls
- High-quality text rendering with smart contrast detection
- Edit dialog focus restoration for seamless UX
- JavaFX tree view as default with auto-expand functionality
- Root node auto-selection and canvas integration
- Professional action panels and context menus
- Image export and right-click functionality
- Cross-platform font optimization and fallback system
- Complete milestone management in JavaFX dialogs
- Reliable save/load for all project data
- All syntax errors resolved
- Build system configured and tested
- Production-ready codebase
- GitHub repository synchronized
- Basic FDD project management functionality
- Swing-based user interface
- XML file format support
- Milestone tracking with progress calculation
- Work package management