├── .fvm └── fvm_config.json ├── .fvmrc ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── code-refactoring-request.md │ └── feature_request.md ├── actions │ ├── setup_flutter │ │ └── action.yml │ └── setup_jdk │ │ └── action.yml └── workflows │ ├── _analyze.yml │ ├── _check.yml │ ├── _test.yml │ ├── _test_report.yml │ ├── app-release.yml │ ├── mr-check-post.yml │ └── mr-check.yml ├── .gitignore ├── .gitmodules ├── .metadata ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── CHANGELOG.md ├── LICENSE ├── LICENSE_THIRDPARTY.md ├── PRIVACY.md ├── README.md ├── analysis_options.yaml ├── android ├── .gitignore ├── app │ ├── build.gradle │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── f_dev │ │ └── res │ │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ │ ├── values-zh │ │ │ └── strings.xml │ │ │ └── values │ │ │ └── strings.xml │ │ ├── f_generic │ │ └── res │ │ │ ├── values-ar │ │ │ └── strings.xml │ │ │ ├── values-cs │ │ │ └── strings.xml │ │ │ ├── values-de │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-fa │ │ │ └── strings.xml │ │ │ ├── values-fr │ │ │ └── strings.xml │ │ │ ├── values-he │ │ │ └── strings.xml │ │ │ ├── values-it │ │ │ └── strings.xml │ │ │ ├── values-nb │ │ │ └── strings.xml │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ ├── values-pl │ │ │ └── strings.xml │ │ │ ├── values-pt-rBR │ │ │ └── strings.xml │ │ │ ├── values-ru │ │ │ └── strings.xml │ │ │ ├── values-tr │ │ │ └── strings.xml │ │ │ ├── values-uk │ │ │ └── strings.xml │ │ │ ├── values-vi │ │ │ └── strings.xml │ │ │ ├── values-zh-rTW │ │ │ └── strings.xml │ │ │ └── values-zh │ │ │ └── strings.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── io │ │ │ │ └── github │ │ │ │ └── friesi23 │ │ │ │ └── mhabit │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable-hdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-hdpi │ │ │ ├── android12splash.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── splash.png │ │ │ ├── drawable-mdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-mdpi │ │ │ ├── android12splash.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── splash.png │ │ │ ├── drawable-night-hdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-night-hdpi │ │ │ └── android12splash.png │ │ │ ├── drawable-night-mdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-night-mdpi │ │ │ └── android12splash.png │ │ │ ├── drawable-night-v21 │ │ │ ├── background.png │ │ │ └── launch_background.xml │ │ │ ├── drawable-night-xhdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-night-xhdpi │ │ │ └── android12splash.png │ │ │ ├── drawable-night-xxhdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-night-xxhdpi │ │ │ └── android12splash.png │ │ │ ├── drawable-night-xxxhdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-night-xxxhdpi │ │ │ └── android12splash.png │ │ │ ├── drawable-night │ │ │ ├── background.png │ │ │ └── launch_background.xml │ │ │ ├── drawable-v21 │ │ │ ├── background.png │ │ │ └── launch_background.xml │ │ │ ├── drawable-xhdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-xhdpi │ │ │ ├── android12splash.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── splash.png │ │ │ ├── drawable-xxhdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── android12splash.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── splash.png │ │ │ ├── drawable-xxxhdpi-v31 │ │ │ └── android12branding.png │ │ │ ├── drawable-xxxhdpi │ │ │ ├── android12splash.png │ │ │ ├── ic_launcher_background.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── splash.png │ │ │ ├── drawable │ │ │ ├── background.png │ │ │ └── launch_background.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ └── ic_launcher.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_monochrome.png │ │ │ └── ic_notification.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_monochrome.png │ │ │ └── ic_notification.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_monochrome.png │ │ │ └── ic_notification.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_monochrome.png │ │ │ └── ic_notification.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_monochrome.png │ │ │ └── ic_notification.png │ │ │ ├── raw │ │ │ └── keep.xml │ │ │ ├── values-night-v31 │ │ │ └── styles.xml │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ ├── values-v31 │ │ │ └── styles.xml │ │ │ ├── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ └── locales_config.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── assets ├── fonts │ ├── cal_icons.ttf │ ├── common_icons.ttf │ ├── progress_icons.ttf │ └── sort_icons.ttf ├── icons │ ├── calendar_icons │ │ ├── calendar-create.svg │ │ └── calendar-modify.svg │ ├── common_icons │ │ ├── beta.license │ │ ├── beta.svg │ │ └── la_donate.svg │ ├── progress_icons │ │ ├── numeric-1-circle-outline.svg │ │ ├── numeric-1.svg │ │ ├── numeric-2-circle-outline.svg │ │ ├── numeric-2.svg │ │ ├── numeric-3-circle-outline.svg │ │ ├── numeric-3.svg │ │ ├── progress-100%.svg │ │ └── progress-50%.svg │ └── sort_icons │ │ ├── sort-alphabetical-ascending.svg │ │ ├── sort-alphabetical-descending.svg │ │ ├── sort-ascending.svg │ │ ├── sort-bool-ascending-variant.svg │ │ ├── sort-bool-ascending.svg │ │ ├── sort-bool-descending-variant.svg │ │ ├── sort-bool-descending.svg │ │ ├── sort-calendar-ascending.svg │ │ ├── sort-calendar-descending.svg │ │ ├── sort-clock-ascending-outline.svg │ │ ├── sort-clock-descending-outline.svg │ │ ├── sort-descending.svg │ │ ├── sort-variant.svg │ │ └── sort.svg ├── images │ ├── donate-alipay.jpg │ ├── donate-wechatpay.png │ ├── empty-habits.svg │ ├── empty-habits.svg.template │ ├── not-found.svg │ └── not-found.svg.template ├── l10n │ ├── _untranslated.json │ ├── ar.arb │ ├── cs.arb │ ├── de.arb │ ├── en.arb │ ├── es.arb │ ├── fa.arb │ ├── fr.arb │ ├── he.arb │ ├── it.arb │ ├── nb.arb │ ├── pl.arb │ ├── pt.arb │ ├── ru.arb │ ├── tr.arb │ ├── uk.arb │ ├── vi.arb │ ├── zh.arb │ └── zh_hant.arb ├── logo │ ├── background-1024x1024.png │ ├── background.svg │ ├── foreground-1024x1024.png │ ├── foreground-noshadow-1024x1024.png │ ├── foreground-noshadow.svg │ ├── foreground.svg │ ├── icon-1024x1024.png │ ├── icon-ios-dark-1024x1024.png │ ├── icon-ios-dark.svg │ ├── icon-ios-grey-1024x1024.png │ ├── icon-ios-grey.svg │ ├── icon-momo-1024x1024.png │ ├── icon-momo.svg │ ├── icon-notification-1024x1024.png │ ├── icon-notification.svg │ ├── icon.svg │ ├── macos-1024x1024.png │ └── macos.svg ├── others │ └── transparent-512x512.png └── sql │ ├── indexes.sql │ ├── mh_habits.sql │ ├── mh_records.sql │ ├── mh_sync.sql │ └── mh_sync_indexes.sql ├── build.yaml ├── configs ├── about_info.json ├── contributors.json ├── flutter_launcher_incons │ ├── flutter_launcher_icons.yaml │ ├── flutter_launcher_momo_icons.yaml │ ├── flutter_launcher_notification_icons.yaml │ └── ic_launcher.xml ├── flutter_native_splash │ └── flutter_native_splash.yaml ├── l10n.yaml └── package_rename_config │ ├── package_rename_config.yaml │ └── package_rename_config_v2.yaml ├── demo └── habit_group_curve_demo.py ├── devtools_options.yaml ├── docs ├── CHANGELOG │ └── zh.md ├── README │ └── images │ │ ├── check-habit-detail-tb.gif │ │ ├── check-habit-detail.gif │ │ ├── create-new-habit-tb.gif │ │ ├── create-new-habit.gif │ │ ├── donate-alipay.jpg │ │ ├── donate-wechatpay.png │ │ ├── export-and-import-tb.gif │ │ ├── export-and-import.gif │ │ ├── fdroid-get-it-on.png │ │ ├── github-get-it-on.png │ │ ├── habit-display-op-tb.gif │ │ ├── habit-display-op.gif │ │ ├── habit-display-page-tb.gif │ │ ├── habit-display-page.gif │ │ ├── habit-heatmap-tb.gif │ │ ├── habit-heatmap.gif │ │ ├── l10n-stat.svg │ │ ├── lzzyondroid-get-it-on.png │ │ └── testflight-get-it-on.png ├── add_new_locale_support.md ├── code_errata.md ├── faq.md ├── push_to_new_version.md ├── release.md └── webdav_sync_design.md ├── fastlane └── metadata │ └── android │ ├── en-US │ ├── changelogs │ │ ├── 1.txt │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ ├── 15.txt │ │ ├── 16.txt │ │ ├── 17.txt │ │ ├── 18.txt │ │ ├── 19.txt │ │ ├── 2.txt │ │ ├── 20.txt │ │ ├── 21.txt │ │ ├── 22.txt │ │ ├── 23.txt │ │ ├── 24.txt │ │ ├── 25.txt │ │ ├── 26.txt │ │ ├── 27.txt │ │ ├── 28.txt │ │ ├── 29.txt │ │ ├── 3.txt │ │ ├── 30.txt │ │ ├── 31.txt │ │ ├── 32.txt │ │ ├── 33.txt │ │ ├── 34.txt │ │ ├── 35.txt │ │ ├── 36.txt │ │ ├── 37.txt │ │ ├── 39.txt │ │ ├── 4.txt │ │ ├── 42.txt │ │ ├── 45.txt │ │ ├── 47.txt │ │ ├── 49.txt │ │ ├── 5.txt │ │ ├── 52.txt │ │ ├── 54.txt │ │ ├── 56.txt │ │ ├── 57.txt │ │ ├── 6.txt │ │ ├── 61.txt │ │ ├── 62.txt │ │ ├── 66.txt │ │ ├── 7.txt │ │ ├── 70.txt │ │ ├── 74.txt │ │ ├── 77.txt │ │ ├── 78.txt │ │ ├── 8.txt │ │ ├── 83.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── images │ │ ├── featureGraphic.png │ │ ├── icon.png │ │ ├── phoneScreenshots │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ ├── 6.png │ │ │ └── 7.png │ │ ├── sevenInchScreenshots │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ └── 6.png │ │ └── tenInchScreenshots │ │ │ ├── 1.png │ │ │ ├── 2.png │ │ │ ├── 3.png │ │ │ ├── 4.png │ │ │ ├── 5.png │ │ │ └── 6.png │ ├── short_description.txt │ └── title.txt │ ├── ru │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ └── zh-CN │ ├── changelogs │ ├── 1.txt │ ├── 10.txt │ ├── 11.txt │ ├── 12.txt │ ├── 13.txt │ ├── 14.txt │ ├── 15.txt │ ├── 16.txt │ ├── 17.txt │ ├── 18.txt │ ├── 19.txt │ ├── 2.txt │ ├── 20.txt │ ├── 21.txt │ ├── 22.txt │ ├── 23.txt │ ├── 24.txt │ ├── 25.txt │ ├── 26.txt │ ├── 27.txt │ ├── 28.txt │ ├── 29.txt │ ├── 3.txt │ ├── 30.txt │ ├── 31.txt │ ├── 32.txt │ ├── 33.txt │ ├── 34.txt │ ├── 35.txt │ ├── 36.txt │ ├── 37.txt │ ├── 39.txt │ ├── 4.txt │ ├── 42.txt │ ├── 45.txt │ ├── 47.txt │ ├── 49.txt │ ├── 5.txt │ ├── 52.txt │ ├── 54.txt │ ├── 56.txt │ ├── 57.txt │ ├── 6.txt │ ├── 61.txt │ ├── 62.txt │ ├── 66.txt │ ├── 7.txt │ ├── 70.txt │ ├── 74.txt │ ├── 77.txt │ ├── 78.txt │ ├── 8.txt │ ├── 83.txt │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt ├── flutter_launcher_icons.yaml ├── flutter_launcher_momo_icons.yaml ├── flutter_launcher_notification_icons.yaml ├── installers ├── dmg_creator │ ├── config.json │ └── icon.icns └── macos_exporter │ └── GithubExportOptions.plist ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Localizations │ ├── ar.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── cs.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── de.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── en.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── es.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── fa.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── fr.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── he.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── it.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── nb.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── pl.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── pt.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── ru.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── tr.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── uk.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── vi.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── zh-Hans.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ ├── zh-Hant.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ └── zh.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ ├── Runner.xcscheme │ │ ├── f_dev.xcscheme │ │ ├── f_generic.xcscheme │ │ └── f_store.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings ├── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-38x38@2x.png │ │ │ ├── Icon-App-38x38@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-50x50@1x.png │ │ │ ├── Icon-App-50x50@2x.png │ │ │ ├── Icon-App-57x57@1x.png │ │ │ ├── Icon-App-57x57@2x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-64x64@2x.png │ │ │ ├── Icon-App-64x64@3x.png │ │ │ ├── Icon-App-68x68@2x.png │ │ │ ├── Icon-App-72x72@1x.png │ │ │ ├── Icon-App-72x72@2x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ ├── Icon-App-Dark-1024x1024@1x.png │ │ │ ├── Icon-App-Dark-20x20@2x.png │ │ │ ├── Icon-App-Dark-20x20@3x.png │ │ │ ├── Icon-App-Dark-29x29@2x.png │ │ │ ├── Icon-App-Dark-29x29@3x.png │ │ │ ├── Icon-App-Dark-38x38@2x.png │ │ │ ├── Icon-App-Dark-38x38@3x.png │ │ │ ├── Icon-App-Dark-40x40@2x.png │ │ │ ├── Icon-App-Dark-40x40@3x.png │ │ │ ├── Icon-App-Dark-60x60@2x.png │ │ │ ├── Icon-App-Dark-60x60@3x.png │ │ │ ├── Icon-App-Dark-64x64@2x.png │ │ │ ├── Icon-App-Dark-64x64@3x.png │ │ │ ├── Icon-App-Dark-68x68@2x.png │ │ │ ├── Icon-App-Dark-76x76@2x.png │ │ │ ├── Icon-App-Dark-83.5x83.5@2x.png │ │ │ ├── Icon-App-Tinted-1024x1024@1x.png │ │ │ ├── Icon-App-Tinted-20x20@2x.png │ │ │ ├── Icon-App-Tinted-20x20@3x.png │ │ │ ├── Icon-App-Tinted-29x29@2x.png │ │ │ ├── Icon-App-Tinted-29x29@3x.png │ │ │ ├── Icon-App-Tinted-38x38@2x.png │ │ │ ├── Icon-App-Tinted-38x38@3x.png │ │ │ ├── Icon-App-Tinted-40x40@2x.png │ │ │ ├── Icon-App-Tinted-40x40@3x.png │ │ │ ├── Icon-App-Tinted-60x60@2x.png │ │ │ ├── Icon-App-Tinted-60x60@3x.png │ │ │ ├── Icon-App-Tinted-64x64@2x.png │ │ │ ├── Icon-App-Tinted-64x64@3x.png │ │ │ ├── Icon-App-Tinted-68x68@2x.png │ │ │ ├── Icon-App-Tinted-76x76@2x.png │ │ │ └── Icon-App-Tinted-83.5x83.5@2x.png │ │ ├── LaunchBackground.imageset │ │ │ ├── Contents.json │ │ │ ├── background.png │ │ │ └── darkbackground.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ ├── LaunchImageDark.png │ │ │ ├── LaunchImageDark@2x.png │ │ │ ├── LaunchImageDark@3x.png │ │ │ └── README.md │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ ├── Runner-Bridging-Header.h │ ├── Runner.entitlements │ ├── dev-Info.plist │ └── generic-Info.plist └── RunnerTests │ └── RunnerTests.swift ├── l10n.yaml ├── lib ├── annotation │ ├── _json_annotation.dart │ ├── contributor_converter.dart │ ├── epoch_date_time_converter.dart │ ├── epoch_habit_date_converter.dart │ ├── habit_display_op_config.dart │ ├── normalizing_list_converter.dart │ ├── proxy_annotation.dart │ └── time_of_day_converter.dart ├── assets │ ├── assets.dart │ ├── assets.gen.dart │ └── fonts.gen.dart ├── builders │ └── proxy_generator.dart ├── common │ ├── _debug.dart │ ├── app_info.dart │ ├── async.dart │ ├── clipper.dart │ ├── consts.dart │ ├── enums.dart │ ├── exceptions.dart │ ├── global.dart │ ├── math.dart │ ├── re.dart │ ├── rules.dart │ ├── types.dart │ └── utils.dart ├── component │ ├── animation.dart │ ├── animations │ │ └── animate.dart │ ├── helper.dart │ ├── provider.dart │ ├── widget.dart │ └── widgets │ │ ├── animated_linear_progress.dart │ │ ├── beta_badge.dart │ │ ├── chip_list.dart │ │ ├── color_display_chip.dart │ │ ├── crypto_donate_button.dart │ │ ├── data_arrow_container.dart │ │ ├── data_container.dart │ │ ├── date_change.dart │ │ ├── date_picker.dart │ │ ├── enhanced_safe_area.dart │ │ ├── expanded_section.dart │ │ ├── group_title_list_tile.dart │ │ ├── habit_calendar_space_bar.dart │ │ ├── habit_daily_status_container.dart │ │ ├── habit_form_flexible_space_bar.dart │ │ ├── habit_freq_chart.dart │ │ ├── habit_list_tile.dart │ │ ├── habit_progress_indicator.dart │ │ ├── habit_score_chart.dart │ │ ├── l10n_builder.dart │ │ ├── markdown_body.dart │ │ ├── month_picker_cell.dart │ │ ├── page_back_button.dart │ │ ├── scroll_physics.dart │ │ ├── scrollable_chart.dart │ │ ├── scrolling_fab.dart │ │ ├── svg_template_image.dart │ │ ├── theme_with_custom_colors.dart │ │ └── week_picker_cell.dart ├── extension │ ├── async_extensions.dart │ ├── color_extensions.dart │ ├── colorscheme_extensions.dart │ ├── context_extensions.dart │ ├── custom_color_extensions.dart │ ├── datetime_extensions.dart │ ├── iterable_extensions.dart │ ├── locale_exntensions.dart │ ├── navigator_extensions.dart │ ├── notification_extensions.dart │ ├── num_extensions.dart │ ├── string_extensions.dart │ ├── textscale_extensions.dart │ └── webdav_extensions.dart ├── l10n │ ├── localizations.dart │ ├── localizations.g.dart │ ├── localizations_ar.g.dart │ ├── localizations_cs.g.dart │ ├── localizations_de.g.dart │ ├── localizations_en.g.dart │ ├── localizations_es.g.dart │ ├── localizations_fa.g.dart │ ├── localizations_fr.g.dart │ ├── localizations_he.g.dart │ ├── localizations_it.g.dart │ ├── localizations_nb.g.dart │ ├── localizations_pl.g.dart │ ├── localizations_pt.g.dart │ ├── localizations_ru.g.dart │ ├── localizations_tr.g.dart │ ├── localizations_uk.g.dart │ ├── localizations_vi.g.dart │ └── localizations_zh.g.dart ├── logging │ ├── extension.dart │ ├── handler │ │ ├── console_output.dart │ │ ├── console_printer.dart │ │ └── filter.dart │ ├── helper.dart │ ├── level.dart │ ├── logger │ │ ├── app_sync_logger.dart │ │ ├── text_logger.dart │ │ ├── value_change_logger.dart │ │ └── widget_logger.dart │ ├── logger_manager.dart │ ├── logger_message.dart │ ├── logger_stack.dart │ ├── logger_type.dart │ └── logger_utils.dart ├── main.dart ├── model │ ├── _app_sync_tasks │ │ ├── app_sync_task.dart │ │ ├── basic_app_sync_task.dart │ │ ├── webdav_app_sync_models.dart │ │ ├── webdav_app_sync_models.g.dart │ │ ├── webdav_app_sync_subtasks.dart │ │ ├── webdav_app_sync_task.dart │ │ └── webdav_app_sync_task_status.dart │ ├── _score │ │ ├── calculator.dart │ │ ├── data.dart │ │ └── score.dart │ ├── app_reminder_config.dart │ ├── app_reminder_config.g.dart │ ├── app_sync_options.dart │ ├── app_sync_server.dart │ ├── app_sync_server.g.dart │ ├── app_sync_task.dart │ ├── app_sync_timer.dart │ ├── cache.dart │ ├── common.dart │ ├── contributor.dart │ ├── contributor.g.dart │ ├── custom_date_format.dart │ ├── custom_date_format.g.dart │ ├── habit_daily_goal.dart │ ├── habit_daily_record_form.dart │ ├── habit_date.dart │ ├── habit_detail.dart │ ├── habit_detail_chart.dart │ ├── habit_display.dart │ ├── habit_display.g.dart │ ├── habit_export.dart │ ├── habit_export.g.dart │ ├── habit_form.dart │ ├── habit_freq.dart │ ├── habit_import.dart │ ├── habit_reminder.dart │ ├── habit_reminder.g.dart │ ├── habit_score.dart │ ├── habit_stat.dart │ ├── habit_stat.g.dart │ ├── habit_status.dart │ ├── habit_summary.dart │ ├── habit_summary.g.dart │ ├── material_localizations.dart │ ├── material_localizations.g.dart │ └── progress_percent.dart ├── persistent │ ├── db_helper_builder.dart │ ├── db_helper_provider.dart │ ├── local │ │ ├── db_cell.dart │ │ ├── db_helper.dart │ │ ├── handler │ │ │ ├── habit.dart │ │ │ ├── habit.g.dart │ │ │ ├── record.dart │ │ │ ├── record.g.dart │ │ │ ├── sync.dart │ │ │ └── sync.g.dart │ │ ├── sql.dart │ │ └── table.dart │ ├── profile │ │ ├── converter.dart │ │ ├── handler │ │ │ ├── app_experimental_feature.dart │ │ │ ├── app_language.dart │ │ │ ├── app_reminder.dart │ │ │ ├── app_sync.dart │ │ │ ├── app_theme_main_color.dart │ │ │ ├── app_theme_type.dart │ │ │ ├── collect_logs_switcher.dart │ │ │ ├── compact_ui_switcher.dart │ │ │ ├── display_calendar_bar_occupy_prt.dart │ │ │ ├── display_calendar_scroll_mode.dart │ │ │ ├── display_habits_filter.dart │ │ │ ├── display_sort_mode.dart │ │ │ ├── first_day.dart │ │ │ ├── habit_cell_gesture_mode.dart │ │ │ ├── input_fill_cache.dart │ │ │ ├── logging_level.dart │ │ │ └── show_data_format.dart │ │ ├── handlers.dart │ │ └── profile_helper.dart │ ├── profile_builder.dart │ ├── profile_provider.dart │ └── utils.dart ├── provider │ ├── _utils │ │ ├── habit_chart_utils.dart │ │ └── habit_record_utils.dart │ ├── about_info.dart │ ├── about_info.g.dart │ ├── app_caches.dart │ ├── app_compact_ui_switcher.dart │ ├── app_custom_date_format.dart │ ├── app_debugger.dart │ ├── app_developer.dart │ ├── app_first_day.dart │ ├── app_language.dart │ ├── app_reminder.dart │ ├── app_sync.dart │ ├── app_sync.g.dart │ ├── app_sync_server_form.dart │ ├── app_theme.dart │ ├── commons.dart │ ├── global.dart │ ├── habit_detail.dart │ ├── habit_detail_freqchart.dart │ ├── habit_detail_scorechart.dart │ ├── habit_form.dart │ ├── habit_op_config.dart │ ├── habit_status_changer.dart │ ├── habit_status_changer.g.dart │ ├── habit_summary.dart │ ├── habit_summary.g.dart │ ├── habits_file_exporter.dart │ ├── habits_file_importer.dart │ ├── habits_filter.dart │ ├── habits_record_scroll_behavior.dart │ ├── habits_sort.dart │ └── utils.dart ├── reminders │ ├── notification_channel.dart │ ├── notification_data.dart │ ├── notification_data.g.dart │ ├── notification_id_range.dart │ ├── notification_service.dart │ └── notification_tap_handler.dart ├── theme │ ├── _colors │ │ ├── colors.dart │ │ ├── crypto_colors.dart │ │ ├── custom_color.g.dart │ │ └── userdefined_color.dart │ ├── _icons │ │ ├── cal_icons.g.dart │ │ ├── common_icons.g.dart │ │ ├── progress_icons.g.dart │ │ └── sort_icons.g.dart │ ├── color.dart │ └── icon.dart ├── utils │ ├── app_path_provider.dart │ ├── app_sync.dart │ ├── async_debouncer.dart │ ├── debug_info.dart │ ├── habit_date.dart │ ├── local_timezone.dart │ └── safe_sliver_tools.dart └── view │ ├── _debug.dart │ ├── app.dart │ ├── common │ ├── _dialog.dart │ ├── _mixin.dart │ ├── _widget.dart │ ├── app_sync_confirm_dialog.dart │ ├── app_ui_layout_builder.dart │ ├── appbar_combined_action.dart │ ├── colorful_navibar.dart │ ├── confirm_dialog.dart │ ├── contributor_tile.dart │ ├── custom_datetime_format_picker.dart │ ├── date_changer.dart │ ├── donate_dialog.dart │ ├── exporter_confirm_dialog.dart │ ├── fixed_page_place_holder.dart │ ├── habit_divider.dart │ ├── habit_record_number_picker.dart │ ├── habit_record_reason_modifier.dart │ ├── habit_summary_list_tile.dart │ ├── loglevel_changer_tile.dart │ ├── not_found_image.dart │ ├── not_found_image.g.dart │ ├── notification_activated.dart │ ├── notification_pending_requests.dart │ ├── page_loading_indicator.dart │ ├── sync_loading_indicator.dart │ ├── sync_now_tile.dart │ └── xshare.dart │ ├── for_app │ ├── _widget.dart │ └── app_providers.dart │ ├── for_app_about │ ├── _widget.dart │ ├── app_about_contact_email_tile.dart │ ├── app_about_donate_tile.dart │ ├── app_about_issue_tracker_tile.dart │ ├── app_about_license_thirdparty_tile.dart │ ├── app_about_license_tile.dart │ ├── app_about_privay_tile.dart │ ├── app_about_source_code_tile.dart │ ├── app_about_version_tile.dart │ └── page_providers.dart │ ├── for_app_debugger │ ├── _widget.dart │ └── change_logs_switcher_tile.dart │ ├── for_app_setting │ ├── _dialog.dart │ ├── _widget.dart │ ├── app_language_changer.dart │ ├── app_setting_calbar_occupy_tile.dart │ ├── app_setting_clear_cache.dart │ ├── app_setting_confirm_clear_db.dart │ ├── app_setting_date_display_format.dart │ ├── app_setting_develop_subgroup.dart │ ├── app_setting_display_op_tile.dart │ ├── app_setting_first_day.dart │ ├── app_setting_reminder_tile.dart │ ├── app_setting_sync_failed_tile.dart │ └── import_habits_confirm.dart │ ├── for_app_sync │ ├── _dialog.dart │ ├── _widget.dart │ ├── app_sync_fail_logs_tile.dart │ ├── app_sync_fetch_interval.dart │ └── app_sync_summary_tile.dart │ ├── for_app_sync_server_editor │ ├── _widget.dart │ ├── app_sync_server_buttons.dart │ ├── app_sync_server_conn_timeout.dart │ ├── app_sync_server_delete_button.dart │ ├── app_sync_server_ignoressl.dart │ ├── app_sync_server_network_type.dart │ ├── app_sync_server_password.dart │ ├── app_sync_server_path.dart │ ├── app_sync_server_timeout.dart │ ├── app_sync_server_type.dart │ ├── app_sync_server_username.dart │ └── page_providers.dart │ ├── for_habit_detail │ ├── _dialog.dart │ ├── _mixin.dart │ ├── _widget.dart │ ├── habit_desc_cell_tile.dart │ ├── habit_detail_appbar.dart │ ├── habit_detail_chart_title.dart │ ├── habit_detail_fab.dart │ ├── habit_detail_freq_chart.dart │ ├── habit_detail_popup_menu.dart │ ├── habit_detail_score_chart.dart │ ├── habit_detail_summary_tile.dart │ ├── habit_edit_repl_rcd_cal.dart │ ├── habit_heatmap.dart │ ├── habit_other_info_tile.dart │ └── page_providers.dart │ ├── for_habit_edit │ ├── _dialogs.dart │ ├── _widget.dart │ ├── habit_color_picker.dart │ ├── habit_date_picker.dart │ ├── habit_edit_app_bar.dart │ ├── habit_edit_color_tile.dart │ ├── habit_edit_create_and_modify_tile.dart │ ├── habit_edit_daily_goal_extra_tile.dart │ ├── habit_edit_daily_goal_tile.dart │ ├── habit_edit_daily_goal_unit_tile.dart │ ├── habit_edit_desc_tile.dart │ ├── habit_edit_frequency_tile.dart │ ├── habit_edit_habit_type_tile.dart │ ├── habit_edit_start_date_tile.dart │ ├── habit_edit_target_days_tile.dart │ ├── habit_frequency_picker.dart │ ├── habit_reminder_tiles.dart │ ├── habit_reminder_type_picker.dart │ ├── habit_target_days_picker.dart │ ├── habit_type_picker.dart │ └── page_providers.dart │ ├── for_habits_display │ ├── _dialog.dart │ ├── _widget.dart │ ├── habit_display_appbar_edit_mode.dart │ ├── habit_display_appbar_view_mode.dart │ ├── habit_display_develop_list.dart │ ├── habit_display_edit_mode_action.dart │ ├── habit_display_empty_image.dart │ ├── habit_display_empty_image.g.dart │ ├── habit_display_fab.dart │ ├── habit_display_list_tile.dart │ ├── habit_display_loading_indicator.dart │ ├── habit_display_main_menu.dart │ ├── habit_display_sort_type_picker.dart │ ├── habit_display_stats_menu.dart │ ├── page_providers.dart │ └── sliver_calendar_bar.dart │ ├── for_habits_status_changer │ ├── _widget.dart │ ├── confirm_button.dart │ ├── date_picker_tile.dart │ ├── habit_viewed_tile.dart │ ├── page_framework.dart │ ├── page_providers.dart │ ├── record_status_change_tile.dart │ └── record_status_skip_reason_tile.dart │ ├── page_app_about.dart │ ├── page_app_debugger.dart │ ├── page_app_error.dart │ ├── page_app_setting.dart │ ├── page_app_sync.dart │ ├── page_app_sync_server_editor.dart │ ├── page_expermental_features.dart │ ├── page_habit_detail.dart │ ├── page_habit_edit.dart │ ├── page_habits_display.dart │ └── page_habits_status_changer.dart ├── linux ├── .gitignore ├── CMakeLists.txt ├── flutter │ ├── CMakeLists.txt │ ├── generated_plugin_registrant.cc │ ├── generated_plugin_registrant.h │ └── generated_plugins.cmake ├── main.cc ├── my_application.cc └── my_application.h ├── macos ├── .gitignore ├── Flutter │ ├── Flutter-Debug.xcconfig │ ├── Flutter-Release.xcconfig │ └── GeneratedPluginRegistrant.swift ├── Localizations │ ├── en.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings │ └── zh-Hans.lproj │ │ ├── dev-InfoPlist.strings │ │ └── generic-InfoPlist.strings ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ └── xcshareddata │ │ └── xcschemes │ │ ├── Runner.xcscheme │ │ ├── f_dev.xcscheme │ │ └── f_generic.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ └── IDEWorkspaceChecks.plist ├── Runner │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── app_icon_1024.png │ │ │ ├── app_icon_128.png │ │ │ ├── app_icon_16.png │ │ │ ├── app_icon_256.png │ │ │ ├── app_icon_32.png │ │ │ ├── app_icon_512.png │ │ │ └── app_icon_64.png │ ├── Base.lproj │ │ └── MainMenu.xib │ ├── Configs │ │ ├── AppInfo.xcconfig │ │ ├── Debug.xcconfig │ │ ├── Release.xcconfig │ │ └── Warnings.xcconfig │ ├── DebugProfile.entitlements │ ├── Info.plist │ ├── MainFlutterWindow.swift │ ├── Release.entitlements │ ├── dev-Info.plist │ └── generic-Info.plist └── RunnerTests │ └── RunnerTests.swift ├── package_rename_config.yaml ├── pubspec.lock ├── pubspec.yaml ├── scripts ├── build_dmg.sh ├── build_msix.cmd ├── build_runner.cmd ├── build_runner.sh ├── gen_changelogs.sh ├── gen_covhtml.cmd ├── gen_covhtml.sh ├── gen_fastlane_changelog.py ├── gen_icons.cmd ├── gen_icons.sh ├── gen_logo.cmd ├── gen_logo.sh ├── gen_screen_launcher.sh ├── gen_translate_graph.py ├── gen_translate_graph.sh ├── git_set_commit_template.cmd ├── git_set_commit_template.sh ├── normalize_arb.py ├── normalize_arb.sh └── rename_app.sh ├── templates └── git │ ├── commit-bugfix.template │ ├── commit-bumpversion.template │ ├── commit-zh.template │ └── commit.template ├── test ├── common_test │ ├── math_test.dart │ └── utils_test.dart ├── debug │ ├── habitrecord_automark.dart │ └── habitrecord_calc_totalscore.dart ├── extension_test │ └── iterable_extensions_test.dart ├── model_test │ ├── basic_app_sync_task_test.dart │ ├── basic_app_sync_task_test.mocks.dart │ ├── contributor_test.dart │ ├── custom_date_format_test.dart │ ├── habit_reminder_test.dart │ ├── habits_test.dart │ ├── records_test.dart │ ├── score_test.dart │ ├── webdav_app_sync_task_test.dart │ └── webdav_app_sync_task_test.mocks.dart ├── persistent_test │ └── utils_test.dart ├── stub │ └── habit_score.dart ├── utils.dart ├── utils_test │ └── async_debouncer_test.dart ├── viewmodel_test │ ├── app_theme_test.dart │ └── habit_form_test.dart └── webdav_server │ ├── bytemark_webdav │ └── compose.yml │ └── nextcloud │ └── compose.yml └── windows ├── .gitignore ├── CMakeLists.txt ├── certificate ├── publish.crt └── publish.csr ├── external ├── README.md └── sqlite3.dll ├── flutter ├── CMakeLists.txt ├── generated_plugin_registrant.cc ├── generated_plugin_registrant.h └── generated_plugins.cmake └── runner ├── CMakeLists.txt ├── Runner.rc ├── flutter_window.cpp ├── flutter_window.h ├── main.cpp ├── resource.h ├── resources └── app_icon.ico ├── runner.exe.manifest ├── utils.cpp ├── utils.h ├── win32_window.cpp └── win32_window.h /.fvm/fvm_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "flutterSdkVersion": "3.24.5", 3 | "flavors": { 4 | "release": "3.24.5" 5 | } 6 | } -------------------------------------------------------------------------------- /.fvmrc: -------------------------------------------------------------------------------- 1 | ./.fvm/fvm_config.json -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: d49cb87qgww 14 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 15 | - "https://github.com/FriesI23/mhabit?tab=readme-ov-file#donate" 16 | 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/code-refactoring-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Code Refactoring Request 3 | about: Create a suggestion or idea related to code refactoring 4 | title: "[CODE_REFACTORING]" 5 | labels: code quality, suggestion 6 | assignees: FriesI23 7 | 8 | --- 9 | 10 | **Description** 11 | Describe the issue or code section that needs refactoring briefly. 12 | 13 | **Refactoring Objective** 14 | State the main goal of this refactoring. 15 | 16 | **Suggested Approach** 17 | Provide any suggested approaches or ideas for the refactoring. 18 | 19 | **Code Sample** 20 | If applicable, include a code snippet related to the issue. 21 | 22 | **Expected Improvements** 23 | Describe the expected improvements after the refactoring. 24 | 25 | **Additional Context** 26 | Provide any additional context or information that might be relevant. 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEATURE]" 5 | labels: suggestion 6 | assignees: Miaaaim 7 | 8 | --- 9 | 10 | 12 | **Is your feature request related to a problem? Please describe.** 13 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 14 | 15 | **Describe the solution you'd like** 16 | A clear and concise description of what you want to happen. 17 | 18 | **Describe alternatives you've considered** 19 | A clear and concise description of any alternative solutions or features you've considered. 20 | 21 | **Additional context** 22 | Add any other context or screenshots about the feature request here. 23 | -------------------------------------------------------------------------------- /.github/actions/setup_flutter/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Flutter 2 | description: setup shared Flutter environment for common use. 3 | 4 | runs: 5 | using: "composite" 6 | 7 | steps: 8 | - name: Update Flutter submodule 9 | run: git submodule update --init --recursive 10 | shell: bash 11 | - name : Add Flutter to syspath 12 | run: | 13 | echo "${{ github.workspace }}/.flutter/bin:$PATH" >> $GITHUB_PATH 14 | shell: bash 15 | - name: Get Flutter packages 16 | run: | 17 | echo $GITHUB_PATH 18 | flutter pub get 19 | shell: bash 20 | -------------------------------------------------------------------------------- /.github/actions/setup_jdk/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup Java SDK 2 | description: setup shared JDK environment for build use. 3 | 4 | runs: 5 | using: "composite" 6 | steps: 7 | - uses: actions/setup-java@v4 8 | with: 9 | distribution: temurin 10 | java-version: 17 11 | -------------------------------------------------------------------------------- /.github/workflows/_analyze.yml: -------------------------------------------------------------------------------- 1 | name: Analyze CI 2 | 3 | on: 4 | workflow_call: 5 | 6 | jobs: 7 | analyze: 8 | name: Analyze 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v4 12 | - uses: ./.github/actions/setup_flutter 13 | - uses: FriesI23/github-actions-analyze-dart@v3.1.0 14 | with: 15 | ignore-suffixes: '.g.dart|.gen.dart|.mock.dart' 16 | -------------------------------------------------------------------------------- /.github/workflows/_test.yml: -------------------------------------------------------------------------------- 1 | name: Test CI 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | with-artifact: 7 | required: false 8 | type: boolean 9 | default: false 10 | 11 | jobs: 12 | unittest: 13 | name: Unit Test 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v4 17 | - uses: ./.github/actions/setup_flutter 18 | - run: | 19 | set -o pipefail 20 | flutter test --machine | tee test_report.log 21 | set +o pipefail 22 | - uses: actions/upload-artifact@v4 23 | if: success() || failure() 24 | with: 25 | name: flutter-unitTest-output 26 | path: test_report.log 27 | -------------------------------------------------------------------------------- /.github/workflows/_test_report.yml: -------------------------------------------------------------------------------- 1 | # see: https://github.com/dorny/test-reporter#recommended-setup-for-public-repositories 2 | name: "Test CI Report" 3 | 4 | on: 5 | workflow_call: 6 | 7 | permissions: 8 | contents: read 9 | actions: read 10 | checks: write 11 | 12 | jobs: 13 | report: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: dorny/test-reporter@v1 17 | with: 18 | artifact: flutter-unitTest-output 19 | name: "flutter test" 20 | path: "test_report.log" 21 | reporter: "flutter-json" 22 | -------------------------------------------------------------------------------- /.github/workflows/mr-check-post.yml: -------------------------------------------------------------------------------- 1 | name: Post Merge request checking 2 | 3 | on: 4 | workflow_run: 5 | workflows: 6 | - Merge request checking 7 | types: 8 | - completed 9 | 10 | permissions: 11 | contents: read 12 | actions: read 13 | checks: write 14 | 15 | jobs: 16 | report: 17 | uses: ./.github/workflows/_test_report.yml 18 | -------------------------------------------------------------------------------- /.github/workflows/mr-check.yml: -------------------------------------------------------------------------------- 1 | name: Merge request checking 2 | 3 | on: 4 | workflow_call: 5 | push: 6 | branches: 7 | - main 8 | - github-action-dev 9 | pull_request: 10 | branches: 11 | - main 12 | 13 | jobs: 14 | analyzing: 15 | uses: ./.github/workflows/_analyze.yml 16 | 17 | checking: 18 | uses: ./.github/workflows/_check.yml 19 | 20 | testing: 21 | uses: ./.github/workflows/_test.yml 22 | with: 23 | with-artifact: true 24 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "flutter"] 2 | path = .flutter 3 | url = https://github.com/flutter/flutter.git 4 | tag = 3.24.5 5 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dart-code.flutter", 4 | "dart-code.dart-code", 5 | "luanpotter.dart-import", 6 | "alexcvzz.vscode-sqlite", 7 | "ymotongpoo.licenser", 8 | "maptz.regionfolder", 9 | "ryanluker.vscode-coverage-gutters", 10 | "flutterando.flutter-coverage", 11 | "google.arb-editor" 12 | ] 13 | } -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/f_dev/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 桌上習慣 開發版 4 | -------------------------------------------------------------------------------- /android/app/src/f_dev/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 桌上习惯 开发版 4 | -------------------------------------------------------------------------------- /android/app/src/f_dev/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit Dev 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-ar/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-cs/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-de/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-es/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-fa/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-fr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-he/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-nb/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-pl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-pt-rBR/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-ru/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Таблица Привычек 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-tr/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-uk/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-vi/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-zh-rTW/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 桌上習慣 4 | -------------------------------------------------------------------------------- /android/app/src/f_generic/res/values-zh/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 桌上习惯 4 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/io/github/friesi23/mhabit/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package io.github.friesi23.mhabit 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-hdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-hdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-hdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-hdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-hdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-hdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-hdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-hdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-mdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-mdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-mdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-mdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-hdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-hdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-hdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-mdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-mdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-mdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-v21/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-v21/background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-xhdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-xhdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-xhdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-xxhdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-xxhdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-xxxhdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-night/background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-night/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-v21/background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xhdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xhdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxhdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxhdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxxhdpi-v31/android12branding.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxxhdpi/android12splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxxhdpi/android12splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxxhdpi/ic_launcher_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxxhdpi/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable-xxxhdpi/splash.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/drawable/background.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-hdpi/ic_notification.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-mdpi/ic_notification.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xhdpi/ic_notification.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xxhdpi/ic_notification.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png -------------------------------------------------------------------------------- /android/app/src/main/res/raw/keep.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Table Habit 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/xml/locales_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | /* groovylint-disable CompileStatic */ 2 | 3 | allprojects { 4 | repositories { 5 | google() 6 | mavenCentral() 7 | } 8 | } 9 | 10 | rootProject.buildDir = '../build' 11 | subprojects { 12 | project.buildDir = "${rootProject.buildDir}/${project.name}" 13 | project.evaluationDependsOn(':app') 14 | } 15 | 16 | tasks.register('clean', Delete) { 17 | delete rootProject.buildDir 18 | } 19 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | #android.defaults.buildfeatures.buildconfig=true 5 | android.nonTransitiveRClass=false 6 | android.nonFinalResIds=false 7 | # fixup: flutter_local_notifications plugin not compatible with R8 full mode. 8 | # see issue #118,#135 on github. 9 | android.enableR8.fullMode = false 10 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip 4 | distributionSha256Sum=258e722ec21e955201e31447b0aed14201765a3bfbae296a46cf60b70e66db70 5 | networkTimeout=10000 6 | validateDistributionUrl=true 7 | zipStoreBase=GRADLE_USER_HOME 8 | zipStorePath=wrapper/dists 9 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | /* groovylint-disable CompileStatic, ImplicitClosureParameter, NoDef, VariableTypeRequired */ 2 | 3 | pluginManagement { 4 | def flutterSdkPath = { 5 | def properties = new Properties() 6 | file('local.properties').withInputStream { properties.load(it) } 7 | def flutterSdkPath = properties.getProperty('flutter.sdk') 8 | assert flutterSdkPath != null, 'flutter.sdk not set in local.properties' 9 | return flutterSdkPath 10 | }() 11 | 12 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") 13 | 14 | repositories { 15 | google() 16 | mavenCentral() 17 | gradlePluginPortal() 18 | } 19 | } 20 | 21 | plugins { 22 | id 'dev.flutter.flutter-plugin-loader' version '1.0.0' 23 | id 'com.android.application' version '8.7.0' apply false 24 | id 'org.jetbrains.kotlin.android' version '1.8.22' apply false 25 | } 26 | 27 | include ':app' 28 | -------------------------------------------------------------------------------- /assets/fonts/cal_icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/fonts/cal_icons.ttf -------------------------------------------------------------------------------- /assets/fonts/common_icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/fonts/common_icons.ttf -------------------------------------------------------------------------------- /assets/fonts/progress_icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/fonts/progress_icons.ttf -------------------------------------------------------------------------------- /assets/fonts/sort_icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/fonts/sort_icons.ttf -------------------------------------------------------------------------------- /assets/icons/calendar_icons/calendar-create.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/icons/calendar_icons/calendar-modify.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/icons/progress_icons/numeric-1-circle-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/progress_icons/numeric-1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/progress_icons/numeric-2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/progress_icons/numeric-3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/progress_icons/progress-100%.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/progress_icons/progress-50%.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-alphabetical-ascending.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-alphabetical-descending.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-ascending.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-bool-ascending-variant.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-bool-ascending.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-bool-descending-variant.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-bool-descending.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-calendar-ascending.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-calendar-descending.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-clock-ascending-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-clock-descending-outline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-descending.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort-variant.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/sort_icons/sort.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/images/donate-alipay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/images/donate-alipay.jpg -------------------------------------------------------------------------------- /assets/images/donate-wechatpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/images/donate-wechatpay.png -------------------------------------------------------------------------------- /assets/l10n/he.arb: -------------------------------------------------------------------------------- 1 | { 2 | "@@locale": "he", 3 | "localeScriptName": "עִברִית", 4 | "@localeScriptName": { 5 | "description": "I'm not sure if this is the correct local name for Hebrew, please verify." 6 | }, 7 | "appName": "🚧(he) - Table Habit", 8 | "@appName": {} 9 | } -------------------------------------------------------------------------------- /assets/l10n/nb.arb: -------------------------------------------------------------------------------- 1 | { 2 | "@@locale": "nb", 3 | "localeScriptName": "Norsk Bokmål", 4 | "@localeScriptName": { 5 | "description": "The human-readable name of the language used for the locale." 6 | }, 7 | "appName": "🚧(nb_NO) - Table Habit", 8 | "@appName": {} 9 | } -------------------------------------------------------------------------------- /assets/l10n/pl.arb: -------------------------------------------------------------------------------- 1 | { 2 | "@@locale": "pl", 3 | "localeScriptName": "Polski", 4 | "@localeScriptName": { 5 | "description": "The human-readable name of the language used for the locale." 6 | }, 7 | "appName": "Table Habit", 8 | "@appName": {}, 9 | "habitEdit_saveButton_text": "Zapisz", 10 | "@habitEdit_saveButton_text": {}, 11 | "habitEdit_habitName_hintText": "Nazwa Nawyku ...", 12 | "@habitEdit_habitName_hintText": {}, 13 | "habitEdit_colorPicker_title": "Wybierz kolor", 14 | "@habitEdit_colorPicker_title": {} 15 | } -------------------------------------------------------------------------------- /assets/logo/background-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/background-1024x1024.png -------------------------------------------------------------------------------- /assets/logo/background.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/logo/foreground-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/foreground-1024x1024.png -------------------------------------------------------------------------------- /assets/logo/foreground-noshadow-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/foreground-noshadow-1024x1024.png -------------------------------------------------------------------------------- /assets/logo/icon-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/icon-1024x1024.png -------------------------------------------------------------------------------- /assets/logo/icon-ios-dark-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/icon-ios-dark-1024x1024.png -------------------------------------------------------------------------------- /assets/logo/icon-ios-grey-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/icon-ios-grey-1024x1024.png -------------------------------------------------------------------------------- /assets/logo/icon-momo-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/icon-momo-1024x1024.png -------------------------------------------------------------------------------- /assets/logo/icon-momo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /assets/logo/icon-notification-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/icon-notification-1024x1024.png -------------------------------------------------------------------------------- /assets/logo/icon-notification.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /assets/logo/macos-1024x1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/logo/macos-1024x1024.png -------------------------------------------------------------------------------- /assets/others/transparent-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/assets/others/transparent-512x512.png -------------------------------------------------------------------------------- /assets/sql/indexes.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX IF NOT EXISTS habit_status ON mh_habits (status); 2 | CREATE UNIQUE INDEX IF NOT EXISTS habit_uuid ON mh_habits (uuid); 3 | CREATE INDEX IF NOT EXISTS habit_start_date ON mh_habits (start_date); 4 | CREATE INDEX IF NOT EXISTS record_status ON mh_records (parent_id); 5 | CREATE INDEX IF NOT EXISTS record_status ON mh_records (record_date); 6 | CREATE INDEX IF NOT EXISTS record_status ON mh_records (parent_id, record_date); 7 | CREATE UNIQUE INDEX IF NOT EXISTS record_uuid ON mh_records (uuid); -------------------------------------------------------------------------------- /assets/sql/mh_habits.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS mh_habits ( 2 | id_ INTEGER PRIMARY KEY AUTOINCREMENT, 3 | type_ INTEGER NOT NULL, 4 | create_t INTEGER NOT NULL DEFAULT (cast(strftime('%s','now') as int)), 5 | modify_t INTEGER NOT NULL DEFAULT (cast(strftime('%s','now') as int)), 6 | uuid TEXT NOT NULL UNIQUE, 7 | status INTEGER NOT NULL, 8 | name TEXT, 9 | desc TEXT, 10 | color INTEGER, 11 | daily_goal REAL NOT NULL, 12 | daily_goal_unit TEXT NOT NULL, 13 | daily_goal_extra REAL, 14 | freq_type INTEGER, 15 | freq_custom TEXT, 16 | start_date INTEGER NOT NULL, 17 | target_days INTEGER, 18 | remind_cutsom TEXT, 19 | remind_question TEXT, 20 | sort_position REAL NOT NULL DEFAULT 9e999 21 | ); 22 | -------------------------------------------------------------------------------- /assets/sql/mh_records.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS mh_records ( 2 | id_ INTEGER PRIMARY KEY AUTOINCREMENT, 3 | parent_id INTEGER NOT NULL REFERENCES mh_habits(id_), 4 | record_date INTEGER NOT NULL, 5 | record_type INTEGER NOT NULL, 6 | record_value REAL NOT NULL DEFAULT 0, 7 | create_t INTEGER NOT NULL DEFAULT (cast(strftime('%s','now') as int)), 8 | modify_t INTEGER NOT NULL DEFAULT (cast(strftime('%s','now') as int)), 9 | uuid TEXT NOT NULL UNIQUE, 10 | parent_uuid TEXT NOT NULL REFERENCES mh_habits(uuid), 11 | reason TEXT NOT NULL DEFAULT '' 12 | ); 13 | -------------------------------------------------------------------------------- /assets/sql/mh_sync.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS mh_sync ( 2 | id_ INTEGER PRIMARY KEY AUTOINCREMENT, 3 | create_t INTEGER NOT NULL DEFAULT (cast(strftime('%s','now') as int)), 4 | modify_t INTEGER NOT NULL DEFAULT (cast(strftime('%s','now') as int)), 5 | habit_uuid TEXT UNIQUE REFERENCES mh_habits(uuid), 6 | record_uuid TEXT UNIQUE REFERENCES mh_records(uuid), 7 | dirty INTEGER NOT NULL DEFAULT 1, 8 | dirty_total INTEGER, 9 | last_config_uuid TEXT, 10 | last_session_uuid TEXT, 11 | last_mark TEXT, 12 | last_mark_2 TEXT, 13 | CHECK ( 14 | (habit_uuid IS NOT NULL) + (record_uuid IS NOT NULL) <= 1 15 | ) 16 | ); -------------------------------------------------------------------------------- /assets/sql/mh_sync_indexes.sql: -------------------------------------------------------------------------------- 1 | CREATE UNIQUE INDEX IF NOT EXISTS idx_mh_sync_habit_uuid ON mh_sync (habit_uuid, record_uuid); 2 | CREATE UNIQUE INDEX IF NOT EXISTS idx_mh_sync_record_uuid ON mh_sync (record_uuid); 3 | CREATE INDEX IF NOT EXISTS idx_mh_sync_dirty ON mh_sync (dirty, dirty_total); 4 | CREATE INDEX IF NOT EXISTS idx_mh_sync_dirty_total ON mh_sync (dirty_total); -------------------------------------------------------------------------------- /build.yaml: -------------------------------------------------------------------------------- 1 | targets: 2 | $default: 3 | builders: 4 | mhabit|proxy_generator: 5 | enabled: true 6 | generate_for: 7 | include: 8 | - lib/**/*.dart 9 | source_gen|combining_builder: 10 | enabled: true 11 | 12 | builders: 13 | proxy_generator: 14 | import: "package:mhabit/builders/proxy_generator.dart" 15 | builder_factories: ["proxyGenerator"] 16 | build_extensions: { ".dart": ["proxy_generator.g.part"] } 17 | auto_apply: dependents 18 | build_to: cache 19 | applies_builders: ["source_gen|combining_builder"] 20 | -------------------------------------------------------------------------------- /configs/about_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "sourceCodeUrl": "https://github.com/FriesI23/mhabit", 3 | "issueTrackerUrl": "https://github.com/FriesI23/mhabit/issues", 4 | "contactEmail": "FriesI23@outlook.com", 5 | "donateBuyMeACoffeeToken": "d49cb87qgww", 6 | "donatePaypalToken": "", 7 | "donateCryptoBTCAddr": "bc1qz2vjews2fcscmvmcm5ctv47mj6236x9p26zk49", 8 | "donateCryptoETHAddr": "0x35FC877Ef0234FbeABc51ad7fC64D9c1bE161f8F", 9 | "donateCryptoBNBAddr": "0x35FC877Ef0234FbeABc51ad7fC64D9c1bE161f8F", 10 | "donateCryptoAVAXAddr": "0x35FC877Ef0234FbeABc51ad7fC64D9c1bE161f8F", 11 | "donateCryptoFTMAddr": "0x35FC877Ef0234FbeABc51ad7fC64D9c1bE161f8F" 12 | } 13 | -------------------------------------------------------------------------------- /configs/flutter_launcher_incons/flutter_launcher_icons.yaml: -------------------------------------------------------------------------------- 1 | flutter_launcher_icons: 2 | # Android 3 | android: true 4 | image_path_android: "assets/logo/icon-1024x1024.png" 5 | adaptive_icon_background: "assets/logo/background-1024x1024.png" 6 | adaptive_icon_foreground: "assets/logo/foreground-1024x1024.png" 7 | # iOS 8 | ios: true 9 | image_path_ios: "assets/logo/icon-1024x1024.png" 10 | image_path_ios_dark_transparent: "assets/logo/icon-ios-dark-1024x1024.png" 11 | image_path_ios_tinted_grayscale: "assets/logo/icon-ios-grey-1024x1024.png" 12 | remove_alpha_ios: true 13 | # MacOS 14 | macos: 15 | generate: true 16 | image_path: "assets/logo/macos-1024x1024.png" 17 | -------------------------------------------------------------------------------- /configs/flutter_launcher_incons/flutter_launcher_momo_icons.yaml: -------------------------------------------------------------------------------- 1 | flutter_launcher_icons: 2 | # Android 3 | android: "ic_launcher_monochrome" 4 | image_path_android: "assets/logo/icon-momo-1024x1024.png" 5 | -------------------------------------------------------------------------------- /configs/flutter_launcher_incons/flutter_launcher_notification_icons.yaml: -------------------------------------------------------------------------------- 1 | flutter_launcher_icons: 2 | # Android 3 | android: "ic_notification" 4 | image_path_android: "assets/logo/icon-notification-1024x1024.png" 5 | -------------------------------------------------------------------------------- /configs/flutter_launcher_incons/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /configs/flutter_native_splash/flutter_native_splash.yaml: -------------------------------------------------------------------------------- 1 | flutter_native_splash: 2 | color: "#FFFAFA" 3 | color_dark: "#000505" 4 | 5 | android: true 6 | image_android: assets/logo/macos-1024x1024.png 7 | android_12: 8 | color: "#458EF7" 9 | color_dark: "#1E4C8F" 10 | image: assets/logo/foreground-noshadow-1024x1024.png 11 | branding: assets/others/transparent-512x512.png 12 | 13 | ios: true 14 | image_ios: assets/logo/macos-1024x1024.png 15 | image_dark_ios: assets/logo/icon-ios-dark-1024x1024.png 16 | 17 | web: false 18 | fullscreen: true 19 | info_plist_files: 20 | - ios/Runner/Info.plist 21 | - ios/Runner/dev-Info.plist 22 | - ios/Runner/generic-Info.plist 23 | -------------------------------------------------------------------------------- /configs/l10n.yaml: -------------------------------------------------------------------------------- 1 | arb-dir: assets/l10n 2 | template-arb-file: en.arb 3 | output-dir: lib/l10n 4 | output-class: L10n 5 | output-localization-file: localizations.g.dart 6 | synthetic-package: false 7 | untranslated-messages-file: assets/l10n/_untranslated.json 8 | -------------------------------------------------------------------------------- /configs/package_rename_config/package_rename_config.yaml: -------------------------------------------------------------------------------- 1 | package_rename_config: 2 | android: 3 | app_name: Table Habit 4 | package_name: org.friesi23.app.mhabit 5 | override_old_package: com.example.mhabit 6 | lang: kotlin 7 | 8 | ios: 9 | app_name: Table Habit 10 | bundle_name: mhabit 11 | package_name: org.friesi23.app.mhabit 12 | -------------------------------------------------------------------------------- /configs/package_rename_config/package_rename_config_v2.yaml: -------------------------------------------------------------------------------- 1 | package_rename_config: 2 | android: 3 | package_name: io.github.friesi23.mhabit 4 | override_old_package: org.friesi23.app.mhabit 5 | lang: kotlin 6 | 7 | ios: 8 | package_name: io.github.friesi23.mhabit 9 | -------------------------------------------------------------------------------- /devtools_options.yaml: -------------------------------------------------------------------------------- 1 | extensions: 2 | -------------------------------------------------------------------------------- /docs/README/images/check-habit-detail-tb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/check-habit-detail-tb.gif -------------------------------------------------------------------------------- /docs/README/images/check-habit-detail.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/check-habit-detail.gif -------------------------------------------------------------------------------- /docs/README/images/create-new-habit-tb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/create-new-habit-tb.gif -------------------------------------------------------------------------------- /docs/README/images/create-new-habit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/create-new-habit.gif -------------------------------------------------------------------------------- /docs/README/images/donate-alipay.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/donate-alipay.jpg -------------------------------------------------------------------------------- /docs/README/images/donate-wechatpay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/donate-wechatpay.png -------------------------------------------------------------------------------- /docs/README/images/export-and-import-tb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/export-and-import-tb.gif -------------------------------------------------------------------------------- /docs/README/images/export-and-import.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/export-and-import.gif -------------------------------------------------------------------------------- /docs/README/images/fdroid-get-it-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/fdroid-get-it-on.png -------------------------------------------------------------------------------- /docs/README/images/github-get-it-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/github-get-it-on.png -------------------------------------------------------------------------------- /docs/README/images/habit-display-op-tb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/habit-display-op-tb.gif -------------------------------------------------------------------------------- /docs/README/images/habit-display-op.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/habit-display-op.gif -------------------------------------------------------------------------------- /docs/README/images/habit-display-page-tb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/habit-display-page-tb.gif -------------------------------------------------------------------------------- /docs/README/images/habit-display-page.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/habit-display-page.gif -------------------------------------------------------------------------------- /docs/README/images/habit-heatmap-tb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/habit-heatmap-tb.gif -------------------------------------------------------------------------------- /docs/README/images/habit-heatmap.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/habit-heatmap.gif -------------------------------------------------------------------------------- /docs/README/images/lzzyondroid-get-it-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/lzzyondroid-get-it-on.png -------------------------------------------------------------------------------- /docs/README/images/testflight-get-it-on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/docs/README/images/testflight-get-it-on.png -------------------------------------------------------------------------------- /docs/code_errata.md: -------------------------------------------------------------------------------- 1 | # Code Errata 2 | 3 | The purpose of this errata is primarily to note spelling errors or mistakes in source code. 4 | These errors may not affect the program's functionality and may not be immediately fixed. 5 | However, they need to be listed here for reference. 6 | 7 | ## Complete / Complate 8 | 9 | e.g. `isAutoComplated`, `_complate` 10 | -------------------------------------------------------------------------------- /docs/push_to_new_version.md: -------------------------------------------------------------------------------- 1 | # Bump version 2 | 3 | 1. Modify `pubspec.yaml` and change `version` param 4 | 2. Add new release change log in `CHANGELOG.md` 5 | 1. (Optional) Add translation text at `docs/CHANGELOG/.md` 6 | 3. (For android) Copy current version code change log from `CHANGELOG.md` to `{versionCode}.txt` (create a new file if not exist) at `fastlane/metadata/android/en-us/changelogs`. 7 | 1. (Optional) Add translation text at `fastlane/metadata/android//changelogs` 8 | 2. (Optional) Or run `./scripts/gen_changelogs.sh` to auto generate changelogs from `CHANGELOG.md` 9 | -------------------------------------------------------------------------------- /docs/release.md: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | # Pre-Release 7 | 8 | ## 1.16.15+84 9 | 10 | 11 | 12 | **🌐 Localization** 13 | 14 | - Update Russian l10n translation, thanks to Yurt Page's contribution on Weblate. 15 | - Update Turkish l10n translation, thanks to Bora Atıcı and Soykan Aydın for their contributions on Weblate. 16 | - Update Ukrainian l10n translation, thank for Preck757's contribution on Github. 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/1.txt: -------------------------------------------------------------------------------- 1 | - Change package domain to `github.io` 2 | - New release 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/10.txt: -------------------------------------------------------------------------------- 1 | - fix fastlane/zh-CN app title name 2 | - fix some spelling errors 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/11.txt: -------------------------------------------------------------------------------- 1 | - add feature to export habit without records 2 | - update `readme` 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | - fixed filter issue, see [#38](https://github.com/FriesI23/mhabit/issues/38) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/13.txt: -------------------------------------------------------------------------------- 1 | - fixed misspelling in theme change button 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/14.txt: -------------------------------------------------------------------------------- 1 | - add two faster input buttons to change the daily goal value 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/15.txt: -------------------------------------------------------------------------------- 1 | - fixed: FAB display overlap with habit 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/16.txt: -------------------------------------------------------------------------------- 1 | - add custom datetime format picker 2 | - fixed wrong use of create date icon 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/17.txt: -------------------------------------------------------------------------------- 1 | - add compact UI on habits page 2 | - add a slider to adjust the habits check area radio 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/18.txt: -------------------------------------------------------------------------------- 1 | - fixed summary text show negative number 2 | - add new target days option 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/19.txt: -------------------------------------------------------------------------------- 1 | - Add negative habit 2 | - Refactor some of the code 3 | - Add CI 4 | 5 | **IMPORTANT**: Please make a full backup before updating this version. 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/2.txt: -------------------------------------------------------------------------------- 1 | - Feature: 2 | - Add skip reason dialog on heatmap. 3 | - Add 'Maximum Daily Goal' value in Change Goal Dialog. 4 | - Add custom color on skipReason/changeGoal dialog. 5 | - Fixed: 6 | - Provide remaining text for translation. 7 | - int like 1 shouldn't display decimal point. 8 | - Other: 9 | - Change app logo style. 10 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/20.txt: -------------------------------------------------------------------------------- 1 | - Show Memo on Habit detail page 2 | - Support Markdown formatter on Habit memo 3 | - Fixed positive habit's daily goal set to 0 problem in edit page 4 | - Fixed unable to switch habitType when editting exsit habit 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/21.txt: -------------------------------------------------------------------------------- 1 | - Add support for Persian language, Thanks for @chromer030's translation contribution🎉 2 | - Fixed some display issues with UI style under RTL layout 3 | - Add translation statistics graph in `readme` 4 | - Split apk per ABI when releasing new version, only supporting `GitHub/Releases` currently. 5 | - Optimize file structure of CI scripts 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/22.txt: -------------------------------------------------------------------------------- 1 | - Add 'Habit Template' feature 2 | - Refactor `Appbar` section of code 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/23.txt: -------------------------------------------------------------------------------- 1 | - Fixed use the user-entered value for auto-complete instead of using dailyGoal (#85) 2 | - Fixed Included archived habit in most popular habit section (#83) 3 | - Fixed incorrect markdown colors on memo string on dark mode (#79) 4 | - Fixed unclear color for '?' and '×' buttong in dark mode (#75) 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/24.txt: -------------------------------------------------------------------------------- 1 | - Add Themed icon (#89) 2 | - Store the last filled number of target days (#88) 3 | - Show completed habits even when archived (#87) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/25.txt: -------------------------------------------------------------------------------- 1 | - Change new app icon (#92) 2 | - Fixed chart bars may overlap problem (#94) 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/26.txt: -------------------------------------------------------------------------------- 1 | - Add donate button for crypto currency (#102) 2 | - Fixed filtering to correctly hide completed habits (#104) 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/27.txt: -------------------------------------------------------------------------------- 1 | - Optimize donate dialog (#113) 2 | - Fixed month name alignment (#114) 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/28.txt: -------------------------------------------------------------------------------- 1 | - Upgrade Flutter version to 3.13.9 2 | - Upgrade dependency packages 3 | - Modify app release action to use the submodule from the project 4 | - Fixed some bugs 5 | 6 | see changes in [#115](https://github.com/FriesI23/mhabit/pull/115) for 7 | complete overview. 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/29.txt: -------------------------------------------------------------------------------- 1 | - Add German translation 2 | - Add Custom tap actions for Habit Record 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/3.txt: -------------------------------------------------------------------------------- 1 | - Add Fastlane file structure 2 | - Add android app signing 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/30.txt: -------------------------------------------------------------------------------- 1 | - Add Vietnamese translation (#121) 2 | - Update for German translation (#123) 3 | - Fix Habit filter (#125) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/31.txt: -------------------------------------------------------------------------------- 1 | - Add French translation (#130) 2 | - Add Arabic translation (#132) 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/32.txt: -------------------------------------------------------------------------------- 1 | - Fix incorrect default language (#133) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/33.txt: -------------------------------------------------------------------------------- 1 | - Freeze score if habit archived (#138) 2 | - Fix not reminding issue on android (#140) 3 | - Fix typo issue in project (#137) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/34.txt: -------------------------------------------------------------------------------- 1 | - Fix not reminding issue on android (#144) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/35.txt: -------------------------------------------------------------------------------- 1 | - Update dart SDK dependency to >=3.0.0 2 | - Refactor logging module 3 | - Specify provider dependencies on pages 4 | - Remove dependency with summary and detail page 5 | - Rewrite `context.maybeRead` method 6 | - Fix habit's revert operation 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/36.txt: -------------------------------------------------------------------------------- 1 | - Add contributor page 2 | - Fixed where pressing back button would exit app in edit mode 3 | - Refactor code pertaining to `db` / `profile` / `provider` / `view`, etc. 4 | - Add lint options to `analysis_options.yaml` 5 | 6 | **WARNING**: Strongly recommend backup habits before updating this version. 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/37.txt: -------------------------------------------------------------------------------- 1 | - Add Batch Check-in feature 2 | 3 | After long press to select multi habits, `Batch Check-in` feature can be 4 | accessed by clicking `FAB` button at bottom right of screen. 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/39.txt: -------------------------------------------------------------------------------- 1 | - Add Russian translation. (#169, thanks for @yurtpage's contribution) 2 | - Add Italian translation. (from Weblate, thanks for @spar34vi's translation) 3 | - Add support for the Windows platform. (#164) 4 | - Add support for `dmg` build on macOS. (#168, thanks for @rxzheng's contribution) 5 | - Add `pre-release` version build process. (#171) 6 | - Fixed issue in `OpenContainer` raise exception when navigating via `Tooltips` enabled. (#166) 7 | - Update iOS dependency package versions. 8 | - Optimize code quality. 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/4.txt: -------------------------------------------------------------------------------- 1 | - Fix fastlane locale folder case 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/42.txt: -------------------------------------------------------------------------------- 1 | - Add In-App Language Switching 2 | - Add Debug log Collection feature. 3 | - Fixed: Notification icon wasn't shown on native Android platform. 4 | - Fixed: Localization for batched check-in's changed snackbar text. 5 | - Bump dependencies' versions. 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/45.txt: -------------------------------------------------------------------------------- 1 | - Update Translation file (vi) 2 | - Add linux platform support (#174) 3 | - Fix test reporter action HTTP Error (#181) 4 | - Bump dependencies version 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/47.txt: -------------------------------------------------------------------------------- 1 | - Upgrade flutter to 3.19.6. 2 | - Add Spain translation, thank for Andres Blasco Arnáiz's contribution on weblate. 3 | 4 | full changes on this realese see: [release.md](https://github.com/FriesI23/mhabit/blob/v1.13.1%2B47/docs/release.md) 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/49.txt: -------------------------------------------------------------------------------- 1 | - Update Spain translation, thank for Andres Blasco Arnáiz and gallegonovato's contribution on weblate. 2 | - Fix show black screen when back from main screen. 3 | 4 | full changes on this realese see: [release.md](https://github.com/FriesI23/mhabit/blob/v1.13.3%2B49/docs/release.md) 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/5.txt: -------------------------------------------------------------------------------- 1 | - fix artifact path with appbundle 2 | - fix app signed progress 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/52.txt: -------------------------------------------------------------------------------- 1 | - Add Polish translation (need translate). 2 | - Add Tranditional Chinese translation, thank for PeterDaveHello's contribution on Github. 3 | - Add Ukrainian translation, thank for Fqwe1's contribution on Weblate. 4 | - Update Spanish translation, thank for gallegonovato's contribution on Weblate. 5 | - Update Italian translation, thank for glemco's contribution on Weblate. 6 | - Update Persian translation, thank for ulracte's contribution on Weblate. 7 | - Bump dependencies version, see [here](https://github.com/FriesI23/mhabit/commit/204922af8eaf0c025739623aad85a12f14cefce5) for more information. 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/54.txt: -------------------------------------------------------------------------------- 1 | - Add Turkey translation, Thanks for S. Aydın's contribution on weblate. 2 | - Bump Dependencies versions on Android. 3 | - Keep `@mipmap/ic_notification` to prevent it from being removed by `shrinkResources`, 4 | see [https://stackoverflow.com/a/50703322](https://stackoverflow.com/a/50703322). 5 | 6 | full changes on this realese see: [release.md](https://github.com/FriesI23/mhabit/blob/v1.14.1%2B54/docs/release.md) 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/56.txt: -------------------------------------------------------------------------------- 1 | - Add Windows MSIX Installer. 2 | - Add separate error page when app crashes during startup. 3 | - Fix issues with incorrect usage of `Completer`. 4 | - Change debug log path to `Cache` directory. 5 | - Change database path to `Support` directory on non-android platforms. 6 | - Update Ukrainian translation, thank for Максим Горпиніч's contribution on Weblate. 7 | 8 | **WARNING**: Because changing database path will involve file migration, 9 | it's strongly recommended to backup (export) habits before upgrading. 10 | 11 | full changes on this realese see: [release.md](https://github.com/FriesI23/mhabit/blob/v1.14.3%2B56/docs/release.md) 12 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/57.txt: -------------------------------------------------------------------------------- 1 | - Strip `DependenciesInfo` block from android, resolve [#205](https://github.com/FriesI23/mhabit/issues/205). 2 | 3 | full changes on this realese see: [release.md](https://github.com/FriesI23/mhabit/blob/v1.14.4%2B57/docs/release.md) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/6.txt: -------------------------------------------------------------------------------- 1 | - Add distributionSha256Sum, see [here](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/13058#note_1404993220) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/61.txt: -------------------------------------------------------------------------------- 1 | - Upgrade `flutter` version to 3.24.5. 2 | - Upgrade dependencies version. 3 | - Migrate from `file_picker` to `file_selector`. 4 | - Unifying saveFile and shareXFiles across platforms. 5 | - Use "saveFile": Windows / MacOS / Linux. 6 | - Use "shareXFiles": Android / iOS(iPadOS). 7 | - Optimize page return logic implementation. 8 | - Fix TextFiled's text UI sinking on `Frequency` and `Target Days` picker. 9 | - Fix Habits Exporter function in display page on iPadOS. 10 | - Fix serveral Export related functions on Linux. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/62.txt: -------------------------------------------------------------------------------- 1 | - L10n: Add Czech translation, thank for Jirka Čapek's contribution on Weblate. 2 | - CI: Normalize translation ARB Files. 3 | - CI: Add Code checking Github Action. 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/7.txt: -------------------------------------------------------------------------------- 1 | - Add flutter as submodule 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/77.txt: -------------------------------------------------------------------------------- 1 | **🐛 Bug Fixes** 2 | 3 | - Show notification bar once app is loaded on iOS 4 | - Process duplicate uuid when re-calc habit record uuid (#269) 5 | 6 | **🌐 Localization** 7 | 8 | - Update Spanish l10n translation, thanks to Patricio Carrau's contribution on Weblate. 9 | 10 | **🧹 Others** 11 | 12 | - chore: bump dependencies (#267) 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/78.txt: -------------------------------------------------------------------------------- 1 | **🍎 iOS** 2 | 3 | - Add support for iOS app-language preference. 4 | 5 | **📝 Documentation** 6 | 7 | - Add Privacy Policy file. 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/8.txt: -------------------------------------------------------------------------------- 1 | - Fix `pubspec.lock` file changed when run `flutter pub get` 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/changelogs/9.txt: -------------------------------------------------------------------------------- 1 | - remove iternet permission on android 2 | - change launchUrl mode to externel appilication 3 | - bump flutter_donation_buttons to 0.2.7 4 | - fix export habits in the order determined by the manual sort position 5 | - add auto generate changlog python script 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/full_description.txt: -------------------------------------------------------------------------------- 1 | "Table Habit" is an app that helps you establish and track your own micro habit. Its includes a complete set of growth curves and charts to help you establish habits more effectively. 2 | 3 | Moreover, this app completely open source and include features below: 4 | 5 | - A scoring system to help develop your own micro habits. 6 | - An easy-to-use interface for habit check in. 7 | - Different colors used to distinguish between various habits. 8 | - Easily export and import habits using a human-readable format (JSON). 9 | - Adapt to Material3 and Dynamic Color for Android 12 and later versions. 10 | - Adaptation for landscape and large screen devices. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- 1 | ../../../../../android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/sevenInchScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/sevenInchScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/sevenInchScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/sevenInchScreenshots/4.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/sevenInchScreenshots/5.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/sevenInchScreenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/sevenInchScreenshots/6.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/tenInchScreenshots/1.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/tenInchScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/tenInchScreenshots/3.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/tenInchScreenshots/4.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/tenInchScreenshots/5.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/tenInchScreenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/fastlane/metadata/android/en-US/images/tenInchScreenshots/6.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Boost your own habit growth with charts. -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | Table Habit -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/full_description.txt: -------------------------------------------------------------------------------- 1 | Таблица Привычек это приложение которое помогает вам установить и отслеживать вашу собственную микро привычку. Он включает в себя полный набор кривых и диаграмм роста, чтобы помочь вам более эффективно прививать привычки. 2 | 3 | Более того, это приложение полностью свободное и имеет такие возможности: 4 | 5 | - Система оценок которая помогает разработать свои собственные микро привычки. 6 | - Простой в использовании интерфейс для регистрации привычки. 7 | - Разные цвета используемые для различных привычек. 8 | - Легко экспортировать и импортировать привычки в человекочитаемый формат (JSON). 9 | - Адаптировано к Material3 и Динамическим цветам для версий Android 12 и старше. 10 | - Адаптация для альбомной ориентации и больших экранов. -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/short_description.txt: -------------------------------------------------------------------------------- 1 | Прививайте свою привычку с помощью диаграмм. -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/title.txt: -------------------------------------------------------------------------------- 1 | Таблица Привычек -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/1.txt: -------------------------------------------------------------------------------- 1 | - 将 `package` 域名更改为 `github.io` 2 | - 发布新版本 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/10.txt: -------------------------------------------------------------------------------- 1 | - 修复 Fastlane/zh-CN 应用程序标题名称 2 | - 修复一些拼写错误 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/11.txt: -------------------------------------------------------------------------------- 1 | - 添加无记录导出习惯的功能 2 | - 更新`Readme`文档 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | - 修复筛选器错误, [#38](https://github.com/FriesI23/mhabit/issues/38) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/13.txt: -------------------------------------------------------------------------------- 1 | - 修复主题更改按钮中的拼写错误 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/14.txt: -------------------------------------------------------------------------------- 1 | - 添加两个更快改变每日目标数值的按钮 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/15.txt: -------------------------------------------------------------------------------- 1 | - 修复 FAB 按钮与习惯重叠的问题 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/16.txt: -------------------------------------------------------------------------------- 1 | - 添加自定义日期时间格式选择弹窗 2 | - 修复创建日期图标的错误使用的问题 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/17.txt: -------------------------------------------------------------------------------- 1 | - 在习惯页面上添加紧凑型用户界面 2 | - 添加滑块来调整习惯勾选区域的占比 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/18.txt: -------------------------------------------------------------------------------- 1 | - 修复总览中显示负数的问题 2 | - 添加新的目标天数选项 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/19.txt: -------------------------------------------------------------------------------- 1 | - 添加负面习惯 2 | - 重构部分代码 3 | - 增加 CI 4 | 5 | **重要**:在更新此版本之前,请进行全量备份。 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/2.txt: -------------------------------------------------------------------------------- 1 | - 新功能: 2 | - 在`Heatmap`上添加跳过原因的`Dialog`。 3 | - 在目标更改`Dialog`中添加“每日最大目标”选项。 4 | - 在跳过原因和目标更改`Dialog`中添加自定义颜色。 5 | - 修复: 6 | - 补充部分文本翻译。 7 | - 整数如`1`不应显示小数点。 8 | - 其他: 9 | - 更改应用图表样式。 10 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/20.txt: -------------------------------------------------------------------------------- 1 | - 在习惯详情页面显示备忘录 2 | - 支持在习惯备忘录中使用 Markdown 格式 3 | - 修复编辑页面中正向习惯目标设为 0 的问题 4 | - 修复编辑已存在习惯时不能切换 habitType 的问题 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/21.txt: -------------------------------------------------------------------------------- 1 | - 增加对波斯语的支持,感谢 @chromer030 的翻译贡献 🎉 2 | - 修复在 RTL 布局下 UI 的显示问题 3 | - 在 `readme` 中添加翻译统计图 4 | - 在发布新版本时按 ABI 拆分 APK,目前仅支持 `GitHub/Releases` 5 | - 优化 CI 脚本的文件组织结构 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/22.txt: -------------------------------------------------------------------------------- 1 | - 增加“习惯模板”功能 2 | - 重构 `Appbar` 部分代码 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/23.txt: -------------------------------------------------------------------------------- 1 | - 修复使用用户输入的值而不是每日目标值计算自动完成数值 (#85) 2 | - 修复在最受欢迎的习惯部分中包含已归档习惯的问题 (#83) 3 | - 修复暗模式下备忘录字符串使用错误的 Markdown 颜色 (#79) 4 | - 修复暗模式下 '?' 和 '×' 按钮颜色不清楚的问题 (#75) 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/24.txt: -------------------------------------------------------------------------------- 1 | - 添加主题图标 (#89) 2 | - 存储上次填写的目标天数 (#88) 3 | - 即使已归档,仍显示已完成习惯 (#87) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/25.txt: -------------------------------------------------------------------------------- 1 | - 更换新的应用程序图标 (#92) 2 | - 修复了图表柱可能重叠的问题 (#94) 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/26.txt: -------------------------------------------------------------------------------- 1 | - 增加加密货币捐赠按钮(#102) 2 | - 修复筛选正确隐藏已完成习惯(#104) 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/27.txt: -------------------------------------------------------------------------------- 1 | - 优化 捐赠 Dialog (#113) 2 | - 修正 Heatmap 月份名称对齐 (#114) 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/28.txt: -------------------------------------------------------------------------------- 1 | - 升级 Flutter 版本至 3.13.9 2 | - 升级依赖包 3 | - 修改应用发布操作,使用项目中的子模块 4 | - 修复了一些 bug 5 | 6 | 查看完整变更内容,请参见 [#115](https://github.com/FriesI23/mhabit/pull/115). 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/29.txt: -------------------------------------------------------------------------------- 1 | - 添加德语翻译 2 | - 增加习惯记录自定义点击操作 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/3.txt: -------------------------------------------------------------------------------- 1 | - 添加 Fastlane 文件结构 2 | - 添加 Android 应用程序签名 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/30.txt: -------------------------------------------------------------------------------- 1 | - 添加越南语翻译 (#121) 2 | - 更新德语翻译 (#123) 3 | - 修复习惯 Filter (#125) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/31.txt: -------------------------------------------------------------------------------- 1 | - 增加法语翻译 (#130) 2 | - 增加阿拉伯语翻译 (#132) 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/32.txt: -------------------------------------------------------------------------------- 1 | - 修复错误的默认语言 (#133) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/33.txt: -------------------------------------------------------------------------------- 1 | - 如果习惯已归档,则冻结分数(#138) 2 | - 修复安卓上不提醒的问题(#140) 3 | - 修复项目中的拼写错误问题(#137) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/34.txt: -------------------------------------------------------------------------------- 1 | - 修复安卓上不提醒的问题(#144) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/35.txt: -------------------------------------------------------------------------------- 1 | - 更新 Dart SDK 依赖 >=3.0.0 2 | - 重构日志模块 3 | - 明确页面中的 `Provider` 依赖 4 | - 移除摘要和详细页面间的依赖关系 5 | - 重写 `context.maybeRead` 方法 6 | - 修复习惯的撤销操作 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/36.txt: -------------------------------------------------------------------------------- 1 | - 添加贡献者页面 2 | - 修复在编辑模式下按返回按钮会退出应用的问题 3 | - 重构与 `db` / `profile` / `provider` / `view` 等相关代码 4 | - `analysis_options.yaml` 中添加相关代码检查选项 5 | 6 | **警告**: 强烈建议在更新此版本之前备份。 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/37.txt: -------------------------------------------------------------------------------- 1 | - 新增批量打卡功能 2 | 3 | 长按选择多个习惯后,可以通过点击屏幕右下角的 `FAB` 来访问 `批量打卡` 功能。 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/39.txt: -------------------------------------------------------------------------------- 1 | - 添加俄语翻译。 (#169, 感谢 @yurtpage 的贡献) 2 | - 添加意大利语翻译。 (来自 Weblate,感谢 @spar34vi 的翻译) 3 | - 添加对 Windows 支持。 (#164) 4 | - 添加对 macOS 上 dmg 支持。 (#168, 感谢 @rxzheng 的贡献) 5 | - 添加 `pre-release` 版本构建流程。 (#171) 6 | - 修复了通过 `OpenContainer` 导航时, 如果启用 `Tooltips` 会引发异常的问题。 (#166) 7 | - 更新 iOS 依赖版本。 8 | - 优化代码质量。 9 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/4.txt: -------------------------------------------------------------------------------- 1 | - 修复 Fastlane 的本地化文件夹大小写问题 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/42.txt: -------------------------------------------------------------------------------- 1 | - 添加应用内语言切换功能。 2 | - 添加调试日志收集功能。 3 | - 修复:原生 Android 平台上不显示通知图标。 4 | - 修复:本地化批量签到的 `snackbar` 文本。 5 | - 升级依赖项的版本。 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/45.txt: -------------------------------------------------------------------------------- 1 | - 更新翻译文件。(越南语) 2 | - 增加对 Linux 平台的支持。(#174) 3 | - 修复 Github Action 测试报告程序的 HTTP 错误。(#181) 4 | - 升级依赖项的版本。 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/47.txt: -------------------------------------------------------------------------------- 1 | - 升级 Flutter 到 3.19.6 版本。 2 | - 添加西班牙语翻译,感谢 Andres Blasco Arnáiz 在 weblate 上的贡献。 3 | 4 | 完整的更新内容详见:[release.md](https://github.com/FriesI23/mhabit/blob/v1.13.1%2B47/docs/release.md) 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/49.txt: -------------------------------------------------------------------------------- 1 | - 更新西班牙语翻译,感谢 Andres Blasco Arnáiz 和 gallegonovato 在 Weblate 上的贡献。 2 | - 修复从主屏幕返回时黑屏的问题。 3 | 4 | 完整的更新内容详见:[release.md](https://github.com/FriesI23/mhabit/blob/v1.13.3%2B49/docs/release.md) 5 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/5.txt: -------------------------------------------------------------------------------- 1 | - 修复 appbundle 构件路径 2 | - 修复应用程序构建签名 3 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/52.txt: -------------------------------------------------------------------------------- 1 | - 添加波兰语翻译(需要翻译)。 2 | - 添加繁体中文翻译,感谢 PeterDaveHello 在 GitHub 上的贡献。 3 | - 添加乌克兰语翻译,感谢 Fqwe1 在 Weblate 上的贡献。 4 | - 更新西班牙语翻译,感谢 gallegonovato 在 Weblate 上的贡献。 5 | - 更新意大利语翻译,感谢 glemco 在 Weblate 上的贡献。 6 | - 更新波斯语翻译,感谢 ulracte 在 Weblate 上的贡献。 7 | - 更新依赖项版本, 更多信息请参见[此处](https://github.com/FriesI23/mhabit/commit/204922af8eaf0c025739623aad85a12f14cefce5)。 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/54.txt: -------------------------------------------------------------------------------- 1 | - 添加土耳其语翻译,感谢 S. Aydın 在 Weblate 上的贡献。 2 | - 更新了 Android 端对应依赖版本。 3 | - 保留 `@mipmap/ic_notification`,以防被 `shrinkResources` 移除, 4 | 详见 [https://stackoverflow.com/a/50703322](https://stackoverflow.com/a/50703322)。 5 | 6 | 完整的更新内容详见:[release.md](https://github.com/FriesI23/mhabit/blob/v1.14.1%2B54/docs/release.md) 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/56.txt: -------------------------------------------------------------------------------- 1 | - 添加 Windows MSIX 安装程序。 2 | - 在应用启动期间崩溃时添加单独的错误页面。 3 | - 修复部分 `Completer` 使用不当的问题。 4 | - 将调试日志路径更改为 `Cache` 目录。 5 | - 将数据库路径 (非安卓平台)更改为 `Support` 目录。 6 | - 更新乌克兰语翻译,感谢 Максим Горпиніч 在 Weblate 上的贡献。 7 | 8 | **警告**:由于更改数据库路径将涉及文件迁移,强烈建议在升级前备份(导出)习惯数据。 9 | 10 | 完整的更新内容详见:[release.md](https://github.com/FriesI23/mhabit/blob/v1.14.3%2B56/docs/release.md) 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/57.txt: -------------------------------------------------------------------------------- 1 | - 从安卓去除 `DependenciesInfo` 块, 解决 [#205](https://github.com/FriesI23/mhabit/issues/205). 2 | 3 | 完整的更新内容详见:[release.md](https://github.com/FriesI23/mhabit/blob/v1.14.4%2B57/docs/release.md) 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/6.txt: -------------------------------------------------------------------------------- 1 | - 添加 distributionSha256Sum,详见[此处](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/13058#note_1404993220) 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/61.txt: -------------------------------------------------------------------------------- 1 | - 升级 `flutter` 版本到 3.24.5。 2 | - 升级依赖版本。 3 | - 将 `file_picker` 迁移到 `file_selector`。 4 | - 统一跨平台的 `saveFile` 和 `shareXFiles` 功能实现: 5 | - Windows / MacOS / Linux 平台使用 `saveFile`。 6 | - Android / iOS(含 iPadOS)平台使用 `shareXFiles`。 7 | - 优化页面返回逻辑实现。 8 | - 修复 `Frequency` 和 `Target Days` 选项中 `TextField` 文本下沉的问题。 9 | - 修复 iPadOS 中显示页面的习惯导出功能。 10 | - 修复 Linux 上多个与导出相关的功能。 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/62.txt: -------------------------------------------------------------------------------- 1 | - 本地化:添加捷克语翻译,感谢 Jirka Čapek 在 Weblate 上的贡献。 2 | - CI:标准化翻译 ARB 文件。 3 | - CI:添加代码检查的 GitHub Action。 4 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/66.txt: -------------------------------------------------------------------------------- 1 | - 更新繁体中文翻译,感谢 Peter Dave Hello 在 GitHub 上的贡献。 2 | - 更新土耳其语翻译,感谢 Bora Atıcı 在 Weblate 上的贡献。 3 | - 更新波兰语翻译,感谢 Bartek Skrzypek 在 Weblate 上的贡献。 4 | - 为 `Proxy` 设计模式相关类添加代码生成器/注解(#228)。 5 | - 确保 `firstday` 配置应用到日历选择(#222,#228)。 6 | - 导出时也导出跳过原因(#227)。 7 | - 修复数据库操作中的若干问题: 8 | - 自定义 SQL 中的变量名拼写错误。 9 | - 使用正确的字段类型:`Record.reason`。 10 | - 在插入多条记录时使用 "update" 而不是 "replace"。 11 | - 插入多条记录时使用事务。 12 | - 修复批量习惯更改页面中无法修改今天状态的问题。 13 | - 修复页面初始化时 `loadData` 被执行多次的问题(#230)。 14 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/7.txt: -------------------------------------------------------------------------------- 1 | - 将 flutter 引入为 submodule 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/70.txt: -------------------------------------------------------------------------------- 1 | **✨ 新功能** 2 | 3 | - 添加 WebDav 网络同步功能(实验性)。 4 | - 添加自动同步功能。 5 | - 添加实验性功能开关。 6 | 7 | > **警告**:WebDav 网络同步会修改数据库字段。 8 | > 请务必先使用 **“导出”** 功能备份当前习惯数据。 9 | > 10 | > **警告**:此功能为实验性,可能包含恶性 BUG。 11 | > 使用时请谨慎操作。 12 | 13 | 1. 前往 `设置 -> 实验性功能` 并启用 `"习惯云同步"` 以显示该功能入口。 14 | 2. 前往 `设置 -> 同步选项` 启用并配置新的服务器。 15 | 3. 点击 `立即同步` 或在主页下拉以与服务器同步,同步进度将在设置中显示。 16 | 17 | 如遇 BUG,请描述当前网络环境,并导出对应的(或全部)同步失败日志。 18 | 19 | **🐛 BUG 修复** 20 | 21 | - 删除习惯后显示正确的底部提示信息。(#247) 22 | - 修复开始日期早于今天的习惯时,分数计算错误的问题。(#248) 23 | - **“全选”** 仅选择当前可见的习惯。(#249) 24 | - (Android)明确声明网络权限。 25 | - (Android)移除不必要的 `READ_EXTERNAL_STORAGE` 权限。 26 | 27 | **🌐 本地化** 28 | 29 | - 更新俄语翻译,感谢 Bora Yurt Page 在 Weblate 上的贡献。 30 | - 更新乌克兰语翻译,感谢 Максим Горпиніч 在 Weblate 上的贡献。 31 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/74.txt: -------------------------------------------------------------------------------- 1 | **✨ 新功能** 2 | 3 | - 添加 iOS 和 Android 启动屏幕图片。 4 | - 默认启用应用同步功能(#264)。 5 | 6 | **🐛 Bug 修复** 7 | 8 | - 选择备份文件后导入未开始的问题(#257)。 9 | - 西里尔字母和表情符号编码错误的问题(#254)。 10 | 11 | **🍎 iOS** 12 | 13 | - **添加构建 Flavor:** 14 | - `f_dev`:用于 iOS 开发构建。 15 | - `f_generic`:用于 iOS 发布构建。 16 | - `f_store`:用于 iOS App Store 发布构建。 17 | - **生成 Logo 变体:** 18 | - 深色版 19 | - 淡色版 20 | - [更多信息](https://developer.apple.com/design/human-interface-guidelines/app-icons#iOS-iPadOS) 21 | - **CI:** 22 | - 添加 iOS 发布 CI(生成未签名 IPA 文件)。 23 | 24 | **🍏 macOS** 25 | 26 | - **添加构建 Flavor:** 27 | - `f_dev`:用于 macOS 开发构建。 28 | - `f_generic`:用于 macOS 发布构建。 29 | 30 | **🪟 Windows** 31 | 32 | - 修复 Windows MSIX 打包问题(#261)。 33 | 34 | **🌐 本地化** 35 | 36 | - 更新西班牙语本地化翻译,感谢 Patricio Carrau 在 Weblate 上的贡献。 37 | 38 | **📝 文档** 39 | 40 | - 更新 **README.md** 中 iOS / macOS 的构建说明。 41 | - 更新 **README.md** 中 iOS Testflight 的说明。 42 | - 更新 **add_new_locale_support.md**。 43 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/77.txt: -------------------------------------------------------------------------------- 1 | **🐛 BUG 修复** 2 | 3 | - 在 iOS 上加载应用后显示通知栏 4 | - 在重新计算习惯记录 UUID 时处理重复的 UUID(#269) 5 | 6 | **🌐 本地化** 7 | 8 | - 更新西班牙语翻译,感谢 Patricio Carrau 在 Weblate 上的贡献。 9 | 10 | **🧹 其他** 11 | 12 | - chore:升级依赖项(#267) 13 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/78.txt: -------------------------------------------------------------------------------- 1 | **🍎 iOS** 2 | 3 | - 支持 iOS 应用语言偏好。 4 | 5 | **📝 文档** 6 | 7 | - 添加隐私政策文件。 8 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/8.txt: -------------------------------------------------------------------------------- 1 | - 修复执行 `flutter pub get` 导致 `pubspec.lock` 被修改的问题 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/changelogs/9.txt: -------------------------------------------------------------------------------- 1 | - 移除应用程序互联网权限 2 | - 修改 `launchUrl` 模式为外部应用程序 3 | - 升级 `flutter_donation_buttons` 至 0.2.7 4 | - 修改导出习惯使其根据手动排序导出 5 | - 添加自动生成变更日志的 Python 脚本 6 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/full_description.txt: -------------------------------------------------------------------------------- 1 | "桌上习惯" 是一款帮助你建立和追踪个人微习惯的应用。它包括一套完整的成长曲线和图表,帮助你更有效地养成习惯。 2 | 3 | 此外,这个应用完全开源,并包含以下功能: 4 | 5 | - 一个评分系统,帮助你发展个人微习惯。 6 | - 简单易用的界面,用于打卡签到习惯。 7 | - 使用不同的颜色来区分不同的习惯。 8 | - 可以使用人类可读的格式(JSON)轻松导出和导入习惯。 9 | - 适配 Material3 和 Android 12 及更高版本的动态颜色。 10 | - 适配横屏和大屏设备。 -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/short_description.txt: -------------------------------------------------------------------------------- 1 | 以图表和分数的方式帮助养成个人习惯 -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/title.txt: -------------------------------------------------------------------------------- 1 | Table Habit -------------------------------------------------------------------------------- /flutter_launcher_icons.yaml: -------------------------------------------------------------------------------- 1 | ./configs/flutter_launcher_incons/flutter_launcher_icons.yaml -------------------------------------------------------------------------------- /flutter_launcher_momo_icons.yaml: -------------------------------------------------------------------------------- 1 | ./configs/flutter_launcher_incons/flutter_launcher_momo_icons.yaml -------------------------------------------------------------------------------- /flutter_launcher_notification_icons.yaml: -------------------------------------------------------------------------------- 1 | configs/flutter_launcher_incons/flutter_launcher_notification_icons.yaml -------------------------------------------------------------------------------- /installers/dmg_creator/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "Table Habit", 3 | "icon": "./icon.icns", 4 | "icon-size": 100, 5 | "window": { 6 | "size": { 7 | "width": 400, 8 | "height": 100 9 | } 10 | }, 11 | "contents": [ 12 | { "x": 250, "y": 80, "type": "link", "path": "/Applications" }, 13 | { "x": 50, "y": 80, "type": "file", "path": "../../build/macos/Build/Products/Release/mhabit.app" } 14 | ] 15 | } -------------------------------------------------------------------------------- /installers/dmg_creator/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/installers/dmg_creator/icon.icns -------------------------------------------------------------------------------- /installers/macos_exporter/GithubExportOptions.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | manageAppVersionAndBuildNumber 6 | 7 | method 8 | developer-id 9 | teamID 10 | ${APPLE_TEAM_ID} 11 | 12 | 13 | -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # build dir 31 | build/ 32 | 33 | # Exceptions to above rules. 34 | !default.mode1v3 35 | !default.mode2v3 36 | !default.pbxuser 37 | !default.perspectivev3 38 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 12.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Localizations/ar.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/ar.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/cs.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/cs.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/de.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/de.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/en.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/en.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/es.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/es.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/fa.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/fa.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/fr.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/fr.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/he.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/he.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/it.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/it.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/nb.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/nb.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/pl.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/pl.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/pt.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/pt.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/ru.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/ru.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/tr.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/tr.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/uk.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/uk.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/vi.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/vi.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/zh-Hans.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "桌上习惯 开发版"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/zh-Hans.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "桌上习惯"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/zh-Hant.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "桌上習慣 開發版"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/zh-Hant.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "桌上習慣"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/zh.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | -------------------------------------------------------------------------------- /ios/Localizations/zh.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @main 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | if #available(iOS 10.0, *) { 11 | UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate 12 | } 13 | 14 | GeneratedPluginRegistrant.register(with: self) 15 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-38x38@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-38x38@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-38x38@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-38x38@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-64x64@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-64x64@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-64x64@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-64x64@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-68x68@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-68x68@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-38x38@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-38x38@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-38x38@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-38x38@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-64x64@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-64x64@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-64x64@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-64x64@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-68x68@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-68x68@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Dark-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-38x38@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-38x38@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-38x38@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-38x38@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-64x64@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-64x64@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-64x64@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-64x64@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-68x68@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-68x68@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-Tinted-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "filename" : "background.png", 5 | "idiom" : "universal" 6 | }, 7 | { 8 | "appearances" : [ 9 | { 10 | "appearance" : "luminosity", 11 | "value" : "dark" 12 | } 13 | ], 14 | "filename" : "darkbackground.png", 15 | "idiom" : "universal" 16 | } 17 | ], 18 | "info" : { 19 | "author" : "xcode", 20 | "version" : 1 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /ios/Runner/Runner.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | keychain-access-groups 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import Flutter 2 | import UIKit 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /l10n.yaml: -------------------------------------------------------------------------------- 1 | ./configs/l10n.yaml -------------------------------------------------------------------------------- /lib/annotation/_json_annotation.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './epoch_date_time_converter.dart'; 16 | export './epoch_habit_date_converter.dart'; 17 | export './normalizing_list_converter.dart'; 18 | export './time_of_day_converter.dart'; 19 | -------------------------------------------------------------------------------- /lib/annotation/proxy_annotation.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2025 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | class Proxy { 16 | final Type targetClass; 17 | final bool useAnnotatedName; 18 | 19 | const Proxy(this.targetClass, {this.useAnnotatedName = false}); 20 | } 21 | -------------------------------------------------------------------------------- /lib/assets/assets.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './assets.gen.dart'; 16 | export './fonts.gen.dart'; 17 | -------------------------------------------------------------------------------- /lib/assets/fonts.gen.dart: -------------------------------------------------------------------------------- 1 | /// GENERATED CODE - DO NOT MODIFY BY HAND 2 | /// ***************************************************** 3 | /// FlutterGen 4 | /// ***************************************************** 5 | 6 | // coverage:ignore-file 7 | // ignore_for_file: type=lint 8 | // ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use 9 | 10 | class FontFamily { 11 | FontFamily._(); 12 | 13 | /// Font family: CommonIcons 14 | static const String commonIcons = 'CommonIcons'; 15 | 16 | /// Font family: HabitCalIcons 17 | static const String habitCalIcons = 'HabitCalIcons'; 18 | 19 | /// Font family: HabitProgressIcons 20 | static const String habitProgressIcons = 'HabitProgressIcons'; 21 | 22 | /// Font family: HabitSortIcons 23 | static const String habitSortIcons = 'HabitSortIcons'; 24 | } 25 | -------------------------------------------------------------------------------- /lib/common/async.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | abstract interface class AsyncInitialization { 16 | Future init(); 17 | } 18 | -------------------------------------------------------------------------------- /lib/common/re.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import 'package:flutter/services.dart'; 16 | 17 | class TextFormatterCustom { 18 | static final decimalr2 = 19 | FilteringTextInputFormatter.allow(RegExp(r'^\d+\.?\d{0,2}')); 20 | } 21 | -------------------------------------------------------------------------------- /lib/component/animation.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './animations/animate.dart'; 16 | -------------------------------------------------------------------------------- /lib/component/provider.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './widgets/date_change.dart' show DateChangeNotifier; 16 | -------------------------------------------------------------------------------- /lib/extension/context_extensions.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import 'package:flutter/material.dart'; 16 | import 'package:provider/provider.dart'; 17 | 18 | extension ProviderReadExtension on BuildContext { 19 | T? maybeRead() => Provider.of(this, listen: false); 20 | } 21 | -------------------------------------------------------------------------------- /lib/extension/string_extensions.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | extension UUIDStringExtensions on String { 16 | int toUUIDInt() => int.parse(replaceAll('-', ''), radix: 16); 17 | } 18 | -------------------------------------------------------------------------------- /lib/extension/textscale_extensions.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import 'package:flutter/material.dart'; 16 | 17 | extension TextScaleExtension on TextScaler { 18 | Size scaleForSize(T size) => 19 | Size(scale(size.width), scale(size.height)); 20 | } 21 | -------------------------------------------------------------------------------- /lib/logging/helper.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import 'logger_manager.dart'; 16 | 17 | final appLog = AppLoggerMananger(); 18 | -------------------------------------------------------------------------------- /lib/logging/logger_message.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import 'logger_type.dart'; 16 | 17 | abstract interface class AppLoggerMessage { 18 | LoggerType get type; 19 | bool get forceLogging; 20 | 21 | Iterable toLogPrinterMessage(); 22 | } 23 | -------------------------------------------------------------------------------- /lib/model/contributor.g.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | part of 'contributor.dart'; 4 | 5 | // ************************************************************************** 6 | // JsonSerializableGenerator 7 | // ************************************************************************** 8 | 9 | ContributorInfo _$ContributorInfoFromJson(Map json) => 10 | ContributorInfo( 11 | id: (json['id'] as num?)?.toInt(), 12 | name: json['name'] as String, 13 | url: json['url'] as String?, 14 | ); 15 | -------------------------------------------------------------------------------- /lib/model/habit_score.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './_score/calculator.dart' 16 | show ArchivedHabitScoreCalculator, HabitScoreCalculator; 17 | export './_score/data.dart' show HabitScoreChangedProtoData; 18 | export '_score/score.dart'; 19 | -------------------------------------------------------------------------------- /lib/persistent/local/db_cell.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | abstract mixin class DBCell { 16 | factory DBCell.fromJson(Map json) => 17 | throw UnimplementedError; 18 | Map toJson(); 19 | 20 | @override 21 | String toString() { 22 | return "$runtimeType(${toJson()})"; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /lib/persistent/local/table.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | class TableName { 16 | static const records = 'mh_records'; 17 | static const habits = 'mh_habits'; 18 | static const sync = 'mh_sync'; 19 | } 20 | -------------------------------------------------------------------------------- /lib/provider/utils.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export '_utils/habit_chart_utils.dart'; 16 | export '_utils/habit_record_utils.dart'; 17 | -------------------------------------------------------------------------------- /lib/theme/_colors/crypto_colors.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | import 'package:flutter/material.dart'; 16 | 17 | const Color colorBTC = Color(0xFFF7931A); 18 | const Color colorETH = Color(0xFF627EEA); 19 | const Color colorBNB = Color(0xFFFFA500); 20 | const Color colorAVAX = Color(0xFF0000FF); 21 | const Color colorFTM = Color(0xFF00FF00); 22 | -------------------------------------------------------------------------------- /lib/theme/_icons/cal_icons.g.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | import 'package:flutter/widgets.dart'; 4 | 5 | @immutable 6 | class _HabitCalIconsData extends IconData { 7 | const _HabitCalIconsData(int codePoint) 8 | : super( 9 | codePoint, 10 | fontFamily: 'HabitCalIcons', 11 | ); 12 | } 13 | 14 | @immutable 15 | class HabitCalIcons { 16 | const HabitCalIcons._(); 17 | 18 | static const IconData calendar_create = _HabitCalIconsData(0xf101); 19 | static const IconData calendar_modify = _HabitCalIconsData(0xf102); 20 | } 21 | -------------------------------------------------------------------------------- /lib/theme/_icons/common_icons.g.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | import 'package:flutter/widgets.dart'; 4 | 5 | @immutable 6 | class _CommonIconsData extends IconData { 7 | const _CommonIconsData(int codePoint) 8 | : super( 9 | codePoint, 10 | fontFamily: 'CommonIcons', 11 | ); 12 | } 13 | 14 | @immutable 15 | class CommonIcons { 16 | const CommonIcons._(); 17 | 18 | static const IconData beta = _CommonIconsData(0xf101); 19 | static const IconData la_donate = _CommonIconsData(0xf102); 20 | } 21 | -------------------------------------------------------------------------------- /lib/theme/icon.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export '_icons/cal_icons.g.dart'; 16 | export '_icons/common_icons.g.dart'; 17 | export '_icons/progress_icons.g.dart'; 18 | export '_icons/sort_icons.g.dart'; 19 | -------------------------------------------------------------------------------- /lib/view/common/_mixin.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './xshare.dart' show XShare; 16 | -------------------------------------------------------------------------------- /lib/view/for_app/_widget.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './app_providers.dart'; 16 | -------------------------------------------------------------------------------- /lib/view/for_app_debugger/_widget.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2024 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './change_logs_switcher_tile.dart' show ChangeLogsSwitcherTile; 16 | -------------------------------------------------------------------------------- /lib/view/for_app_sync/_dialog.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2025 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './app_sync_fetch_interval.dart' 16 | show AppSyncFetchIntervalSwitchDialog, showAppSyncFetchIntervalSwitchDialog; 17 | -------------------------------------------------------------------------------- /lib/view/for_app_sync/_widget.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2025 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // https://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './app_sync_fail_logs_tile.dart'; 16 | export './app_sync_fetch_interval.dart' show AppSyncFetchIntervalTile; 17 | export './app_sync_summary_tile.dart'; 18 | -------------------------------------------------------------------------------- /lib/view/for_habit_detail/_dialog.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export './habit_edit_repl_rcd_cal.dart' 16 | show 17 | HabitEditReplacementRecordCalendarDialog, 18 | showHabitEditReplacementRecordCalendarDialog; 19 | -------------------------------------------------------------------------------- /lib/view/for_habits_display/_dialog.dart: -------------------------------------------------------------------------------- 1 | // Copyright 2023 Fries_I23 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | export 'habit_display_main_menu.dart'; 16 | export 'habit_display_sort_type_picker.dart'; 17 | export 'habit_display_stats_menu.dart'; 18 | -------------------------------------------------------------------------------- /linux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral 2 | -------------------------------------------------------------------------------- /linux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 8 | #define GENERATED_PLUGIN_REGISTRANT_ 9 | 10 | #include 11 | 12 | // Registers Flutter plugins. 13 | void fl_register_plugins(FlPluginRegistry* registry); 14 | 15 | #endif // GENERATED_PLUGIN_REGISTRANT_ 16 | -------------------------------------------------------------------------------- /linux/main.cc: -------------------------------------------------------------------------------- 1 | #include "my_application.h" 2 | 3 | int main(int argc, char** argv) { 4 | g_autoptr(MyApplication) app = my_application_new(); 5 | return g_application_run(G_APPLICATION(app), argc, argv); 6 | } 7 | -------------------------------------------------------------------------------- /linux/my_application.h: -------------------------------------------------------------------------------- 1 | #ifndef FLUTTER_MY_APPLICATION_H_ 2 | #define FLUTTER_MY_APPLICATION_H_ 3 | 4 | #include 5 | 6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, 7 | GtkApplication) 8 | 9 | /** 10 | * my_application_new: 11 | * 12 | * Creates a new Flutter-based application. 13 | * 14 | * Returns: a new #MyApplication. 15 | */ 16 | MyApplication* my_application_new(); 17 | 18 | #endif // FLUTTER_MY_APPLICATION_H_ 19 | -------------------------------------------------------------------------------- /macos/.gitignore: -------------------------------------------------------------------------------- 1 | # Flutter-related 2 | **/Flutter/ephemeral/ 3 | **/Pods/ 4 | 5 | # Xcode-related 6 | **/dgph 7 | **/xcuserdata/ 8 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Flutter/Flutter-Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "ephemeral/Flutter-Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Localizations/en.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit (Dev)"; 2 | CFBundleName = "Table Habit (Dev)"; 3 | -------------------------------------------------------------------------------- /macos/Localizations/en.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "Table Habit"; 2 | CFBundleName = "Table Habit"; 3 | -------------------------------------------------------------------------------- /macos/Localizations/zh-Hans.lproj/dev-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "桌上习惯 开发版"; 2 | CFBundleName = "桌上习惯 开发版"; 3 | -------------------------------------------------------------------------------- /macos/Localizations/zh-Hans.lproj/generic-InfoPlist.strings: -------------------------------------------------------------------------------- 1 | CFBundleDisplayName = "桌上习惯"; 2 | CFBundleName = "桌上习惯"; 3 | -------------------------------------------------------------------------------- /macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /macos/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | @main 5 | class AppDelegate: FlutterAppDelegate { 6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 7 | return true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png -------------------------------------------------------------------------------- /macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FriesI23/mhabit/25d93f91425a09350142967a61f1d2d213c14139/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png -------------------------------------------------------------------------------- /macos/Runner/Configs/AppInfo.xcconfig: -------------------------------------------------------------------------------- 1 | // Application-level settings for the Runner target. 2 | // 3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the 4 | // future. If not, the values below would default to using the project name when this becomes a 5 | // 'flutter create' template. 6 | 7 | // The application's name. By default this is also the title of the Flutter window. 8 | PRODUCT_NAME = mhabit 9 | 10 | // The application's bundle identifier 11 | PRODUCT_BUNDLE_IDENTIFIER = io.github.friesi23.mhabit 12 | 13 | // The copyright displayed in application information 14 | PRODUCT_COPYRIGHT = Copyright © 2024 io.github.friesi23. All rights reserved. 15 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Debug.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "../../Flutter/Flutter-Release.xcconfig" 2 | #include "Warnings.xcconfig" 3 | -------------------------------------------------------------------------------- /macos/Runner/Configs/Warnings.xcconfig: -------------------------------------------------------------------------------- 1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings 2 | GCC_WARN_UNDECLARED_SELECTOR = YES 3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES 4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE 5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES 6 | CLANG_WARN_PRAGMA_PACK = YES 7 | CLANG_WARN_STRICT_PROTOTYPES = YES 8 | CLANG_WARN_COMMA = YES 9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES 10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES 11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES 12 | GCC_WARN_SHADOW = YES 13 | CLANG_WARN_UNREACHABLE_CODE = YES 14 | -------------------------------------------------------------------------------- /macos/Runner/DebugProfile.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.cs.allow-jit 8 | 9 | com.apple.security.network.server 10 | 11 | com.apple.security.network.client 12 | 13 | com.apple.security.files.user-selected.read-write 14 | 15 | keychain-access-groups 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /macos/Runner/MainFlutterWindow.swift: -------------------------------------------------------------------------------- 1 | import Cocoa 2 | import FlutterMacOS 3 | 4 | class MainFlutterWindow: NSWindow { 5 | override func awakeFromNib() { 6 | let flutterViewController = FlutterViewController() 7 | let windowFrame = self.frame 8 | self.contentViewController = flutterViewController 9 | self.setFrame(windowFrame, display: true) 10 | 11 | RegisterGeneratedPlugins(registry: flutterViewController) 12 | 13 | super.awakeFromNib() 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /macos/Runner/Release.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-write 8 | 9 | com.apple.security.network.client 10 | 11 | keychain-access-groups 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /macos/RunnerTests/RunnerTests.swift: -------------------------------------------------------------------------------- 1 | import FlutterMacOS 2 | import Cocoa 3 | import XCTest 4 | 5 | class RunnerTests: XCTestCase { 6 | 7 | func testExample() { 8 | // If you add code to the Runner application, consider adding tests here. 9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest. 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /package_rename_config.yaml: -------------------------------------------------------------------------------- 1 | ./configs/package_rename_config/package_rename_config_v2.yaml -------------------------------------------------------------------------------- /scripts/build_msix.cmd: -------------------------------------------------------------------------------- 1 | @rem Copyright 2024 Fries_I23 2 | @rem 3 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 4 | @rem you may not use this file except in compliance with the License. 5 | @rem You may obtain a copy of the License at 6 | @rem 7 | @rem https://www.apache.org/licenses/LICENSE-2.0 8 | @rem 9 | @rem Unless required by applicable law or agreed to in writing, software 10 | @rem distributed under the License is distributed on an "AS IS" BASIS, 11 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | @rem See the License for the specific language governing permissions and 13 | @rem limitations under the License. 14 | @echo off 15 | 16 | set VERSION="unknown" 17 | for /f "tokens=2 delims=:" %%a in ('findstr /R "^version:" pubspec.yaml') do set VERSION=%%a 18 | set VERSION=%VERSION: =% 19 | 20 | echo "Building %VERSION%" 21 | dart run msix:create --architecture x64 --output-name mhabit_%VERSION%_x64 22 | -------------------------------------------------------------------------------- /scripts/build_runner.cmd: -------------------------------------------------------------------------------- 1 | @rem Copyright 2023 Fries_I23 2 | @rem 3 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 4 | @rem you may not use this file except in compliance with the License. 5 | @rem You may obtain a copy of the License at 6 | @rem 7 | @rem http://www.apache.org/licenses/LICENSE-2.0 8 | @rem 9 | @rem Unless required by applicable law or agreed to in writing, software 10 | @rem distributed under the License is distributed on an "AS IS" BASIS, 11 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | @rem See the License for the specific language governing permissions and 13 | @rem limitations under the License. 14 | 15 | ( 16 | flutter pub run build_runner build --delete-conflicting-outputs 17 | ) & ( 18 | flutter gen-l10n 19 | ) -------------------------------------------------------------------------------- /scripts/build_runner.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright 2023 Fries_I23 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | flutter pub run build_runner build --delete-conflicting-outputs 18 | flutter gen-l10n -------------------------------------------------------------------------------- /scripts/gen_covhtml.cmd: -------------------------------------------------------------------------------- 1 | @rem Copyright 2023 Fries_I23 2 | @rem 3 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 4 | @rem you may not use this file except in compliance with the License. 5 | @rem You may obtain a copy of the License at 6 | @rem 7 | @rem http://www.apache.org/licenses/LICENSE-2.0 8 | @rem 9 | @rem Unless required by applicable law or agreed to in writing, software 10 | @rem distributed under the License is distributed on an "AS IS" BASIS, 11 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | @rem See the License for the specific language governing permissions and 13 | @rem limitations under the License. 14 | 15 | set PERL=C:\Strawberry\perl\bin\perl.exe 16 | set GENTHML=C:\ProgramData\chocolatey\lib\lcov\tools\bin\genhtml 17 | 18 | ( 19 | flutter test --coverage 20 | ) & ( 21 | %PERL% %GENTHML% -o coverage\html coverage\lcov.info 22 | start coverage\html\index.html 23 | ) 24 | -------------------------------------------------------------------------------- /scripts/gen_covhtml.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Copyright 2023 Fries_I23 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); 6 | # you may not use this file except in compliance with the License. 7 | # You may obtain a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, 13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | # See the License for the specific language governing permissions and 15 | # limitations under the License. 16 | 17 | export PERL=/usr/bin/perl 18 | export GENTHML=/usr/local/bin/genhtml 19 | 20 | flutter test --coverage 21 | 22 | $PERL $GENTHML -o coverage/html coverage/lcov.info && \ 23 | open coverage/html/index.html 24 | -------------------------------------------------------------------------------- /scripts/gen_translate_graph.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright 2023 Fries_I23 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | SCRIPT_PATH=$(dirname $0) 16 | echo "Generating localized translation statistics" 17 | $SCRIPT_PATH/gen_translate_graph.py -p $SCRIPT_PATH/../assets/l10n/ --img-outpath $SCRIPT_PATH/../docs/README/images/l10n-stat.svg -------------------------------------------------------------------------------- /scripts/git_set_commit_template.cmd: -------------------------------------------------------------------------------- 1 | @rem Copyright 2023 Fries_I23 2 | @rem 3 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 4 | @rem you may not use this file except in compliance with the License. 5 | @rem You may obtain a copy of the License at 6 | @rem 7 | @rem http://www.apache.org/licenses/LICENSE-2.0 8 | @rem 9 | @rem Unless required by applicable law or agreed to in writing, software 10 | @rem distributed under the License is distributed on an "AS IS" BASIS, 11 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | @rem See the License for the specific language governing permissions and 13 | @rem limitations under the License. 14 | 15 | git config commit.template templates/git/commit.template -------------------------------------------------------------------------------- /scripts/git_set_commit_template.sh: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Fries_I23 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | git config commit.template templates/git/commit.template -------------------------------------------------------------------------------- /scripts/rename_app.sh: -------------------------------------------------------------------------------- 1 | # Copyright 2023 Fries_I23 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | flutter pub run package_rename:set 16 | -------------------------------------------------------------------------------- /templates/git/commit-bumpversion.template: -------------------------------------------------------------------------------- 1 | # Type(): 2 | # chore: Bump version to 3 | 4 | # 5 | 6 | #