ethos 0.8.3
ethos: ^0.8.3 copied to clipboard
Measure accessibility coverage in Flutter apps using WCAG 2.2 specifications with Spec-Driven Development.
0.8.3 #
ethos --version— new flag (--version/-V/ethos version) that prints the installed version and exits. Useful to confirm which version is active afterdart pub global activate ethos.
0.8.2 #
-pis now optional — all three subcommands default to the current working directory when--project-pathis omitte.
0.8.1 #
- Fixed
_ResolvedWidgetVisitorindeep_analyzer.dartto match the fixes already applied towidget_visitor.dartin 0.8.0.
0.8.0 #
-
Flutter test integration — new
package:ethos/ethos_test.dartbarrel with matchers and helpers for use indart testorflutter_testsuites. Import path is separate from the main API so test utilities never reach production builds. -
analyzer 8.xcompatibility fixes — several breaking AST API changes introduced inanalyzer 8.xare now handled across all detectors and utilities:NamedArgument.nameis now aToken(not aLabel) — reading the parameter name viatoken.toString()with alabel?.namefallback for 7.x.NamedArgument.argumentExpressionreplaces.expressionas the canonical getter for the argument value — tried first with.expressionfallback.PositionalArgumentno longer implementsExpression— unwrapped via.argumentExpressionbefore type checks.NodeList<Argument>replacesNodeList<Expression>inArgumentList.arguments— all argument iteration usesdynamictyping with duck-typed helpers.
0.7.0 #
ethos watchsubcommand — incremental re-analysis on file save. Performs a full scan on startup, then re-parses only the changed file and recomputes the report from the cached results of all other files. Prints the full report after each change with▲/▼coverage deltas and highlights findings in the modified file only.
0.6.0 #
-
2 new WCAG detectors (7 rules covered):
- Non-text Content (1.1.1, Level A): detects images and icons without an accessible text alternative (
Semantics(label:),semanticLabel, or explicitly marked as decorative). - Resize Text (1.4.4, Level AA): detects fixed
textScaleFactorandtextScalervalues that ignore system text-size preferences.
- Non-text Content (1.1.1, Level A): detects images and icons without an accessible text alternative (
-
ethos initautomatically generates a starterethos.yamlwith custom widgets and color definitions that require manual configuration. -
Public API for
ethos initviaWidgetDiscovery.discover()andEthosYamlGenerator.generate(). -
Compliance levels updated: WCAG 1.1.1 added to A/AA/AAA, and WCAG 1.4.4 added to AA/AAA.
0.5.1 #
- Resolve absolute path issue for package_config.json
0.5.0 #
- Deep analysis mode: a new CLI flag and
DeepAnalyzerAPI that usesAnalysisContextCollectionto resolve the full project — cross-file references, class hierarchies, and type information. Detects widgets and accessibility issues that standard syntactic analysis misses entirely. Falls back to standard mode automatically when the project is not ready (noflutter pub getrun).
0.4.0 #
-
Improved compatibility with newer
analyzerversions (up to 13.x), ensuring Ethos works reliably across supported releases. -
Added official desktop platform support (
Windows,macOS, andLinux) and resolved analyzer/lint-related issues. -
Significantly enhanced color contrast detection by automatically extracting colors from
ThemeDataand supporting customcolor_aliasesinethos.yaml, reducing indeterminate results in real-world applications. -
Introduced
ColorAliasandThemeExtractorto resolve design-system and theme-based colors into actual WCAG contrast calculations.
0.3.0 #
- CLI command renamed from
accessibility-coveragetoethos.
0.2.0 #
-
Built-in WCAG 2.2 specification with automatic project configuration via
ethos.yaml; no external spec files required. -
Extensible design-system support through
widget_aliasesand per-rule customization throughrule_overrides, allowing custom widgets to participate in accessibility analysis. -
Improved analysis accuracy with alias-aware detectors, precise source-level findings, explicit
Indeterminatetracking, and better support for modern Dart syntax and widget detection patterns.
0.1.0 #
-
Pure static analysis (AST) using
package:analyzerandRecursiveAstVisitorto map Flutter widgets without runtime analysis. -
Transparent metrics: Rigorous classification of nodes into Pass, Fail, or Undetermined (for dynamic styles or
Theme.of(context)inheritance). -
Complete decoupling: Detectors (
SemanticLabels,Contrast,TouchTarget,Keyboard,FocusOrder) are registered independently in aDetectorRegistry.
0.0.1 #
- Initial MVP with 5 WCAG 2.2 coverage rules (semantics, contrast, touch targets, keyboard, focus)
- Spec-Driven Development with formal YAML specifications
- CLI tool with JSON, human, and markdown report formats
- Compliance level determination (A/AA/AAA)
- Full test suite and documentation