Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
1.7.1-beta.1 - 2026-06-01
Added
- MIT LICENSE file with full license text; linked from README
- "Über Mich" page with humanist values and personal stance (#96)
1.7.0 - 2026-03-07
Added
- Fullscreen charts support x-axis zoom and pan via pinch gesture; double-tap resets the view; axis labels recalculate for the visible range (#91)
- Category (Epistemisch/Aleatorisch) and prediction type (Wahrscheinlichkeit, Ja/Nein, Faktual, Intervall) filter chips in the prediction list; chips appear only when relevant (#93)
- Overdue filter chip cycles through three states: no filter, overdue only, not overdue only
- Manual import shows full checkbox list with per-question selection; duplicates are pre-deselected, struck through, and non-selectable; imported count shown on button and success card (#94)
Fixed
- Back navigation from a Winkler Score prediction detail now returns to the fullscreen chart in its previous zoom state (#91)
- Factual prediction type missing from type filter chips (#93)
- Overdue filter had no effect on the resolved tab (#93)
1.7.0-beta.7 - 2026-03-07
Fixed
- Factual prediction type missing from type filter chips (#93)
- Overdue filter chip had no effect on the resolved tab (#93)
1.7.0-beta.6 - 2026-03-07
Added
- Manual import shows full checkbox list with per-question selection; duplicates are pre-deselected, struck through, and non-selectable (#94)
- Import button and post-import success card show actual imported question count for both manual and AI import (#94)
1.7.0-beta.5 - 2026-03-07
Added
- Overdue filter chip cycles through three states: no filter, overdue only, not overdue only
1.7.0-beta.4 - 2026-03-07
Added
- Category (Epistemisch/Aleatorisch) and prediction type (Wahrscheinlichkeit, Ja/Nein, Intervall) filter chips in the prediction list; chips appear only when relevant (#93)
1.7.0-beta.3 - 2026-03-07
Fixed
- Back navigation from a Winkler Score prediction detail now returns to the fullscreen chart in its previous zoom state (#91)
1.7.0-beta.2 - 2026-03-07
Added
- Fullscreen charts support x-axis zoom and pan via pinch gesture; double-tap resets the view; axis labels recalculate for the visible range (#91)
1.6.0 - 2026-03-07
Fixed
- Winkler Score data point links now active only in the fullscreen detail view, not on the summary chart; any tap on the summary chart opens fullscreen, consistent with Brier and Log Loss (#90)
1.5.0 - 2026-03-07
Added
- Winkler Score chart: tapping a data point opens the corresponding prediction detail; back navigation returns to statistics (#90)
1.4.2 - 2026-03-06
Fixed
- Winkler Score chart y-axis is now logarithmic; scores spanning multiple orders of magnitude are readable without visual compression of small values (#89)
1.4.1 - 2026-03-06
Fixed
- Replace misleading Winkler Score mean card with a per-estimate scatter chart; dots coloured green (hit) and red (miss) (#88)
1.4.0 - 2026-03-06
Added
- Winkler Score for interval predictions on the statistics screen; shows mean interval score and hit rate (#88)
Fixed
- Template share buttons now write to a temporary file before
sharing;
XFile.fromData()produced no valid URI for Android share intents (#81)
1.3.0 - 2026-03-06
Added
- AES-256-GCM encrypted full backup with PBKDF2-SHA256 key derivation;
create and restore
.kbakfiles from Settings (#85) - Delete button in prediction detail screen AppBar with confirmation dialog (#87)
- Per-tab sort direction persisted via SharedPreferences; each tab remembers its own sort order across sessions (#86)
- Skip duplicate questions by default on import; configurable toggle in the import screen (#84)
- Full multi-select list in AI generator preview, all pre-selected; replaces the static "first 5" preview (#83)
- YAML template buttons for each prediction type in import screen
- Share button in prediction list view; exports the active tab as JSON
- Tag chip selector on new-prediction screen
- Preselect existing tags in the bulk-edit dialog
- "Ohne Tag" filter chip in statistics screen
- Exact 5 % steps in calibration chart x-axis
Fixed
- Invalid confidence values (< 0.5) in documentation examples (#82)
1.2.0 - 2026-03-05
Breaking Changes
- Database schema updated; migration runs automatically on first launch. Downgrading to v1.0.0 is not supported without data loss.
Added
- Overdue indicator on home screen stat cards; cards turn red with a warning icon when unresolved predictions have passed their deadline (#54)
- "Überfällig" filter chip in prediction list to show only overdue predictions across open and pending tabs (#55)
- Delete button in resolve screen AppBar with confirmation dialog (#56)
- Sort order toggle in prediction list; reverses per-tab default (open/pending: oldest first; resolved: newest first) (#57)
- Tag selection via FilterChips in the AI generator (#68)
- Calendar toggle in pending tab AppBar to sort by deadline; entries without a deadline stay at the end regardless of direction
- Global tag manager in Settings to delete tags from all predictions at once, with per-tag confirmation dialog (#70)
- "Ohne Tag" filter chip in prediction list; visible only when untagged entries exist, visually distinct via secondary-color border (#72)
- Rename action in global tag manager; inline dialog with pre-filled name, updates all predictions at once (#73)
- Confidence slider snaps to 5 % steps from 50 to 100 % (#71)
Fixed
- Interval confidence slider minimum raised to 50 % (#67)
- Calibration dot size scaled proportionally to the most-populated bin instead of a hard clamp (#69)
- Type cast error in v3 schema migration (#73)
1.2.0-beta.1 - 2026-03-05
Added
- "Ohne Tag" filter chip in prediction list; visible only when untagged entries exist, visually distinct via secondary-color border (#72)
- Rename action in the global tag manager; inline dialog with pre-filled name, updates all predictions at once (#73)
- Confidence slider now snaps to 5 % steps from 50 to 100 %; one-time startup migration rounds existing values (#71)
Fixed
- Type cast error in v3 schema migration (
addColumnexpectedGeneratedColumn<Object>) (#73)
1.1.1-beta.1 - 2026-03-05
Added
- Calendar toggle in the pending tab AppBar to sort by deadline; entries without a deadline stay at the end regardless of direction
- Global tag manager in Settings to delete tags from all predictions at once, with per-tag confirmation dialog (#70)
1.1.0-beta.1 - 2026-03-05
Added
- Overdue indicator on home screen stat cards; cards turn red with a warning icon when unresolved predictions have passed their deadline (#54)
- "Überfällig" filter chip in prediction list to show only overdue predictions across open and pending tabs (#55)
- Delete button in resolve screen AppBar with confirmation dialog (#56)
- Sort order toggle in prediction list; reverses per-tab default (open/pending: oldest first; resolved: newest first) (#57)
- Tag selection via FilterChips in the AI generator, sourced from existing database tags (#68)
Fixed
- Interval confidence slider minimum raised to 50 %; calibration bins restructured to cover 50–100 % range (#67)
- Calibration dot size scaled proportionally to the most-populated bin instead of a hard clamp (#69)
1.0.0 - 2026-03-04
First stable release of Kailibrate. All features from the v0.20–v0.28 beta cycle are considered production-ready. The database schema (v5), import/export format (v2), and public API surface are now stable; breaking changes will follow semver and require a major version bump.
0.28.0 - 2026-03-04
Added
- AI-powered question catalog generator via OpenRouter; configurable prompt templates, question count (5/10/15/20), and model selection
- API key for OpenRouter stored securely; write-only after saving (#40)
- Preview screen before AI import with share-as-obfuscated-JSON option
- Tags input in AI generator restricts LLM-assigned labels (#36)
- Generation cost and token count shown after each AI run (#39, #50)
- Configurable model list (one per line); selection persists per session
- Aleatory AI templates for binary and interval predictions (#46)
{date}placeholder in aleatory templates for future-only deadlines- Warning and exclusion checkbox for past-deadline questions in preview
- New
factualprediction type for epistemic Wahr/Falsch questions (#43) - Wahr/Falsch UI in estimate, resolve, feedback, card, and detail views (#43)
- Deadline shown on prediction cards with color-coded urgency (#48)
- Deadline editing from detail view for open/pending predictions (#47)
- "Überfällig" badge for overdue predictions (#47)
- Binary confidence slider restricted to 50–99 % (#33)
- Default prompt templates can be deleted and recovered (#34)
Changed
probabilitytype replaced bybinary(aleatory) andfactual(epistemic); import parser remaps legacy entries; schema migrated to v5 (#45)- Tapping any prediction card opens detail view; primary action via FAB (#47)
- Mixed AI template removed in favour of focused aleatory templates (#46)
- Docs restructured with why/what/how narrative and new concept pages
Fixed
- Calibration scores use directional confidence for binary/factual predictions; correct "99 % FALSCH" appears in 99 % bin, not 1 % (#52)
- Resolution outcome hidden in detail view until user has estimated (#51)
- Generation cost shown prominently on AI import success screen (#50)
- Settings navigation in AI generator corrected (#31)
- AI import preview no longer reveals resolution icons (#32)
- Yes/no prompts set predictionType "binary" correctly (#35)
- Binary feedback shows actual Ja/Nein answer below verdict (#42)
- Binary correctness based on binaryChoice == outcome (#41)
0.28.0-beta.1 - 2026-03-04
Fixed
- Calibration curve and scores now use directional confidence for binary/factual predictions; a "99 % FALSCH" estimate that was correct now appears in the 99 % bin, not the 1 % bin (#52)
0.27.0-beta.1 - 2026-03-04
Fixed
- Generation cost and token count now shown prominently above the success icon after AI import (#50)
- Resolution outcome hidden in detail view until user has estimated; shows locked indicator instead (#51)
0.26.0-beta.1 - 2026-03-04
Changed
- Restructured docs with why/what/how narrative flow
- New Konzepte page covering calibration, categories, types, and states
- New KI-Generator page with step-by-step usage guide
- Removed deprecated probability type from examples
- Fixed stale navigation description in prediction workflow
0.25.0-beta.1 - 2026-03-04
Added
- Warning in AI generator preview when questions have past deadlines
- Checkbox to exclude past-deadline questions before import
{date}placeholder in aleatory prompt templates so the model generates future-only deadlines
0.24.0-beta.1 - 2026-03-04
Added
- Deadline shown on prediction cards with color-coded urgency: red for overdue, orange for due within 7 days (#48)
0.23.0-beta.1 - 2026-03-04
Added
- Deadline can be set, changed, or cleared from the detail view for open and pending predictions (#47)
- Overdue open/pending predictions flagged with "Überfällig" badge in the overview (#47)
Changed
- Tapping any prediction card now opens the detail view; primary action (Schätzen/Auflösen) surfaced via FAB for non-resolved predictions (#47)
0.22.0-beta.1 - 2026-03-04
Added
- Aleatory AI templates for binary (Ja/Nein) and interval predictions on future events without known answers (#46)
Changed
probabilityprediction type removed; replaced bybinary(aleatory) andfactual(epistemic) throughout the app (#45)- Import parser remaps legacy
probabilityentries tobinary/factualbased on category; schema migrated to v5 (#45) - Stats and feedback screens updated to reflect new type set (#44, #45)
- Mixed AI template removed in favour of the two focused aleatory templates (#46)
- LLM prompt docs and type reference updated (#45, #46)
0.21.0-beta.5 - 2026-03-04
Added
- New 'factual' predictionType for epistemic Wahr/Falsch questions, distinct from 'binary' (Ja/Nein) used for aleatory events (#43)
- Wahr/Falsch buttons in estimate, resolve, feedback, card, and detail views for factual questions (#43)
Changed
- DB migration v4 converts existing epistemic binary entries to factual (#43)
- New-prediction screen shows Wahr/Falsch segment only for epistemic category; Ja/Nein stays for aleatory (#43)
- Default AI prompt template updated to use predictionType "factual" (#43)
Fixed
- Binary feedback banner now shows actual Ja/Nein answer below Richtig/Falsch verdict (#42)
0.21.0-beta.4 - 2026-03-04
Fixed
- Yes/no questions now show green for a correct "Nein" prediction; color and icon are based on binaryChoice == outcome instead of outcome alone (feedback banner, prediction card, detail view) (#41)
0.21.0-beta.3 - 2026-03-04
Added
- Tags input in AI generator: restricts which labels the LLM assigns to generated questions, for consistent in-app filtering (#36)
- Generation cost and token count shown in the preview after each run (#39)
- Info icon in model settings links to openrouter.ai/models (#37)
- Clipboard copy button for the model list (#37)
Changed
- Model list editor replaced with a multiline text field (one model per line); easier to manage and paste from (#37)
- Selected model is persisted and restored on next session (#38)
- API key is now write-only: after saving, only bullet placeholders are shown with an "Ändern" button (#40)
Fixed
- Yes/no question prompts (default and mixed templates) now correctly set predictionType: "binary" so the binary estimate UI is shown after import (#35)
0.21.0-beta.2 - 2026-03-03
Added
- Default prompt templates can now be deleted; they are hidden via a per-device suppression list and remain recoverable from source code (#34)
0.21.0-beta.1 - 2026-03-03
Added
- Configurable model list in Settings: add/remove OpenRouter models, first entry used as default (#34)
- Model dropdown in AI generator form, pre-filled with the first configured model; selection persists per session (#34)
- Binary confidence slider now spans 50–99 % (50 % = maximum uncertainty / guessing); below 50 % the answer direction should be flipped instead (#33)
Fixed
- "Einstellungen" button in the missing-API-key card now navigates
correctly with go_router (
context.pushinstead ofNavigator.pushNamed) (#31) - Import preview in AI generator no longer reveals correct/incorrect icons for questions with embedded resolutions (#32)
0.20.0-beta.1 - 2026-03-03
Added
- Generate epistemic quiz questions via OpenRouter AI; supports custom prompt templates (editable and deletable) and a configurable question count (5 / 10 / 15 / 20)
- API key for OpenRouter stored securely via flutter_secure_storage; configurable in Settings
- Preview screen before import: category, source, question count, first 5 questions with resolution indicators
- Share generated catalog as obfuscated v2 JSON directly from the preview screen, without importing first
ImportParser.obfuscateResolution()as public static method for encoding resolutions outside the database layer
0.18.2 - 2026-03-03
Fixed
- "Select all" button now toggles: first tap selects all visible predictions in the active tab, second tap deselects all (#29)
- Button icon and tooltip reflect current state (
select_all↔deselect)
0.18.1 - 2026-03-03
Changed
- Project renamed from Calibrate to Kailibrate: package name,
applicationId (
dev.kailibrate.app), database filename (kailibrate.db), notification channel ID, and app title
Fixed
- Release workflow: APK filename in
files:parameter corrected (calibrate-→kailibrate-);fail_on_unmatched_files: trueadded
0.18.0 - 2026-03-03
Changed
- Project renamed from Calibrate to Kailibrate: package name, applicationId
(
dev.kailibrate.app), database filename (kailibrate.db), notification channel ID, app title, and all documentation updated accordingly
0.17.4 - 2026-03-03
Fixed
- Interval unit (e.g. "Liter", "km") is now stored in the Questions table (schema v3) instead of only in Estimates; previously the unit was lost for imported questions without bounds, causing the estimate screen to ask for it again
- Estimate screen shows a read-only label instead of an editable text field when the unit is already known from the question or an existing estimate
0.17.3 - 2026-03-03
Fixed
- Unit field in v2 interval imports now read from question level as fallback when absent from the estimate sub-object; data from callibrate-gen and similar tools was silently dropped (#28)
exportForSharingnow includesunitfor interval predictions so the unit survives re-import (#28)
0.17.2 - 2026-03-03
Fixed
- Unit (e.g. km, °C) now persisted and shown when estimating interval predictions via the estimate screen; previously lost on every save (#28)
- Prediction card shows numeric outcome with unit for resolved interval predictions instead of plain "Ja"/"Nein" (#28)
0.17.1 - 2026-03-03
Fixed
- Tapping anywhere on a chart now opens the fullscreen view; previously only the bottom-left blank area responded because fl_chart's internal GestureDetector consumed touch events across most of the surface (#27)
0.17.0 - 2026-03-03
Added
- Tap any chart on the statistics screen to open it fullscreen in landscape orientation for easier reading (#27)
0.16.1 - 2026-03-03
Fixed
- Redundant floating action button for new prediction removed from home screen; the navigation tile serves as the single entry point (#26)
0.16.0 - 2026-03-02
Added
- Brier Score and Log Loss history charts on the statistics screen; each chart shows the cumulative average after every resolved estimate, sorted chronologically, with a dashed coin-flip reference line (0.25 / ln 2) and a segmented button to limit the view to the last 25, 50, or 100 estimates
0.15.6 - 2026-03-02
Fixed
- Interval bounds and numeric outcomes now display as integers when the stored value has no fractional part (e.g. "45 km" instead of "45.0 km"); unit is also shown in the feedback sheet's outcome row
0.15.5 - 2026-03-02
Fixed
- Feedback sheet after estimating a pre-resolved question now displays resolution notes and the numeric outcome stored with the import (#24)
0.15.4 - 2026-03-02
Fixed
- Resolve screen now shows the known answer for questions imported with an embedded answer (e.g. trivia catalogues) (#24)
0.15.3 - 2026-03-02
Fixed
- Switch from exact to inexact alarm scheduling to prevent a PlatformException when SCHEDULE_EXACT_ALARM is not granted on Android 12+ (#22)
0.15.2 - 2026-03-02
Fixed
- Inline estimate state (slider value, Ja/Nein selection) no longer resets when switching prediction type or toggling the deadline; root cause was ListView position-shift destroying the Consumer element and triggering an autoDispose provider reset (#21)
0.15.1 - 2026-03-02
Fixed
- Tag filter no longer shows an empty list after all entries with a selected tag are deleted; stale filters are cleared on data refresh (#20)
0.15.0 - 2026-03-02
Added
- Trash icon in selection mode AppBar to permanently delete all selected predictions including their estimates and resolutions; a confirmation dialog warns before the irreversible action (#19)
0.14.1 - 2026-03-02
Fixed
- Interval outcome now recomputed from the current estimate bounds when estimating a pre-resolved question; previously a stale outcome from the original resolution could mark a wrong estimate as correct (#18)
0.14.0 - 2026-03-02
Added
- Feedback sheet shown immediately after estimating a question that already has a resolution (e.g. trivia imports with embedded answers); same CalibrationFeedbackSheet as the resolve flow (#16)
0.13.0 - 2026-03-02
Added
- Bottom sheet after resolving shows Brier contribution of the current estimate, overall Brier Score and Log Loss, and a type-specific section when predictions of multiple types exist (#16)
0.12.2 - 2026-03-02
Fixed
- Statistics tag filter replaced with FilterChips; the previous autocomplete showed no options on empty input, making the filter undiscoverable (#9)
0.12.1 - 2026-03-02
Fixed
- Tag dialog now flushes the text field before saving; typed input was silently discarded when "Setzen" was pressed without Enter, deleting all existing tags instead of replacing them (#17)
0.12.0 - 2026-03-02
Added
- Multi-select mode in the predictions list; long-press activates selection, "Select All" covers the active tab and tag filter (#15)
- Bulk tag editing for selected predictions; the dialog replaces tags on all selected items at once (#15)
0.11.0 - 2026-03-02
Added
- Tag filter in the sharing export dialog; select one or more tags to export only matching resolved predictions (#8)
0.10.1 - 2026-03-02
Fixed
- Import parser now reads
resolutionfields in version 1 files; previously they were silently ignored, preventing auto-resolution (#14)
0.10.0 - 2026-03-02
Added
- Clipboard import now recognizes ```json and ```yaml fences; LLM-generated output can be pasted directly without editing (#13)
0.9.0 - 2026-03-02
Added
- Export resolved questions for others without own estimates; optional category filter (epistemic/aleatory) (#8)
- Version tile in Settings shows build number and share icon for JSON debug info (OS, device model, API level) (#11)
0.8.0 - 2026-03-02
Added
- Statistics screen now supports three combinable filters: category (single-select), prediction type (multi-select), and tags (autocomplete, OR-linked) (#9)
0.7.1 - 2026-03-02
Changed
- Import format reference restructured with per-field descriptions and an import behavior table explaining the "Lösung vorhanden" flow
- LLM prompt guide added to docs: three copy-ready prompts for generating calibration exercises with hidden answers
0.7.0 - 2026-03-01
Added
- MkDocs documentation site deployed to GitHub Pages with versioned URLs via mike; triggered automatically on every release tag
- Settings screen links to the documentation version matching the installed APK (#6)
0.6.0 - 2026-03-01
Added
- Tapping a resolved prediction card opens a detail view showing question text, category, tags, estimate, and resolution with outcome, notes, and numeric value (#5)
0.5.0 - 2026-03-01
Added
- Import now supports resolutions: questions with estimate and resolution are marked resolved immediately; questions with a resolution but no estimate show a "Lösung vorhanden" hint and auto-resolve after estimating (#4)
- Export obfuscates resolution data with ROT13 + Base64 to prevent accidental spoilers when sharing question sets (#4)
0.4.3 - 2026-03-01
Fixed
- Import parser now accepts version 2 export format: reads per-question
categories,
hasKnownAnswer/knownAnswer, and nested estimate objects (#2)
0.4.2 - 2026-03-01
Fixed
- Add missing Java 17 (Temurin) setup step to release workflow
- Strip newlines before base64 decode to prevent keystore corruption
0.4.1 - 2026-03-01
Fixed
FilterTabenum was renamed from_FilterTabinpredictions_screen.dartbut the old private name remained inapp.dart, breaking the CI build
0.4.0 - 2026-03-01
Added
- Dashboard stat cards (Offen, Ausstehend, Aufgelöst) are now tappable and navigate directly to the predictions list on the matching tab
Fixed
- Release APK signing: replaced machine-specific debug keystore with a
dedicated release keystore loaded from
key.propertiesor CI secrets; prevents "Update not installed" errors when sideloading updates
0.3.0 - 2026-03-01
Added
- Optional inline estimation when creating a new prediction; saves the separate estimate step for users who already know their probability
- Estimate fields in JSON/YAML import files:
predictionType,probability,binaryChoice,confidenceLevel,lowerBound,upperBound, andunit— imported estimates are saved automatically - Sample data updated with embedded estimate examples for all three prediction types
Changed
- Estimate form logic extracted to
shared/widgets/estimate_inputs.dart(EstimateFormState,EstimateFormNotifier,BinaryEstimateInput,IntervalEstimateInput,ConfidenceSlider) and reused acrossEstimateScreenandNewPredictionScreen
0.2.1 - 2026-03-01
Fixed
- Enable core library desugaring in
android/app/build.gradleso thatflutter_local_notificationsbuilds on all supported Android runtimes; resolvescheckReleaseAarMetadatafailure in CI
0.2.0 - 2026-03-01
Added
- Binary prediction type: choose Yes/No and set confidence level;
probability is derived as
confidence(Yes) or1 − confidence(No) - Interval prediction type: define a numeric range with confidence level; resolves as true when the measured value falls within the interval
- Optional unit field on interval predictions (e.g. m, °C, kg)
- Local deadline notifications: reminded the day before and on the deadline day at 09:00; rescheduled automatically on app start to survive device reboots (flutter_local_notifications, timezone)
- Type-selector (SegmentedButton) on the new prediction screen
- Type-aware estimate screen: slider for probability, Yes/No buttons plus confidence slider for binary, numeric fields plus confidence slider for interval
- Type-aware resolve screen: numeric input for interval resolutions; outcome computed automatically from the stored bounds
0.1.2 - 2026-03-01
Fixed
- Add mipmap launcher icons (mdpi–xxxhdpi) and adaptive icon for API 26+; resolves AAPT build error "resource mipmap/ic_launcher not found"
0.1.1 - 2026-03-01
Fixed
- Drift column name conflict (
Questions.textshadowed inheritedtext()method); renamed toquestionTextwith.named('text') - Replace
SharePlus.instance/ShareParamswith stableShare.shareXFilesAPI (share_plus 10.x) - Bump
compileSdk/targetSdkto 36 (required by path_provider and flutter_plugin_android_lifecycle) - Upgrade Gradle wrapper to 8.10.2, AGP to 8.7.0, Kotlin to 2.1.0
0.1.0 - 2026-03-01
Added
- Core app: probability estimation, resolution, calibration stats, and JSON/YAML import
- Settings screen, tag filter, and clipboard import for question sets
- GitHub Actions release workflow for tag-triggered APK builds