dashronym 0.2.0
dashronym: ^0.2.0 copied to clipboard
Accessible inline acronym definitions for Flutter.
Unreleased #
Fixed #
- Fixed a keyboard trap: tabbing into an open tooltip's close button no
longer freezes focus there.
Tab/Shift+Tabnow escape the tooltip and continue to the next trigger, wrapping back to the first one at the end.
0.2.0 - 2026-07-24 #
Changed #
- Refocused the supported API on displaying acronym definitions from a simple
Map<String, String>registry. - Enabled registered bare uppercase acronyms by default. Set
DashronymConfig(enableBareAcronyms: false)to require marker-wrapped terms. - Made
package:dashronym/dashronym.dartthe single primary import for the registry, configuration, text widgets, scope, theme, localization, and custom tooltip builder. - Added value equality to
DashronymRegistry,DashronymConfig, andDashronymThemeso equivalent values created during a rebuild do not trigger unnecessary inherited-widget updates or tooltip relayouts. - Scoped active-tooltip coordination to
DashronymScope. Each scope permits one open tooltip without interfering with independent scopes. - Removed the parser's ineffective per-build LRU cache and its supporting implementation.
- Limited each configuration to 16 marker pairs to keep matching work bounded.
- Added
DashronymConfig.withMarkersas the defensively copying API for custom marker pairs; the const default constructor is now inherently immutable. - Reduced the example and package documentation to the core registry-first workflow.
- Updated the latest-stable CI lane to Flutter 3.44.8.
- Removed unreliable pub.dev vanity-metric badges while retaining badges for CI, the published version, enforced coverage floors, and licensing.
Fixed #
- Honored
DashronymConfig(minLen: 1)when matching one-character acronyms. - Disposed replaced tooltip animations during widget rebuilds.
- Made Escape dismiss hover-opened tooltips without moving keyboard focus.
Removed #
- Removed the rich glossary entry, alias, duplicate-policy, and JSON interchange APIs. Applications that need those concerns can own them and provide Dashronym with a string map at the UI boundary.
- Removed rich-entry metadata from custom tooltip details.
- Removed
package:dashronym/dashronym_core.dart. Importpackage:dashronym/dashronym.dartfor both configuration and Flutter UI APIs.
0.1.0 - 2026-07-20 #
This release establishes the accessible Flutter interaction contract and the first portable glossary-data contract. See MIGRATION.md for upgrade examples and behavior changes.
Added #
- Added immutable
DashronymEntryandDashronymGlossarymodels with aliases, tags, provenance fields, deeply immutable JSON metadata, deterministic serialization, value equality, clear-safecopyWith, and direct glossary-to-registry conversion. - Published the strict, versioned Dashronym glossary JSON Schema at
schema/v1/dashronym-glossary.schema.json. - Added the Flutter-import-free
dashronym_core.dartentry point for domain code running within Flutter-SDK projects. - Added rich registry construction, canonical and alias lookup,
DashronymDuplicatePolicy, and rich-entry access from custom tooltip details. - Added
DashronymScopefor shared registry, matching, theme, and tooltip defaults. - Made
DashronymThemea FlutterThemeExtensionwith animated interpolation and explicit clearing of nullable settings. - Added recursive
DashronymText.richandText.rich(...).dashronyms()support while preserving authored span metadata and existing widget spans. - Added a minimum/latest Flutter CI matrix, coverage gates, warning-free dartdoc and publication checks, a canonical macOS golden job, plus contributing, security, migration, release, and roadmap documentation.
- Added README badges for CI, pub.dev health metrics, enforced coverage floors, and licensing.
Changed #
- Standardized package-owned public types and source filenames on the
Dashronymname. This includesDashronymEntry,DashronymRegistry,DashronymDuplicatePolicy, andDashronymTooltipDetails; seeMIGRATION.mdfor the complete rename table. - Clarified registry factories:
DashronymRegistry.fromEntriesaccepts richDashronymEntryvalues, whilefromMapEntriesaccepts legacyMapEntry<String, String>values. - Raised the supported SDK floor to Dart 3.10 and Flutter 3.38.1 so the package constraints match the APIs used by the implementation.
- Made
DashronymTextregistry, configuration, theme, and tooltip builder inheritable. Explicit arguments take precedence overDashronymScope, then app theme and package defaults. - Rebuilt tooltip ownership around
OverlayPortalwith layout-time anchor positioning so inherited context, lifecycle, focus traversal, nested overlays, and root-overlay geometry stay consistent. - Defined keyboard, hover, outside-tap, Escape, scroll, resize, focus restoration, and single-active-tooltip behavior.
- Applied one capability-aware screen-reader announcement path that exposes the complete definition, and kept the inserted tooltip available through semantics.
- Exposed expanded/collapsed state on each inline glossary control.
- Unified stock and custom tooltip constraints, including safe areas, keyboard insets, compact viewports, maximum height, and scrollable long content.
- Preserved selection registration, directionality, locale, semantics identifiers, rich styles, and effective text scaling through transformed text.
- Moved
flutter_localizationsto development dependencies because the package library does not import it. - Updated package metadata and links to the canonical
dancingskylab/dashronymrepository. - Reduced the roadmap to forward-looking priorities so completed release work remains in this changelog instead of going stale in two places.
Fixed #
- Isolated parser caches so definitions can never leak between registries.
- Bounded and corrected LRU promotion, eviction, nullable-value, and validation behavior.
- Enforced configuration invariants in release builds and defensively copied runtime marker collections.
- Supported marker pairs made from non-BMP Unicode scalar values.
- Expanded explicit marker matching to registered punctuation and mixed-case
terms such as
(C++),(.NET),(R&D), and(OAuth), while keeping bare matching conservative. - Prevented rapid hide/reopen animation completions from removing a replacement tooltip.
- Prevented hover tooltips inside stock or custom card controls from triggering
Flutter
RenderFollowerLayerlayout assertions. - Kept hover-open tooltips visible while the pointer moves between the trigger and surface.
- Prevented WidgetSpan trigger text from receiving the effective scale twice while retaining that scale for tooltip content and direct inline widgets.
- Kept interactive acronym semantics reachable when callers provide an outer
semanticsLabel. - Kept authored locale semantics compatible with Flutter 3.38 by establishing the required semantics container.
- Corrected RTL/edge positioning, compact-height clamping, long-definition scrolling, and stale overlay dismissal during viewport changes.
- Allowed Material elevation shadows to paint outside tooltip layout bounds instead of cropping them to a rectangular viewport clamp.
0.0.10 #
- Updated inline tooltip semantics to use
SemanticsService.sendAnnouncementwithView.of(context)so screen reader announcements remain polite and compatible with multi-window Flutter apps. - Bumped tooling to
flutter_lints^6.0.0 and refreshed formatting to keepdart analyzeclean on Dart 3.10 / Flutter 3.38. - Verified package health on pub.dev (160/160 score) and dry-run publishing on the latest stable toolchain.
- Slimmed the public API surface to focus on
DashronymText,AcronymRegistry,DashronymConfig,DashronymTheme, andDashronymLocalizations, keeping overlay widgets, parsers, and LRU caching as internallib/src/details. - Kept the
Text.dashronyms()extension as a convenient way to enhance existingTextwidgets, while implementing it in terms ofDashronymTextso both paths share the same behavior. - Renamed internal files to clearer, feature-oriented names (for example:
acronym_inline.dart,acronym_parser.dart,lru_cache.dart,dashronym_theme.dart,dashronym_localizations.dart) and updated docs/tests to match. - Split the parsing pipeline into a pure-Dart core (
DashronymParserCore+DashronymTokens) and a small Flutter adapter (DashronymParser) that builds spans and inline widgets. - Documented the internal layering and responsibilities in the codebase so domain logic and presentation concerns are clearly separated.
- Tightened README and in-code documentation to keep
DashronymTextas the primary API while keeping theText.dashronyms()extension as a convenience helper for existingTextwidgets. - Made tooltip positioning explicitly respect [TextDirection], so RTL layouts bias the tooltip horizontally from the anchor’s right edge and updated the inline goldens to match.
0.0.9 #
- Introduced a shared
TooltipConstraintsResolverso every tooltip (stock or custom) respects viewport gutters plus new orientation caps: 360 px portrait, 600 px landscape. - Wrapped inline tooltips with the resolver, ensuring custom builders inherit the same clamp logic while overlays keep the existing follower nudge/scroll dismissal behaviour.
- Expanded unit and widget coverage (100 % lines) with constraint, positioner, orientation-change, and scroll-dismiss tests; refreshed all inline goldens.
- Replaced the published screenshots with the latest portrait/landscape captures and updated README guidance to highlight the new sizing rules.
0.0.8 #
- Fixed pubspec screenshot metadata quoting for pub.dev
0.0.7 #
- Added annotated screenshots and an animated tooltip walkthrough to the package metadata so pub.dev showcases behavior.
- Expanded pub.dev topics with acronym and accessibility tags to improve discoverability.
- Documented localization constructors to maintain full dartdoc coverage for pub scoring.
- Updated README installation instructions to reference version 0.0.7.
0.0.6 #
- Clamp inline tooltip overlays so they stay within the visible viewport on mobile, desktop, and when the window resizes.
- Made tooltip positioning responsive to safe areas, keyboard insets, and RTL layouts, and prevented teardown setState calls.
- Added regression test coverage for the viewport-clamping behavior.
0.0.5 #
- Expanded dartdoc coverage across public APIs, including constructors and library documentation.
- Clarified usage examples for
DashronymText,Text.dashronyms, and configuration helpers. - Ran
dart formaton source and tests to keep style aligned with Flutter guidelines.
0.0.4 #
- Added configurable hover hide delay and tooltip fade duration to
DashronymTheme. - Introduced animated tooltip dismissal with fade transitions and deferred hover hide timers.
- Improved focus handling to auto-show tooltips and prevent lingering overlays when unmounted.
- Excluded tests from static analysis to speed up local iteration and updated theme tests for new fields.
0.0.3 #
- Refactored inline tooltip widgets for richer semantics and accessibility.
- Added localizations, theme customization options, and comprehensive tests.
- Expanded the example app with advanced customization and localization demos.
0.0.2 #
- Applied
dart format .and refreshed documentation to align with pub.dev publishing guidelines.
0.0.1 #
- Initial release with
Text.dashronyms()extension,DashronymTextwidget, and configurable registry/theme support.
