All notable changes to this project are documented here. Format follows Keep a Changelog.
- Comprehensive Javadoc for
FxAnimation— Complete API documentation with examples, parameter descriptions, and usage guidelines (PR #69) - Tailwind v4.1 CSS utilities —
overflow-wrap,word-break,whitespaceclasses - SVG utilities —
.fill-*,.stroke-*,.stroke-width-*,.stroke-dashed,.stroke-dotted - Text-shadow —
.text-shadow-sm/md/lg/xl/2xl+ colored variants (.text-shadow-blue, etc.) - Component presets —
.card,.card-dark,.card-elevated,.badge-*,.modal-*,.drawer,.tooltip-*,.glass,.neumorph FxDataTable<T>— declarative, sortable, filterable, paginated TableView wrapperStyles.textShadow*()— Java API for text-shadow (DropShadow on Text/Label)Styles.dropShadow()— colored drop-shadow with arbitrary color + alphaStyles.clipCircle/Rounded/Mask()— clip and mask utilitiesStyles.rotateX/Y(),Styles.translateZ(),Styles.perspective()— 3D transformsStyles.glass/glassDark/neumorph/neumorphInset()— effect presetsStyles.setReducedMotion/shouldAnimate/playIfMotionOk()— motion-reduce supportStyles.fill/stroke/strokeWidth()— SVG shape helpersTailwindFXMetricsalert system —onAlert(),alertOnLowCacheHitRatio(),alertOnHighConflictRate(),alertOnSlowCompile()JitCompiler—drop-shadow-[#hex],text-shadow-[rgba],stroke-[n],fill-[#hex],aspect-ratio-[w/h]arbitrary tokensFxDataTableCSS —.table-striped,.table-hover,.table-compact,.table-bordered,.table-dark,.search-field,.row-even/oddUtilityConflictResolver— v4.1 categories:text-shadow,drop-shadow,fill,stroke,clip,break,skew-x/y,aspect,rotate-x/y,translate-z, component categoriesFxFlexPane.computePrefHeight— correct wrap=true height computationFxFlexPane.flex-basis—setBasis/getBasis()FxFlexPane.setDirectionAnimated()— animated direction changeTailwindFX.dataTable(),flexBasis(),flexDirection()— new entry-point shortcuts- Module descriptor —
module-info.javafor modular projects - Package Javadoc —
package-info.javawith class overview - Build file —
pom.xml(Maven, JavaFX 21, shade plugin) - Comprehensive example —
TailwindFXExampleupdated to demo all major features ResponsiveNode— per-node responsive utility rules driven byScene.widthProperty()FxFlexPane— full Flexbox model: direction, wrap, justify-content (6), align-items (4), gap, flex-grow, flex-shrink, order, align-selfStylePerf— StyleDiff cache (skip redundant applies), batch apply, auto-batch thresholdTailwindFXMetrics— AtomicLong counters for cache hits/misses, compilations, conflicts, themes, animations, layout passesBreakpointManager— responsive-aware category detection (md:w-4scoped tomd:wcategory)ThemeScopeManager—findClosestScope(),inheritScope(),refreshScope()AnimationUtil—removeHoverEffects(), auto-cancel on scene detach,storeHoverHandlers()JitCompiler— LRU eviction atMAX_CACHE_SIZE=2000, thread-safesynchronized(CACHE)UtilityConflictResolver—cleanupNode(),autoCleanup(),invalidateCategoryCache()TailwindFX.Config—autoBatch(threshold)configuration- Specific imports replacing wildcards across all 13 files
TailwindFX.aspectRatio/Square()— Java equivalent of CSSaspect-ratioTailwindFX.backdropBlur*()— BoxBlur glassmorphism helpersTailwindFX.transition()— CSStransitionequivalent via TimelineTailwindFX.cleanupNode/autoCleanup()— cache cleanup + memory managementTailwindFX.applyDiff()— StyleDiff entry-point shortcutTailwindFX.batch/batchAsync()— batch apply entry-pointFxFlexPane.setBasis/getShrink/setOrder/setAlignSelf()— flex parity featuresFxFlexPane.ensureLayoutOnParent()— deferredrequestLayout()for pre-parentingTailwindFXMetrics.recordLayoutPass()— layout timing for FxFlexPaneTailwindFX.metrics()— entry-point access toTailwindFXMetricsFxGridPane— grid-template-areas, auto-flow, masonry layoutComponentFactory— high-level card, badge, modal, drawer, tooltip, datatable buildersFxLayoutTilePane — tile layout support in FxLayout builderStyles.java— skewX/Y, objectCover/Contain, imgSize, 40+ grid/margin/filter methodsJitCompiler— gradient parsing, hex validation, negative translate, arbitrary valuesThemeManager— save/load/delete theme persistence viajava.util.prefs.PreferencesThemeScopeManager— scoped themes for any Pane subtreeAnimationUtil— 14 animations, FxAnimation fluent API, AnimationRegistry, ResponsiveAnimationGuardTailwindFX.Config— unit, breakpoints, debug, warnOnParentTailwindFX.watch()— hot-reload CSS in developmentTailwindFX.debugReport()— runtime node inspection- CSS: 11 900+ lines, 1 400+ utility classes
- CSS utility framework: layout, typography, colors, borders, effects, transforms
TailwindFX.install(),apply(),jit(),jitApply()ColorPalette— 209 Tailwind colorsBreakpointManager— SM/MD/LG/XL/XXL breakpointsThemeManager— dark/light/blue/green/purple/rose/slate presets
- Java 17 Migration — Project migrated from Java 21 to Java 17 for broader compatibility
FxAnimationas Public API — ExtractedFxAnimationas public class, deprecatedAnimationUtil- Unified
apply()method — Enhanced to auto-detect CSS classes and JIT tokens - Examples refactored — Moved to separate
tailwindfx-examplesMaven project - TestFX integration — Comprehensive headless testing with Monocle and xvfb
- Documentation overhaul — Added CONTRIBUTING.md, CODE_OF_CONDUCT.md, updated README
- MIT License — Added LICENSE file with 2026 copyright
JitCompilerregex patterns to prevent false positives in arbitrary value parsingFxFlexPane.computePrefHeightreturned wrong height forwrap=truerowsUtilityConflictResolver— skew, aspect, 3D transform categories were missing, causing classes to accumulate instead of replace- Spanish strings remaining in log messages (complete sweep)
- Hover effects (
onHoverScale/Lift/Dim) usedsetOnMouseEntered(overwrites) → replaced withaddEventHandler(chains) JitCompileralpha clamp: was warning-only, now actually clamps to[0, 100]UtilityConflictResolver.invalidateCache(null)— added null safety- All log/exception/comment strings normalized to English
- Wildcard imports replaced with specific imports in all Java files
- TestFX tests fixed for JavaFX 17 compatibility (disabled module-info)
- Avatar component test updated for Java 17
- Documentation typos and grammatical errors corrected
- README updated to reflect Java 17 requirement
AnimationUtil.java— Removed dead code, functionality fully migrated toFxAnimation- Deprecated JIT methods — Cleaned up legacy API surface
- Old documentation files — Removed outdated docs, keeping
docs/folder empty for comprehensive rewrite - Preview features — Removed Java 21 preview features for Java 17 compatibility
TailwindFXExample.java— Moved to examples module- Obsolete test suites — Removed deprecated ComponentFactory, TailwindFXMain, and ThemeManagerRefresh tests
FxAnimation— comprehensive JavaDoc added to all methods with detailed descriptions, parameters, return values, and usage examples
FxDataTableTest— 21 tests covering builder, filter, pagination, search, styleStylesTest— 13 new tests for v4.1 APIs (textShadow, dropShadow, clip, 3D, glass, neumorph, SVG)TailwindFXTest— JIT v4.1 token tests +TailwindFXMetricsalert system testsTestRunner—FxDataTableTestwired inFxAnimationTest— Comprehensive animation API testsThemeManagerTest— Theme persistence and propagation testsAdvancedTestFXIntegrationTest— Advanced UI integration tests with MonocleTailwindFXUnifiedApplyTest— Tests for unified apply() method with JIT detectionFxI18nTest— Internationalization testsFxFlexPaneTest— Flexbox layout testsEdgeCaseTests— Edge case handling tests
AnimationUtildeprecated — Migrate toFxAnimationfluent API- Java 17 required — Update your JDK from Java 21 to Java 17
jit()method deprecated — Useapply()which now auto-detects JIT tokensapplyDiff()made private — Internal optimization, useapply()instead- Examples moved — Example applications now in separate
tailwindfx-examplesmodule