snow_rendering 0.2.8
snow_rendering: ^0.2.8 copied to clipboard
Weather-to-rendering computation for driving safety apps — surface classification, particle parameters, visibility degradation. Pure Dart.
0.2.8 #
Widens the navigation_safety_core constraint to >=0.10.0 <0.12.0.
The previous ^0.10.0 constraint excluded core 0.11.x, so a project that asked
for the current core could not also take this package at its current version.
The resolver silently selected an older release of this package instead, with no
error and no warning. Core 0.11.0 and 0.11.1 are additive (a re-export, and a
percent-to-fraction humidity factory); this package compiles and its full test
suite passes against 0.11.1.
Also removes a dependency_overrides block that referenced sibling packages by
relative path. It was inert for consumers, but it prevented this package from
resolving standalone from its published archive.
No API or behaviour change.
Changelog #
0.2.7 #
- Precise surface vocabulary on the announcement seam. New
RoadSurfaceAnnouncement+RoadSurfaceState.announcementextension: every surface exceptdry(which yieldsnull— nothing to announce) provides a short spoken-style line (JA + EN) that leads with the precise JP-domestic surface term — ブラックアイスバーン forblackIce, 圧雪 forcompactedSnow, シャーベット forslush— plus, for the snow-vocabulary surfaces, the authoritative JAF entry fromjapanese_snow_vocabulary(verbatimsafeDrivingResponseJafor display surfaces; verbatim-relay binding). This is package-level capability for consumers composing warning surfaces; it does not itself speak or render anything. - Certainty is graded, never asserted. The classifier's black-ice determinations are inferences (a feed flag or a dew-point heuristic), so composed lines say 凍結しているおそれ ("may be frozen"), mirroring JAF's own 可能性 phrasing — never flat certainty.
- Two black-ice variants, honest about visibility. The general
RoadSurfaceState.blackIce.announcementis provenance-neutral: it is reachable from a feed ice flag during visible snowfall, where claiming the road "looks wet" would be false — so it carries neither a looks-wet spoken line NOR the JAF vocabulary entry (whose verbatim advisory itself opens with the looks-wet description). The separate top-levelinvisibleBlackIceAnnouncementcarries both — the looks-merely-wet spoken fact and the verbatim JAF entry — and is intended ONLY for detection paths that imply invisibility (radiative frost, freezing rain). Additive, no breaking changes.
0.2.6 #
- Radiative-frost black ice on the in-drive surface classifier.
RoadSurfaceState.fromConditionnow recognises the no-precipitation, above-zero-ambient black-ice window (clear-sky radiative cooling freezing the road while the air still reads +1…+3 °C — the Akita pre-dawn bridge-deck hazard). Previously this case classified asdry/ full grip, directly contradicting the pre-trip briefing's black-ice warning on the same morning. The classifier now callsnavigation_safety_calibration'sisRadiativeFrostBlackIce— the SAME function the pre-trip advisor uses, so the two surfaces cannot disagree about the radiative-frost black-ice determination when both are given the same temperature + humidity. (This is a scoped guarantee, not an absolute one: the surfaces can still differ on other hazard classes, and on any feed that omits humidity the in-drive branch abstains — seeKNOWN_LIMITATIONS.md.) Humidity-gated and caution-add-only: needs the newWeatherCondition.humidityRH; absent humidity abstains (returnsdry), so this never fabricates a hazard and never downgrades a colder classification. Backward-compatible — the new behaviour only activates when adriving_weather ^0.4.4feed supplies humidity, so consumers on^0.2.xadopt this with no change. Adds a direct dependency onnavigation_safety_calibration ^0.1.3. - Known scope (see
KNOWN_LIMITATIONS.md): the in-drive classifier runs all-hours with no wind/time gate, and the primary live feeds (digitraffic, KUKSA) do not yet supply humidity — so this fix does not yet change the live in-drive screen for those feeds. It is a correct classifier that awaits a humidity-bearing live feed + a cry-wolf (wind/time) calibration pass.
0.2.5 #
- Non-breaking restore + honest correction of a mislabeled release. The 0.2.4
entry below was labeled "(no API change)", but 0.2.4 had in fact shipped a
breaking public-API change relative to 0.2.3: it added the
RecommendedResponseenum, exported it from the package, and added arequiredrecommendedResponseparameter to the public const constructor ofDrivingConditionAssessment. Therequiredparameter broke any edge developer who constructsDrivingConditionAssessmentdirectly (the 0.2.3 call sites no longer compiled). - This release makes the
recommendedResponseconstructor parameter optional, defaulting toRecommendedResponse.proceed(the neutral, lowest-severity "conditions within normal driving tolerance" tier). Direct 0.2.3-style construction that omitsrecommendedResponsecompiles again; 0.2.4 callers that passrecommendedResponseare unaffected. The field stays non-nullable, so consumers can always read a concrete tier. - Documents the public API as it now stands: the
RecommendedResponseenum, therecommendedResponsefield onDrivingConditionAssessment(still part of equality/props), and the package export ofrecommended_response.dartare all supported public API. TheDrivingConditionAssessment.fromConditionfactory continues to classify and setrecommendedResponseexplicitly.
0.2.4 #
- docs: correct stale README install pin to current version (no API change).
NOTE (see 0.2.5): this release was mislabeled — it also shipped a breaking
API change (a
requiredrecommendedResponsector parameter + theRecommendedResponseenum + its export). 0.2.5 restores source compatibility.
0.2.3 #
- Republish from the embedded-target Dart 3.10.1 SDK (Flutter 3.38.3) to correct a stale
^3.11.0SDK floor in the previously-published artifact. No source or behavior change; the source already declaredsdk: ^3.10.0. Restorespub getfor embedded/automotive Dart consumers on Dart 3.10.x.
0.2.2 — 2026-05-10 — Pana score recovery (Theme α P3) #
- Trim pubspec
descriptionto within the pana 60–180 character target. - Add minimal
example/main.dartfor pana documentation scoring. - Apply
dart formatto clear any formatter findings. - No SDK source changes; metadata + format pass only.
0.2.1 — 2026-05-10 — Refresh cascade-stale dependency constraint #
driving_weather: ^0.3.0→^0.4.0(consumer-side refresh after driving_weather 0.4.0 release earlier the same day).- No source changes; pubspec dep-constraint refresh only.
0.2.0 #
- Add
DataBudget— stateful data-fetch budget tracker for snow- overlay render bandwidth management. Integrator-suppliedDataMeterProviderinterface; per-cycle bytes budget checked againstDataBudgetConfig; broadcastbudgetEventsstream emitsBudgetWarning(75%) /BudgetExhausted(100%) /RenderFidelityDrop(in lock-step with Exhausted). Mirrors theGlanceBudgetTrackerpattern fromnavigation_safety0.9.0 (caution-add-only / severity-not-profile / driver-always-drives invariants enforced via debug-mode runtime asserts). - Add
DataBudgetConfig.forProfile(DriverProfile)factory — per- cohort tighter-direction defaults (4MB baseline / 3MBnoviceUrban/ 2MBageingRural+foreignTouristSnowZonefor bandwidth-margin). Per-cohort budgets are UNVERIFIED-magnitude design-default- hypothesis pending field-measurement validation; conservative-only (every cohort<=4MB baseline). Per-population calibration deferred. - Add
tighten(int)— auto-tightening allowed at runtime; new budget must be<=active budget per caution-add-only invariant. - Add
relax(int, BudgetRelaxConfirmation)— auto-relax FORBIDDEN; loosening requires integrator-supplied affirmative confirmation token. Mirrors the cap-override-with-confirmation pattern fromnavigation_safety_core0.10.0 #30 (driver-always-drives). - Add
BudgetResetReasonenum +DataFetchEventvalue object + sealedDataBudgetEventhierarchy. - Add
navigation_safety_core: ^0.10.0dependency forDriverProfileconsumption. - Add
SAFETY_BOUNDARY.md(DataBudget invariants; cohort-tighter direction caveat; auto-relax-with-confirmation pattern; ASIL-QM advisory; severity-not-profile + driver-always-drives preserved). - Add
KNOWN_LIMITATIONS.md(per-cohort data-budget UNVERIFIED- magnitude flags + bandwidth-class assumptions). - Public API additions are non-breaking; existing
DrivingConditionAssessment/RoadSurfaceState/PrecipitationConfig/VisibilityDegradationcontracts unchanged.
0.1.0 #
- Initial extraction from
driving_conditions(SNGNav P1, D-SC22-2). RoadSurfaceState— six-state road surface classification with grip factors.PrecipitationConfig— particle configuration derived from weather conditions.VisibilityDegradation— opacity and blur parameters from visibility distance.DrivingConditionAssessment— combined assessment with advisory message.HysteresisFilter<T>— debounce filter for state oscillation at boundary conditions.