Skip to content

Latest commit

 

History

History
293 lines (229 loc) · 17.8 KB

File metadata and controls

293 lines (229 loc) · 17.8 KB

FDD Tools Changelog

[Unreleased]

Added - Navigation & Search Excellence (Aug 28, 2025)

  • 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

Added - Canvas Excellence (Aug 15, 2025)

  • 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

Fixed - Cross-Platform CI and Build System

  • 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

Changed - UI/UX Improvements

  • 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

[Previous Versions]

Added - Canvas Implementation Complete

  • 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

Added - UX Enhancement

  • 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

Added - JavaFX Tree Default

  • 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

Changed - Startup & Integration

  • 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

Technical Implementation Details

  • Key JavaFX Files (current set):

    • FDDCanvasFX.java - Modern JavaFX canvas (zoom/pan)
    • FDDGraphicFX.java - Element rendering with smart contrast
    • CenteredTextDrawerFX.java - Optimized text rendering utilities
    • FDDTreeViewFX.java - JavaFX tree implementation
    • FDDActionPanelFX.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

Added - Asynchronous Operations & BusyService Enhancements

  • 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.

Added - Structured Logging, Audit & Performance Instrumentation

  • 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.

Added - Preference & Session Persistence Expansion

  • 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) and I18nRegistry (weak-reference dynamic relabel) enabling instant menu/label/tooltip updates on UI_LANGUAGE_CHANGED without restart.

Fixed - Previous Issues

  • 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: buildDefaultSaveFileName now returns base name only (no premature extension)
    • Single extension enforcement via ensureFddiOrXmlExtension and stripDuplicateFddi (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) and FDDDeepHierarchyPersistenceTest (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 FDDMainWindowSaveBehaviorTest covering: 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)
  • Documentation Alignment:

    • README & ROADMAP updated to reflect save workflow hardening, MRU reliability, tree rename refresh, and delayed Busy overlay behavior

Removed - Legacy / Unused Components

  • 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

Changed - Robustness Improvements

  • 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

Added - Drag & Drop Ordering & Accessibility

  • Ordered Move Support: MoveNodeCommand now 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 insertChildAt default method added to FDDTreeNode; implemented for all hierarchical container types.
  • Command Undo Integrity: Original sibling index captured to ensure precise undo ordering restoration.

Refactored - Drag & Drop Architecture

Added - Semantic Theming & Post-Migration Hardening (Aug 11 2025)

  • Completed semantic stylesheet rollout (tree & dialogs now use semantic classes; legacy modern-style.css no longer referenced)

  • Introduced semantic-theme.css base plus variant global-theme-(light|dark|highcontrast|system).css switching via ThemeService

  • Added ThemeServiceSmokeTest and ThemeAndLanguageSmokeTest to verify variant swaps retain semantic base and live language relabel works

  • Added ForbiddenAWTSwingUsageTest guard (import-level) preventing reintroduction of javax.swing / java.awt dependencies (excluding reflective macOS integration)

  • Renamed legacy message constants to FX-neutral aliases; deprecated old JPanel/JFrame-prefixed keys for downstream stability

  • Refactored FDDTreeViewFX to remove inline styles/data URIs; selection + hover states now semantic

  • Updated ROADMAP.md to mark semantic theming acceptance criteria COMPLETE

  • Minor CSS compatibility fixes (added standard background-color / border-width duplicates for cross-engine harmony)

  • Controller Extraction: Drag & drop + insertion indicator logic moved from FDDTreeViewFX into new FDDTreeDragAndDropController for 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 FeatureMilestoneHelper with 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 GenericInfoPanelBuilder to construct name/owner/prefix panel, enabling isolated unit testing and further slimming of dialog stage class.

  • FDDElementDialogFX Decomposition (Phase 4): Introduced FeaturePanelBuilder centralizing 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.

Current Status Summary

Fully Functional Features ✅

  • 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

Development Environment ✅

  • All syntax errors resolved
  • Build system configured and tested
  • Production-ready codebase
  • GitHub repository synchronized

[Previous Releases]

[1.0.0] - Initial Release

  • Basic FDD project management functionality
  • Swing-based user interface
  • XML file format support
  • Milestone tracking with progress calculation
  • Work package management