From 6ae44a894609d25b04c88fce838128cebb8aef36 Mon Sep 17 00:00:00 2001
From: lucaslushuo <282139159+lucaslus@users.noreply.github.com>
Date: Thu, 3 Sep 2026 11:27:15 +0800
Subject: [PATCH 01/27] chore: move legacy Flutter codebase to legacy/flutter
---
.metadata => legacy/flutter/.metadata | 0
.../flutter/analysis_options.yaml | 0
.../benchmark}/todo_data_benchmark_test.dart | 0
.../flutter/integration_test}/floatick_ui_test.dart | 0
.../todo_scroll_performance_test.dart | 0
l10n.yaml => legacy/flutter/l10n.yaml | 0
{lib => legacy/flutter/lib}/app/floatick_app.dart | 0
.../flutter/lib}/app/theme/floatick_theme.dart | 0
.../flutter/lib}/core/platform/window_bridge.dart | 0
.../flutter/lib}/core/storage/storage_failure.dart | 0
.../flutter/lib}/core/ui/floatick_brand_mark.dart | 0
.../lib}/core/ui/floatick_editor_components.dart | 0
.../flutter/lib}/core/ui/floatick_hover_motion.dart | 0
.../flutter/lib}/core/ui/floatick_markdown.dart | 0
.../lib}/core/ui/floatick_modal_bottom_sheet.dart | 0
.../lib}/core/ui/floatick_surface_metrics.dart | 0
.../lib}/features/notes/data/note_repository.dart | 0
.../lib}/features/notes/domain/note_item.dart | 0
.../notes/presentation/note_editor_drawer.dart | 0
.../notes/presentation/note_panel_content.dart | 0
.../notes/presentation/note_view_model.dart | 0
.../settings/data/login_item_repository.dart | 0
.../features/settings/data/settings_repository.dart | 0
.../lib}/features/settings/domain/app_settings.dart | 0
.../features/settings/domain/login_item_status.dart | 0
.../settings/presentation/settings_drawer.dart | 0
.../settings/presentation/settings_view_model.dart | 0
.../presentation/widgets/compact_settings_item.dart | 0
.../widgets/compact_settings_toggle.dart | 0
.../widgets/update_settings_section.dart | 0
.../todos/data/first_run_workspace_seeder.dart | 0
.../lib}/features/todos/data/tag_repository.dart | 0
.../lib}/features/todos/data/todo_repository.dart | 0
.../lib}/features/todos/domain/tag_workspace.dart | 0
.../lib}/features/todos/domain/todo_item.dart | 0
.../todos/domain/todo_markdown_formatter.dart | 0
.../lib}/features/todos/domain/todo_tag.dart | 0
.../presentation/deadline_reminder_scheduler.dart | 0
.../todos/presentation/tag_filter_drawer.dart | 0
.../todos/presentation/tag_management_drawer.dart | 0
.../presentation/todo_clipboard_controller.dart | 0
.../todos/presentation/todo_deadline_picker.dart | 0
.../todos/presentation/todo_editor_drawer.dart | 0
.../features/todos/presentation/todo_panel.dart | 0
.../todos/presentation/todo_view_model.dart | 0
.../presentation/widgets/editor_tag_selector.dart | 0
.../presentation/widgets/floatick_tag_chip.dart | 0
.../presentation/widgets/floating_todo_icon.dart | 0
.../todos/presentation/widgets/tag_menus.dart | 0
.../todos/presentation/widgets/tag_palette.dart | 0
.../presentation/widgets/tag_selection_row.dart | 0
.../widgets/todo_actions_bottom_sheet.dart | 0
.../presentation/widgets/todo_copy_button.dart | 0
.../todos/presentation/widgets/todo_list_row.dart | 0
.../features/updates/data/update_repository.dart | 0
.../updates/domain/update_settings_snapshot.dart | 0
.../updates/presentation/update_view_model.dart | 0
{lib => legacy/flutter/lib}/l10n/app_en.arb | 0
.../flutter/lib}/l10n/app_localizations.dart | 0
.../flutter/lib}/l10n/app_localizations_en.dart | 0
.../flutter/lib}/l10n/app_localizations_zh.dart | 0
{lib => legacy/flutter/lib}/l10n/app_zh.arb | 0
{lib => legacy/flutter/lib}/l10n/l10n.dart | 0
.../lib}/l10n/storage_failure_localizations.dart | 0
{lib => legacy/flutter/lib}/main.dart | 0
{macos => legacy/flutter/macos}/.gitignore | 0
.../flutter/macos}/Flutter/Flutter-Debug.xcconfig | 0
.../flutter/macos}/Flutter/Flutter-Release.xcconfig | 0
.../macos}/Flutter/GeneratedPluginRegistrant.swift | 0
.../flutter/macos}/Runner.xcodeproj/project.pbxproj | 0
.../xcshareddata/IDEWorkspaceChecks.plist | 0
.../xcshareddata/swiftpm/Package.resolved | 0
.../xcshareddata/xcschemes/Runner.xcscheme | 0
.../Runner.xcworkspace/contents.xcworkspacedata | 0
.../xcshareddata/IDEWorkspaceChecks.plist | 0
.../flutter/macos}/Runner/AppDelegate.swift | 0
.../AppIcon.appiconset/Contents.json | 0
.../AppIcon.appiconset/app_icon_1024.png | Bin
.../AppIcon.appiconset/app_icon_128.png | Bin
.../AppIcon.appiconset/app_icon_16.png | Bin
.../AppIcon.appiconset/app_icon_256.png | Bin
.../AppIcon.appiconset/app_icon_32.png | Bin
.../AppIcon.appiconset/app_icon_512.png | Bin
.../AppIcon.appiconset/app_icon_64.png | Bin
.../flutter/macos}/Runner/Base.lproj/MainMenu.xib | 0
.../flutter/macos}/Runner/Configs/AppInfo.xcconfig | 0
.../flutter/macos}/Runner/Configs/Debug.xcconfig | 0
.../flutter/macos}/Runner/Configs/Release.xcconfig | 0
.../flutter/macos}/Runner/Configs/Warnings.xcconfig | 0
.../flutter/macos}/Runner/DebugProfile.entitlements | 0
{macos => legacy/flutter/macos}/Runner/Info.plist | 0
.../flutter/macos}/Runner/LoginItemService.swift | 0
.../flutter/macos}/Runner/MainFlutterWindow.swift | 0
.../flutter/macos}/Runner/Release.entitlements | 0
.../flutter/macos}/Runner/UpdateService.swift | 0
.../flutter/macos}/RunnerTests/RunnerTests.swift | 0
pubspec.lock => legacy/flutter/pubspec.lock | 0
pubspec.yaml => legacy/flutter/pubspec.yaml | 0
.../flutter/test}/app/floatick_app_test.dart | 0
.../test}/app/theme/floatick_theme_test.dart | 0
.../test}/core/platform/window_bridge_test.dart | 0
.../core/ui/floatick_editor_components_test.dart | 0
.../test}/core/ui/floatick_hover_motion_test.dart | 0
.../test}/core/ui/floatick_markdown_test.dart | 0
.../features/notes/data/note_repository_test.dart | 0
.../notes/presentation/note_editor_drawer_test.dart | 0
.../notes/presentation/note_panel_content_test.dart | 0
.../notes/presentation/note_view_model_test.dart | 0
.../settings/data/login_item_repository_test.dart | 0
.../settings/data/settings_repository_test.dart | 0
.../presentation/settings_view_model_test.dart | 0
.../todos/data/first_run_workspace_seeder_test.dart | 0
.../features/todos/data/tag_repository_test.dart | 0
.../features/todos/data/todo_repository_test.dart | 0
.../todos/domain/todo_markdown_formatter_test.dart | 0
.../deadline_reminder_scheduler_test.dart | 0
.../todos/presentation/todo_editor_drawer_test.dart | 0
.../todos/presentation/todo_list_row_test.dart | 0
.../todos/presentation/todo_view_model_test.dart | 0
.../updates/data/update_repository_test.dart | 0
.../domain/update_settings_snapshot_test.dart | 0
.../presentation/update_view_model_test.dart | 0
{tool => legacy/flutter/tool}/floatick_app_icon.svg | 0
.../flutter/tool}/generate_macos_icon.swift | 0
.../flutter/tool}/release/ExportOptions.plist | 0
{tool => legacy/flutter/tool}/release/create_dmg.sh | 0
.../flutter/tool}/release/prepare_unsigned_app.sh | 0
.../flutter/tool}/release/smoke_test_app.sh | 0
.../tool}/release/unsigned_release.entitlements | 0
.../flutter/tool}/release/verify_update_feed.sh | 0
{tool => legacy/flutter/tool}/test/run_ui_tests.sh | 0
131 files changed, 0 insertions(+), 0 deletions(-)
rename .metadata => legacy/flutter/.metadata (100%)
rename analysis_options.yaml => legacy/flutter/analysis_options.yaml (100%)
rename {benchmark => legacy/flutter/benchmark}/todo_data_benchmark_test.dart (100%)
rename {integration_test => legacy/flutter/integration_test}/floatick_ui_test.dart (100%)
rename {integration_test => legacy/flutter/integration_test}/todo_scroll_performance_test.dart (100%)
rename l10n.yaml => legacy/flutter/l10n.yaml (100%)
rename {lib => legacy/flutter/lib}/app/floatick_app.dart (100%)
rename {lib => legacy/flutter/lib}/app/theme/floatick_theme.dart (100%)
rename {lib => legacy/flutter/lib}/core/platform/window_bridge.dart (100%)
rename {lib => legacy/flutter/lib}/core/storage/storage_failure.dart (100%)
rename {lib => legacy/flutter/lib}/core/ui/floatick_brand_mark.dart (100%)
rename {lib => legacy/flutter/lib}/core/ui/floatick_editor_components.dart (100%)
rename {lib => legacy/flutter/lib}/core/ui/floatick_hover_motion.dart (100%)
rename {lib => legacy/flutter/lib}/core/ui/floatick_markdown.dart (100%)
rename {lib => legacy/flutter/lib}/core/ui/floatick_modal_bottom_sheet.dart (100%)
rename {lib => legacy/flutter/lib}/core/ui/floatick_surface_metrics.dart (100%)
rename {lib => legacy/flutter/lib}/features/notes/data/note_repository.dart (100%)
rename {lib => legacy/flutter/lib}/features/notes/domain/note_item.dart (100%)
rename {lib => legacy/flutter/lib}/features/notes/presentation/note_editor_drawer.dart (100%)
rename {lib => legacy/flutter/lib}/features/notes/presentation/note_panel_content.dart (100%)
rename {lib => legacy/flutter/lib}/features/notes/presentation/note_view_model.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/data/login_item_repository.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/data/settings_repository.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/domain/app_settings.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/domain/login_item_status.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/presentation/settings_drawer.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/presentation/settings_view_model.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/presentation/widgets/compact_settings_item.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/presentation/widgets/compact_settings_toggle.dart (100%)
rename {lib => legacy/flutter/lib}/features/settings/presentation/widgets/update_settings_section.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/data/first_run_workspace_seeder.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/data/tag_repository.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/data/todo_repository.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/domain/tag_workspace.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/domain/todo_item.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/domain/todo_markdown_formatter.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/domain/todo_tag.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/deadline_reminder_scheduler.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/tag_filter_drawer.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/tag_management_drawer.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/todo_clipboard_controller.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/todo_deadline_picker.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/todo_editor_drawer.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/todo_panel.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/todo_view_model.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/editor_tag_selector.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/floatick_tag_chip.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/floating_todo_icon.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/tag_menus.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/tag_palette.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/tag_selection_row.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/todo_actions_bottom_sheet.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/todo_copy_button.dart (100%)
rename {lib => legacy/flutter/lib}/features/todos/presentation/widgets/todo_list_row.dart (100%)
rename {lib => legacy/flutter/lib}/features/updates/data/update_repository.dart (100%)
rename {lib => legacy/flutter/lib}/features/updates/domain/update_settings_snapshot.dart (100%)
rename {lib => legacy/flutter/lib}/features/updates/presentation/update_view_model.dart (100%)
rename {lib => legacy/flutter/lib}/l10n/app_en.arb (100%)
rename {lib => legacy/flutter/lib}/l10n/app_localizations.dart (100%)
rename {lib => legacy/flutter/lib}/l10n/app_localizations_en.dart (100%)
rename {lib => legacy/flutter/lib}/l10n/app_localizations_zh.dart (100%)
rename {lib => legacy/flutter/lib}/l10n/app_zh.arb (100%)
rename {lib => legacy/flutter/lib}/l10n/l10n.dart (100%)
rename {lib => legacy/flutter/lib}/l10n/storage_failure_localizations.dart (100%)
rename {lib => legacy/flutter/lib}/main.dart (100%)
rename {macos => legacy/flutter/macos}/.gitignore (100%)
rename {macos => legacy/flutter/macos}/Flutter/Flutter-Debug.xcconfig (100%)
rename {macos => legacy/flutter/macos}/Flutter/Flutter-Release.xcconfig (100%)
rename {macos => legacy/flutter/macos}/Flutter/GeneratedPluginRegistrant.swift (100%)
rename {macos => legacy/flutter/macos}/Runner.xcodeproj/project.pbxproj (100%)
rename {macos => legacy/flutter/macos}/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%)
rename {macos => legacy/flutter/macos}/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved (100%)
rename {macos => legacy/flutter/macos}/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%)
rename {macos => legacy/flutter/macos}/Runner.xcworkspace/contents.xcworkspacedata (100%)
rename {macos => legacy/flutter/macos}/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%)
rename {macos => legacy/flutter/macos}/Runner/AppDelegate.swift (100%)
rename {macos => legacy/flutter/macos}/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%)
rename {macos => legacy/flutter/macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png (100%)
rename {macos => legacy/flutter/macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png (100%)
rename {macos => legacy/flutter/macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png (100%)
rename {macos => legacy/flutter/macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png (100%)
rename {macos => legacy/flutter/macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png (100%)
rename {macos => legacy/flutter/macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png (100%)
rename {macos => legacy/flutter/macos}/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png (100%)
rename {macos => legacy/flutter/macos}/Runner/Base.lproj/MainMenu.xib (100%)
rename {macos => legacy/flutter/macos}/Runner/Configs/AppInfo.xcconfig (100%)
rename {macos => legacy/flutter/macos}/Runner/Configs/Debug.xcconfig (100%)
rename {macos => legacy/flutter/macos}/Runner/Configs/Release.xcconfig (100%)
rename {macos => legacy/flutter/macos}/Runner/Configs/Warnings.xcconfig (100%)
rename {macos => legacy/flutter/macos}/Runner/DebugProfile.entitlements (100%)
rename {macos => legacy/flutter/macos}/Runner/Info.plist (100%)
rename {macos => legacy/flutter/macos}/Runner/LoginItemService.swift (100%)
rename {macos => legacy/flutter/macos}/Runner/MainFlutterWindow.swift (100%)
rename {macos => legacy/flutter/macos}/Runner/Release.entitlements (100%)
rename {macos => legacy/flutter/macos}/Runner/UpdateService.swift (100%)
rename {macos => legacy/flutter/macos}/RunnerTests/RunnerTests.swift (100%)
rename pubspec.lock => legacy/flutter/pubspec.lock (100%)
rename pubspec.yaml => legacy/flutter/pubspec.yaml (100%)
rename {test => legacy/flutter/test}/app/floatick_app_test.dart (100%)
rename {test => legacy/flutter/test}/app/theme/floatick_theme_test.dart (100%)
rename {test => legacy/flutter/test}/core/platform/window_bridge_test.dart (100%)
rename {test => legacy/flutter/test}/core/ui/floatick_editor_components_test.dart (100%)
rename {test => legacy/flutter/test}/core/ui/floatick_hover_motion_test.dart (100%)
rename {test => legacy/flutter/test}/core/ui/floatick_markdown_test.dart (100%)
rename {test => legacy/flutter/test}/features/notes/data/note_repository_test.dart (100%)
rename {test => legacy/flutter/test}/features/notes/presentation/note_editor_drawer_test.dart (100%)
rename {test => legacy/flutter/test}/features/notes/presentation/note_panel_content_test.dart (100%)
rename {test => legacy/flutter/test}/features/notes/presentation/note_view_model_test.dart (100%)
rename {test => legacy/flutter/test}/features/settings/data/login_item_repository_test.dart (100%)
rename {test => legacy/flutter/test}/features/settings/data/settings_repository_test.dart (100%)
rename {test => legacy/flutter/test}/features/settings/presentation/settings_view_model_test.dart (100%)
rename {test => legacy/flutter/test}/features/todos/data/first_run_workspace_seeder_test.dart (100%)
rename {test => legacy/flutter/test}/features/todos/data/tag_repository_test.dart (100%)
rename {test => legacy/flutter/test}/features/todos/data/todo_repository_test.dart (100%)
rename {test => legacy/flutter/test}/features/todos/domain/todo_markdown_formatter_test.dart (100%)
rename {test => legacy/flutter/test}/features/todos/presentation/deadline_reminder_scheduler_test.dart (100%)
rename {test => legacy/flutter/test}/features/todos/presentation/todo_editor_drawer_test.dart (100%)
rename {test => legacy/flutter/test}/features/todos/presentation/todo_list_row_test.dart (100%)
rename {test => legacy/flutter/test}/features/todos/presentation/todo_view_model_test.dart (100%)
rename {test => legacy/flutter/test}/features/updates/data/update_repository_test.dart (100%)
rename {test => legacy/flutter/test}/features/updates/domain/update_settings_snapshot_test.dart (100%)
rename {test => legacy/flutter/test}/features/updates/presentation/update_view_model_test.dart (100%)
rename {tool => legacy/flutter/tool}/floatick_app_icon.svg (100%)
rename {tool => legacy/flutter/tool}/generate_macos_icon.swift (100%)
rename {tool => legacy/flutter/tool}/release/ExportOptions.plist (100%)
rename {tool => legacy/flutter/tool}/release/create_dmg.sh (100%)
rename {tool => legacy/flutter/tool}/release/prepare_unsigned_app.sh (100%)
rename {tool => legacy/flutter/tool}/release/smoke_test_app.sh (100%)
rename {tool => legacy/flutter/tool}/release/unsigned_release.entitlements (100%)
rename {tool => legacy/flutter/tool}/release/verify_update_feed.sh (100%)
rename {tool => legacy/flutter/tool}/test/run_ui_tests.sh (100%)
diff --git a/.metadata b/legacy/flutter/.metadata
similarity index 100%
rename from .metadata
rename to legacy/flutter/.metadata
diff --git a/analysis_options.yaml b/legacy/flutter/analysis_options.yaml
similarity index 100%
rename from analysis_options.yaml
rename to legacy/flutter/analysis_options.yaml
diff --git a/benchmark/todo_data_benchmark_test.dart b/legacy/flutter/benchmark/todo_data_benchmark_test.dart
similarity index 100%
rename from benchmark/todo_data_benchmark_test.dart
rename to legacy/flutter/benchmark/todo_data_benchmark_test.dart
diff --git a/integration_test/floatick_ui_test.dart b/legacy/flutter/integration_test/floatick_ui_test.dart
similarity index 100%
rename from integration_test/floatick_ui_test.dart
rename to legacy/flutter/integration_test/floatick_ui_test.dart
diff --git a/integration_test/todo_scroll_performance_test.dart b/legacy/flutter/integration_test/todo_scroll_performance_test.dart
similarity index 100%
rename from integration_test/todo_scroll_performance_test.dart
rename to legacy/flutter/integration_test/todo_scroll_performance_test.dart
diff --git a/l10n.yaml b/legacy/flutter/l10n.yaml
similarity index 100%
rename from l10n.yaml
rename to legacy/flutter/l10n.yaml
diff --git a/lib/app/floatick_app.dart b/legacy/flutter/lib/app/floatick_app.dart
similarity index 100%
rename from lib/app/floatick_app.dart
rename to legacy/flutter/lib/app/floatick_app.dart
diff --git a/lib/app/theme/floatick_theme.dart b/legacy/flutter/lib/app/theme/floatick_theme.dart
similarity index 100%
rename from lib/app/theme/floatick_theme.dart
rename to legacy/flutter/lib/app/theme/floatick_theme.dart
diff --git a/lib/core/platform/window_bridge.dart b/legacy/flutter/lib/core/platform/window_bridge.dart
similarity index 100%
rename from lib/core/platform/window_bridge.dart
rename to legacy/flutter/lib/core/platform/window_bridge.dart
diff --git a/lib/core/storage/storage_failure.dart b/legacy/flutter/lib/core/storage/storage_failure.dart
similarity index 100%
rename from lib/core/storage/storage_failure.dart
rename to legacy/flutter/lib/core/storage/storage_failure.dart
diff --git a/lib/core/ui/floatick_brand_mark.dart b/legacy/flutter/lib/core/ui/floatick_brand_mark.dart
similarity index 100%
rename from lib/core/ui/floatick_brand_mark.dart
rename to legacy/flutter/lib/core/ui/floatick_brand_mark.dart
diff --git a/lib/core/ui/floatick_editor_components.dart b/legacy/flutter/lib/core/ui/floatick_editor_components.dart
similarity index 100%
rename from lib/core/ui/floatick_editor_components.dart
rename to legacy/flutter/lib/core/ui/floatick_editor_components.dart
diff --git a/lib/core/ui/floatick_hover_motion.dart b/legacy/flutter/lib/core/ui/floatick_hover_motion.dart
similarity index 100%
rename from lib/core/ui/floatick_hover_motion.dart
rename to legacy/flutter/lib/core/ui/floatick_hover_motion.dart
diff --git a/lib/core/ui/floatick_markdown.dart b/legacy/flutter/lib/core/ui/floatick_markdown.dart
similarity index 100%
rename from lib/core/ui/floatick_markdown.dart
rename to legacy/flutter/lib/core/ui/floatick_markdown.dart
diff --git a/lib/core/ui/floatick_modal_bottom_sheet.dart b/legacy/flutter/lib/core/ui/floatick_modal_bottom_sheet.dart
similarity index 100%
rename from lib/core/ui/floatick_modal_bottom_sheet.dart
rename to legacy/flutter/lib/core/ui/floatick_modal_bottom_sheet.dart
diff --git a/lib/core/ui/floatick_surface_metrics.dart b/legacy/flutter/lib/core/ui/floatick_surface_metrics.dart
similarity index 100%
rename from lib/core/ui/floatick_surface_metrics.dart
rename to legacy/flutter/lib/core/ui/floatick_surface_metrics.dart
diff --git a/lib/features/notes/data/note_repository.dart b/legacy/flutter/lib/features/notes/data/note_repository.dart
similarity index 100%
rename from lib/features/notes/data/note_repository.dart
rename to legacy/flutter/lib/features/notes/data/note_repository.dart
diff --git a/lib/features/notes/domain/note_item.dart b/legacy/flutter/lib/features/notes/domain/note_item.dart
similarity index 100%
rename from lib/features/notes/domain/note_item.dart
rename to legacy/flutter/lib/features/notes/domain/note_item.dart
diff --git a/lib/features/notes/presentation/note_editor_drawer.dart b/legacy/flutter/lib/features/notes/presentation/note_editor_drawer.dart
similarity index 100%
rename from lib/features/notes/presentation/note_editor_drawer.dart
rename to legacy/flutter/lib/features/notes/presentation/note_editor_drawer.dart
diff --git a/lib/features/notes/presentation/note_panel_content.dart b/legacy/flutter/lib/features/notes/presentation/note_panel_content.dart
similarity index 100%
rename from lib/features/notes/presentation/note_panel_content.dart
rename to legacy/flutter/lib/features/notes/presentation/note_panel_content.dart
diff --git a/lib/features/notes/presentation/note_view_model.dart b/legacy/flutter/lib/features/notes/presentation/note_view_model.dart
similarity index 100%
rename from lib/features/notes/presentation/note_view_model.dart
rename to legacy/flutter/lib/features/notes/presentation/note_view_model.dart
diff --git a/lib/features/settings/data/login_item_repository.dart b/legacy/flutter/lib/features/settings/data/login_item_repository.dart
similarity index 100%
rename from lib/features/settings/data/login_item_repository.dart
rename to legacy/flutter/lib/features/settings/data/login_item_repository.dart
diff --git a/lib/features/settings/data/settings_repository.dart b/legacy/flutter/lib/features/settings/data/settings_repository.dart
similarity index 100%
rename from lib/features/settings/data/settings_repository.dart
rename to legacy/flutter/lib/features/settings/data/settings_repository.dart
diff --git a/lib/features/settings/domain/app_settings.dart b/legacy/flutter/lib/features/settings/domain/app_settings.dart
similarity index 100%
rename from lib/features/settings/domain/app_settings.dart
rename to legacy/flutter/lib/features/settings/domain/app_settings.dart
diff --git a/lib/features/settings/domain/login_item_status.dart b/legacy/flutter/lib/features/settings/domain/login_item_status.dart
similarity index 100%
rename from lib/features/settings/domain/login_item_status.dart
rename to legacy/flutter/lib/features/settings/domain/login_item_status.dart
diff --git a/lib/features/settings/presentation/settings_drawer.dart b/legacy/flutter/lib/features/settings/presentation/settings_drawer.dart
similarity index 100%
rename from lib/features/settings/presentation/settings_drawer.dart
rename to legacy/flutter/lib/features/settings/presentation/settings_drawer.dart
diff --git a/lib/features/settings/presentation/settings_view_model.dart b/legacy/flutter/lib/features/settings/presentation/settings_view_model.dart
similarity index 100%
rename from lib/features/settings/presentation/settings_view_model.dart
rename to legacy/flutter/lib/features/settings/presentation/settings_view_model.dart
diff --git a/lib/features/settings/presentation/widgets/compact_settings_item.dart b/legacy/flutter/lib/features/settings/presentation/widgets/compact_settings_item.dart
similarity index 100%
rename from lib/features/settings/presentation/widgets/compact_settings_item.dart
rename to legacy/flutter/lib/features/settings/presentation/widgets/compact_settings_item.dart
diff --git a/lib/features/settings/presentation/widgets/compact_settings_toggle.dart b/legacy/flutter/lib/features/settings/presentation/widgets/compact_settings_toggle.dart
similarity index 100%
rename from lib/features/settings/presentation/widgets/compact_settings_toggle.dart
rename to legacy/flutter/lib/features/settings/presentation/widgets/compact_settings_toggle.dart
diff --git a/lib/features/settings/presentation/widgets/update_settings_section.dart b/legacy/flutter/lib/features/settings/presentation/widgets/update_settings_section.dart
similarity index 100%
rename from lib/features/settings/presentation/widgets/update_settings_section.dart
rename to legacy/flutter/lib/features/settings/presentation/widgets/update_settings_section.dart
diff --git a/lib/features/todos/data/first_run_workspace_seeder.dart b/legacy/flutter/lib/features/todos/data/first_run_workspace_seeder.dart
similarity index 100%
rename from lib/features/todos/data/first_run_workspace_seeder.dart
rename to legacy/flutter/lib/features/todos/data/first_run_workspace_seeder.dart
diff --git a/lib/features/todos/data/tag_repository.dart b/legacy/flutter/lib/features/todos/data/tag_repository.dart
similarity index 100%
rename from lib/features/todos/data/tag_repository.dart
rename to legacy/flutter/lib/features/todos/data/tag_repository.dart
diff --git a/lib/features/todos/data/todo_repository.dart b/legacy/flutter/lib/features/todos/data/todo_repository.dart
similarity index 100%
rename from lib/features/todos/data/todo_repository.dart
rename to legacy/flutter/lib/features/todos/data/todo_repository.dart
diff --git a/lib/features/todos/domain/tag_workspace.dart b/legacy/flutter/lib/features/todos/domain/tag_workspace.dart
similarity index 100%
rename from lib/features/todos/domain/tag_workspace.dart
rename to legacy/flutter/lib/features/todos/domain/tag_workspace.dart
diff --git a/lib/features/todos/domain/todo_item.dart b/legacy/flutter/lib/features/todos/domain/todo_item.dart
similarity index 100%
rename from lib/features/todos/domain/todo_item.dart
rename to legacy/flutter/lib/features/todos/domain/todo_item.dart
diff --git a/lib/features/todos/domain/todo_markdown_formatter.dart b/legacy/flutter/lib/features/todos/domain/todo_markdown_formatter.dart
similarity index 100%
rename from lib/features/todos/domain/todo_markdown_formatter.dart
rename to legacy/flutter/lib/features/todos/domain/todo_markdown_formatter.dart
diff --git a/lib/features/todos/domain/todo_tag.dart b/legacy/flutter/lib/features/todos/domain/todo_tag.dart
similarity index 100%
rename from lib/features/todos/domain/todo_tag.dart
rename to legacy/flutter/lib/features/todos/domain/todo_tag.dart
diff --git a/lib/features/todos/presentation/deadline_reminder_scheduler.dart b/legacy/flutter/lib/features/todos/presentation/deadline_reminder_scheduler.dart
similarity index 100%
rename from lib/features/todos/presentation/deadline_reminder_scheduler.dart
rename to legacy/flutter/lib/features/todos/presentation/deadline_reminder_scheduler.dart
diff --git a/lib/features/todos/presentation/tag_filter_drawer.dart b/legacy/flutter/lib/features/todos/presentation/tag_filter_drawer.dart
similarity index 100%
rename from lib/features/todos/presentation/tag_filter_drawer.dart
rename to legacy/flutter/lib/features/todos/presentation/tag_filter_drawer.dart
diff --git a/lib/features/todos/presentation/tag_management_drawer.dart b/legacy/flutter/lib/features/todos/presentation/tag_management_drawer.dart
similarity index 100%
rename from lib/features/todos/presentation/tag_management_drawer.dart
rename to legacy/flutter/lib/features/todos/presentation/tag_management_drawer.dart
diff --git a/lib/features/todos/presentation/todo_clipboard_controller.dart b/legacy/flutter/lib/features/todos/presentation/todo_clipboard_controller.dart
similarity index 100%
rename from lib/features/todos/presentation/todo_clipboard_controller.dart
rename to legacy/flutter/lib/features/todos/presentation/todo_clipboard_controller.dart
diff --git a/lib/features/todos/presentation/todo_deadline_picker.dart b/legacy/flutter/lib/features/todos/presentation/todo_deadline_picker.dart
similarity index 100%
rename from lib/features/todos/presentation/todo_deadline_picker.dart
rename to legacy/flutter/lib/features/todos/presentation/todo_deadline_picker.dart
diff --git a/lib/features/todos/presentation/todo_editor_drawer.dart b/legacy/flutter/lib/features/todos/presentation/todo_editor_drawer.dart
similarity index 100%
rename from lib/features/todos/presentation/todo_editor_drawer.dart
rename to legacy/flutter/lib/features/todos/presentation/todo_editor_drawer.dart
diff --git a/lib/features/todos/presentation/todo_panel.dart b/legacy/flutter/lib/features/todos/presentation/todo_panel.dart
similarity index 100%
rename from lib/features/todos/presentation/todo_panel.dart
rename to legacy/flutter/lib/features/todos/presentation/todo_panel.dart
diff --git a/lib/features/todos/presentation/todo_view_model.dart b/legacy/flutter/lib/features/todos/presentation/todo_view_model.dart
similarity index 100%
rename from lib/features/todos/presentation/todo_view_model.dart
rename to legacy/flutter/lib/features/todos/presentation/todo_view_model.dart
diff --git a/lib/features/todos/presentation/widgets/editor_tag_selector.dart b/legacy/flutter/lib/features/todos/presentation/widgets/editor_tag_selector.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/editor_tag_selector.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/editor_tag_selector.dart
diff --git a/lib/features/todos/presentation/widgets/floatick_tag_chip.dart b/legacy/flutter/lib/features/todos/presentation/widgets/floatick_tag_chip.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/floatick_tag_chip.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/floatick_tag_chip.dart
diff --git a/lib/features/todos/presentation/widgets/floating_todo_icon.dart b/legacy/flutter/lib/features/todos/presentation/widgets/floating_todo_icon.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/floating_todo_icon.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/floating_todo_icon.dart
diff --git a/lib/features/todos/presentation/widgets/tag_menus.dart b/legacy/flutter/lib/features/todos/presentation/widgets/tag_menus.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/tag_menus.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/tag_menus.dart
diff --git a/lib/features/todos/presentation/widgets/tag_palette.dart b/legacy/flutter/lib/features/todos/presentation/widgets/tag_palette.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/tag_palette.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/tag_palette.dart
diff --git a/lib/features/todos/presentation/widgets/tag_selection_row.dart b/legacy/flutter/lib/features/todos/presentation/widgets/tag_selection_row.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/tag_selection_row.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/tag_selection_row.dart
diff --git a/lib/features/todos/presentation/widgets/todo_actions_bottom_sheet.dart b/legacy/flutter/lib/features/todos/presentation/widgets/todo_actions_bottom_sheet.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/todo_actions_bottom_sheet.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/todo_actions_bottom_sheet.dart
diff --git a/lib/features/todos/presentation/widgets/todo_copy_button.dart b/legacy/flutter/lib/features/todos/presentation/widgets/todo_copy_button.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/todo_copy_button.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/todo_copy_button.dart
diff --git a/lib/features/todos/presentation/widgets/todo_list_row.dart b/legacy/flutter/lib/features/todos/presentation/widgets/todo_list_row.dart
similarity index 100%
rename from lib/features/todos/presentation/widgets/todo_list_row.dart
rename to legacy/flutter/lib/features/todos/presentation/widgets/todo_list_row.dart
diff --git a/lib/features/updates/data/update_repository.dart b/legacy/flutter/lib/features/updates/data/update_repository.dart
similarity index 100%
rename from lib/features/updates/data/update_repository.dart
rename to legacy/flutter/lib/features/updates/data/update_repository.dart
diff --git a/lib/features/updates/domain/update_settings_snapshot.dart b/legacy/flutter/lib/features/updates/domain/update_settings_snapshot.dart
similarity index 100%
rename from lib/features/updates/domain/update_settings_snapshot.dart
rename to legacy/flutter/lib/features/updates/domain/update_settings_snapshot.dart
diff --git a/lib/features/updates/presentation/update_view_model.dart b/legacy/flutter/lib/features/updates/presentation/update_view_model.dart
similarity index 100%
rename from lib/features/updates/presentation/update_view_model.dart
rename to legacy/flutter/lib/features/updates/presentation/update_view_model.dart
diff --git a/lib/l10n/app_en.arb b/legacy/flutter/lib/l10n/app_en.arb
similarity index 100%
rename from lib/l10n/app_en.arb
rename to legacy/flutter/lib/l10n/app_en.arb
diff --git a/lib/l10n/app_localizations.dart b/legacy/flutter/lib/l10n/app_localizations.dart
similarity index 100%
rename from lib/l10n/app_localizations.dart
rename to legacy/flutter/lib/l10n/app_localizations.dart
diff --git a/lib/l10n/app_localizations_en.dart b/legacy/flutter/lib/l10n/app_localizations_en.dart
similarity index 100%
rename from lib/l10n/app_localizations_en.dart
rename to legacy/flutter/lib/l10n/app_localizations_en.dart
diff --git a/lib/l10n/app_localizations_zh.dart b/legacy/flutter/lib/l10n/app_localizations_zh.dart
similarity index 100%
rename from lib/l10n/app_localizations_zh.dart
rename to legacy/flutter/lib/l10n/app_localizations_zh.dart
diff --git a/lib/l10n/app_zh.arb b/legacy/flutter/lib/l10n/app_zh.arb
similarity index 100%
rename from lib/l10n/app_zh.arb
rename to legacy/flutter/lib/l10n/app_zh.arb
diff --git a/lib/l10n/l10n.dart b/legacy/flutter/lib/l10n/l10n.dart
similarity index 100%
rename from lib/l10n/l10n.dart
rename to legacy/flutter/lib/l10n/l10n.dart
diff --git a/lib/l10n/storage_failure_localizations.dart b/legacy/flutter/lib/l10n/storage_failure_localizations.dart
similarity index 100%
rename from lib/l10n/storage_failure_localizations.dart
rename to legacy/flutter/lib/l10n/storage_failure_localizations.dart
diff --git a/lib/main.dart b/legacy/flutter/lib/main.dart
similarity index 100%
rename from lib/main.dart
rename to legacy/flutter/lib/main.dart
diff --git a/macos/.gitignore b/legacy/flutter/macos/.gitignore
similarity index 100%
rename from macos/.gitignore
rename to legacy/flutter/macos/.gitignore
diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/legacy/flutter/macos/Flutter/Flutter-Debug.xcconfig
similarity index 100%
rename from macos/Flutter/Flutter-Debug.xcconfig
rename to legacy/flutter/macos/Flutter/Flutter-Debug.xcconfig
diff --git a/macos/Flutter/Flutter-Release.xcconfig b/legacy/flutter/macos/Flutter/Flutter-Release.xcconfig
similarity index 100%
rename from macos/Flutter/Flutter-Release.xcconfig
rename to legacy/flutter/macos/Flutter/Flutter-Release.xcconfig
diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/legacy/flutter/macos/Flutter/GeneratedPluginRegistrant.swift
similarity index 100%
rename from macos/Flutter/GeneratedPluginRegistrant.swift
rename to legacy/flutter/macos/Flutter/GeneratedPluginRegistrant.swift
diff --git a/macos/Runner.xcodeproj/project.pbxproj b/legacy/flutter/macos/Runner.xcodeproj/project.pbxproj
similarity index 100%
rename from macos/Runner.xcodeproj/project.pbxproj
rename to legacy/flutter/macos/Runner.xcodeproj/project.pbxproj
diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/legacy/flutter/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to legacy/flutter/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/legacy/flutter/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
similarity index 100%
rename from macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
rename to legacy/flutter/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/legacy/flutter/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
similarity index 100%
rename from macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
rename to legacy/flutter/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/legacy/flutter/macos/Runner.xcworkspace/contents.xcworkspacedata
similarity index 100%
rename from macos/Runner.xcworkspace/contents.xcworkspacedata
rename to legacy/flutter/macos/Runner.xcworkspace/contents.xcworkspacedata
diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/legacy/flutter/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
similarity index 100%
rename from macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
rename to legacy/flutter/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
diff --git a/macos/Runner/AppDelegate.swift b/legacy/flutter/macos/Runner/AppDelegate.swift
similarity index 100%
rename from macos/Runner/AppDelegate.swift
rename to legacy/flutter/macos/Runner/AppDelegate.swift
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
similarity index 100%
rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
rename to legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
similarity index 100%
rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
rename to legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
similarity index 100%
rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
rename to legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
similarity index 100%
rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
rename to legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
similarity index 100%
rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
rename to legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
similarity index 100%
rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
rename to legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
similarity index 100%
rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
rename to legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
similarity index 100%
rename from macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
rename to legacy/flutter/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
diff --git a/macos/Runner/Base.lproj/MainMenu.xib b/legacy/flutter/macos/Runner/Base.lproj/MainMenu.xib
similarity index 100%
rename from macos/Runner/Base.lproj/MainMenu.xib
rename to legacy/flutter/macos/Runner/Base.lproj/MainMenu.xib
diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/legacy/flutter/macos/Runner/Configs/AppInfo.xcconfig
similarity index 100%
rename from macos/Runner/Configs/AppInfo.xcconfig
rename to legacy/flutter/macos/Runner/Configs/AppInfo.xcconfig
diff --git a/macos/Runner/Configs/Debug.xcconfig b/legacy/flutter/macos/Runner/Configs/Debug.xcconfig
similarity index 100%
rename from macos/Runner/Configs/Debug.xcconfig
rename to legacy/flutter/macos/Runner/Configs/Debug.xcconfig
diff --git a/macos/Runner/Configs/Release.xcconfig b/legacy/flutter/macos/Runner/Configs/Release.xcconfig
similarity index 100%
rename from macos/Runner/Configs/Release.xcconfig
rename to legacy/flutter/macos/Runner/Configs/Release.xcconfig
diff --git a/macos/Runner/Configs/Warnings.xcconfig b/legacy/flutter/macos/Runner/Configs/Warnings.xcconfig
similarity index 100%
rename from macos/Runner/Configs/Warnings.xcconfig
rename to legacy/flutter/macos/Runner/Configs/Warnings.xcconfig
diff --git a/macos/Runner/DebugProfile.entitlements b/legacy/flutter/macos/Runner/DebugProfile.entitlements
similarity index 100%
rename from macos/Runner/DebugProfile.entitlements
rename to legacy/flutter/macos/Runner/DebugProfile.entitlements
diff --git a/macos/Runner/Info.plist b/legacy/flutter/macos/Runner/Info.plist
similarity index 100%
rename from macos/Runner/Info.plist
rename to legacy/flutter/macos/Runner/Info.plist
diff --git a/macos/Runner/LoginItemService.swift b/legacy/flutter/macos/Runner/LoginItemService.swift
similarity index 100%
rename from macos/Runner/LoginItemService.swift
rename to legacy/flutter/macos/Runner/LoginItemService.swift
diff --git a/macos/Runner/MainFlutterWindow.swift b/legacy/flutter/macos/Runner/MainFlutterWindow.swift
similarity index 100%
rename from macos/Runner/MainFlutterWindow.swift
rename to legacy/flutter/macos/Runner/MainFlutterWindow.swift
diff --git a/macos/Runner/Release.entitlements b/legacy/flutter/macos/Runner/Release.entitlements
similarity index 100%
rename from macos/Runner/Release.entitlements
rename to legacy/flutter/macos/Runner/Release.entitlements
diff --git a/macos/Runner/UpdateService.swift b/legacy/flutter/macos/Runner/UpdateService.swift
similarity index 100%
rename from macos/Runner/UpdateService.swift
rename to legacy/flutter/macos/Runner/UpdateService.swift
diff --git a/macos/RunnerTests/RunnerTests.swift b/legacy/flutter/macos/RunnerTests/RunnerTests.swift
similarity index 100%
rename from macos/RunnerTests/RunnerTests.swift
rename to legacy/flutter/macos/RunnerTests/RunnerTests.swift
diff --git a/pubspec.lock b/legacy/flutter/pubspec.lock
similarity index 100%
rename from pubspec.lock
rename to legacy/flutter/pubspec.lock
diff --git a/pubspec.yaml b/legacy/flutter/pubspec.yaml
similarity index 100%
rename from pubspec.yaml
rename to legacy/flutter/pubspec.yaml
diff --git a/test/app/floatick_app_test.dart b/legacy/flutter/test/app/floatick_app_test.dart
similarity index 100%
rename from test/app/floatick_app_test.dart
rename to legacy/flutter/test/app/floatick_app_test.dart
diff --git a/test/app/theme/floatick_theme_test.dart b/legacy/flutter/test/app/theme/floatick_theme_test.dart
similarity index 100%
rename from test/app/theme/floatick_theme_test.dart
rename to legacy/flutter/test/app/theme/floatick_theme_test.dart
diff --git a/test/core/platform/window_bridge_test.dart b/legacy/flutter/test/core/platform/window_bridge_test.dart
similarity index 100%
rename from test/core/platform/window_bridge_test.dart
rename to legacy/flutter/test/core/platform/window_bridge_test.dart
diff --git a/test/core/ui/floatick_editor_components_test.dart b/legacy/flutter/test/core/ui/floatick_editor_components_test.dart
similarity index 100%
rename from test/core/ui/floatick_editor_components_test.dart
rename to legacy/flutter/test/core/ui/floatick_editor_components_test.dart
diff --git a/test/core/ui/floatick_hover_motion_test.dart b/legacy/flutter/test/core/ui/floatick_hover_motion_test.dart
similarity index 100%
rename from test/core/ui/floatick_hover_motion_test.dart
rename to legacy/flutter/test/core/ui/floatick_hover_motion_test.dart
diff --git a/test/core/ui/floatick_markdown_test.dart b/legacy/flutter/test/core/ui/floatick_markdown_test.dart
similarity index 100%
rename from test/core/ui/floatick_markdown_test.dart
rename to legacy/flutter/test/core/ui/floatick_markdown_test.dart
diff --git a/test/features/notes/data/note_repository_test.dart b/legacy/flutter/test/features/notes/data/note_repository_test.dart
similarity index 100%
rename from test/features/notes/data/note_repository_test.dart
rename to legacy/flutter/test/features/notes/data/note_repository_test.dart
diff --git a/test/features/notes/presentation/note_editor_drawer_test.dart b/legacy/flutter/test/features/notes/presentation/note_editor_drawer_test.dart
similarity index 100%
rename from test/features/notes/presentation/note_editor_drawer_test.dart
rename to legacy/flutter/test/features/notes/presentation/note_editor_drawer_test.dart
diff --git a/test/features/notes/presentation/note_panel_content_test.dart b/legacy/flutter/test/features/notes/presentation/note_panel_content_test.dart
similarity index 100%
rename from test/features/notes/presentation/note_panel_content_test.dart
rename to legacy/flutter/test/features/notes/presentation/note_panel_content_test.dart
diff --git a/test/features/notes/presentation/note_view_model_test.dart b/legacy/flutter/test/features/notes/presentation/note_view_model_test.dart
similarity index 100%
rename from test/features/notes/presentation/note_view_model_test.dart
rename to legacy/flutter/test/features/notes/presentation/note_view_model_test.dart
diff --git a/test/features/settings/data/login_item_repository_test.dart b/legacy/flutter/test/features/settings/data/login_item_repository_test.dart
similarity index 100%
rename from test/features/settings/data/login_item_repository_test.dart
rename to legacy/flutter/test/features/settings/data/login_item_repository_test.dart
diff --git a/test/features/settings/data/settings_repository_test.dart b/legacy/flutter/test/features/settings/data/settings_repository_test.dart
similarity index 100%
rename from test/features/settings/data/settings_repository_test.dart
rename to legacy/flutter/test/features/settings/data/settings_repository_test.dart
diff --git a/test/features/settings/presentation/settings_view_model_test.dart b/legacy/flutter/test/features/settings/presentation/settings_view_model_test.dart
similarity index 100%
rename from test/features/settings/presentation/settings_view_model_test.dart
rename to legacy/flutter/test/features/settings/presentation/settings_view_model_test.dart
diff --git a/test/features/todos/data/first_run_workspace_seeder_test.dart b/legacy/flutter/test/features/todos/data/first_run_workspace_seeder_test.dart
similarity index 100%
rename from test/features/todos/data/first_run_workspace_seeder_test.dart
rename to legacy/flutter/test/features/todos/data/first_run_workspace_seeder_test.dart
diff --git a/test/features/todos/data/tag_repository_test.dart b/legacy/flutter/test/features/todos/data/tag_repository_test.dart
similarity index 100%
rename from test/features/todos/data/tag_repository_test.dart
rename to legacy/flutter/test/features/todos/data/tag_repository_test.dart
diff --git a/test/features/todos/data/todo_repository_test.dart b/legacy/flutter/test/features/todos/data/todo_repository_test.dart
similarity index 100%
rename from test/features/todos/data/todo_repository_test.dart
rename to legacy/flutter/test/features/todos/data/todo_repository_test.dart
diff --git a/test/features/todos/domain/todo_markdown_formatter_test.dart b/legacy/flutter/test/features/todos/domain/todo_markdown_formatter_test.dart
similarity index 100%
rename from test/features/todos/domain/todo_markdown_formatter_test.dart
rename to legacy/flutter/test/features/todos/domain/todo_markdown_formatter_test.dart
diff --git a/test/features/todos/presentation/deadline_reminder_scheduler_test.dart b/legacy/flutter/test/features/todos/presentation/deadline_reminder_scheduler_test.dart
similarity index 100%
rename from test/features/todos/presentation/deadline_reminder_scheduler_test.dart
rename to legacy/flutter/test/features/todos/presentation/deadline_reminder_scheduler_test.dart
diff --git a/test/features/todos/presentation/todo_editor_drawer_test.dart b/legacy/flutter/test/features/todos/presentation/todo_editor_drawer_test.dart
similarity index 100%
rename from test/features/todos/presentation/todo_editor_drawer_test.dart
rename to legacy/flutter/test/features/todos/presentation/todo_editor_drawer_test.dart
diff --git a/test/features/todos/presentation/todo_list_row_test.dart b/legacy/flutter/test/features/todos/presentation/todo_list_row_test.dart
similarity index 100%
rename from test/features/todos/presentation/todo_list_row_test.dart
rename to legacy/flutter/test/features/todos/presentation/todo_list_row_test.dart
diff --git a/test/features/todos/presentation/todo_view_model_test.dart b/legacy/flutter/test/features/todos/presentation/todo_view_model_test.dart
similarity index 100%
rename from test/features/todos/presentation/todo_view_model_test.dart
rename to legacy/flutter/test/features/todos/presentation/todo_view_model_test.dart
diff --git a/test/features/updates/data/update_repository_test.dart b/legacy/flutter/test/features/updates/data/update_repository_test.dart
similarity index 100%
rename from test/features/updates/data/update_repository_test.dart
rename to legacy/flutter/test/features/updates/data/update_repository_test.dart
diff --git a/test/features/updates/domain/update_settings_snapshot_test.dart b/legacy/flutter/test/features/updates/domain/update_settings_snapshot_test.dart
similarity index 100%
rename from test/features/updates/domain/update_settings_snapshot_test.dart
rename to legacy/flutter/test/features/updates/domain/update_settings_snapshot_test.dart
diff --git a/test/features/updates/presentation/update_view_model_test.dart b/legacy/flutter/test/features/updates/presentation/update_view_model_test.dart
similarity index 100%
rename from test/features/updates/presentation/update_view_model_test.dart
rename to legacy/flutter/test/features/updates/presentation/update_view_model_test.dart
diff --git a/tool/floatick_app_icon.svg b/legacy/flutter/tool/floatick_app_icon.svg
similarity index 100%
rename from tool/floatick_app_icon.svg
rename to legacy/flutter/tool/floatick_app_icon.svg
diff --git a/tool/generate_macos_icon.swift b/legacy/flutter/tool/generate_macos_icon.swift
similarity index 100%
rename from tool/generate_macos_icon.swift
rename to legacy/flutter/tool/generate_macos_icon.swift
diff --git a/tool/release/ExportOptions.plist b/legacy/flutter/tool/release/ExportOptions.plist
similarity index 100%
rename from tool/release/ExportOptions.plist
rename to legacy/flutter/tool/release/ExportOptions.plist
diff --git a/tool/release/create_dmg.sh b/legacy/flutter/tool/release/create_dmg.sh
similarity index 100%
rename from tool/release/create_dmg.sh
rename to legacy/flutter/tool/release/create_dmg.sh
diff --git a/tool/release/prepare_unsigned_app.sh b/legacy/flutter/tool/release/prepare_unsigned_app.sh
similarity index 100%
rename from tool/release/prepare_unsigned_app.sh
rename to legacy/flutter/tool/release/prepare_unsigned_app.sh
diff --git a/tool/release/smoke_test_app.sh b/legacy/flutter/tool/release/smoke_test_app.sh
similarity index 100%
rename from tool/release/smoke_test_app.sh
rename to legacy/flutter/tool/release/smoke_test_app.sh
diff --git a/tool/release/unsigned_release.entitlements b/legacy/flutter/tool/release/unsigned_release.entitlements
similarity index 100%
rename from tool/release/unsigned_release.entitlements
rename to legacy/flutter/tool/release/unsigned_release.entitlements
diff --git a/tool/release/verify_update_feed.sh b/legacy/flutter/tool/release/verify_update_feed.sh
similarity index 100%
rename from tool/release/verify_update_feed.sh
rename to legacy/flutter/tool/release/verify_update_feed.sh
diff --git a/tool/test/run_ui_tests.sh b/legacy/flutter/tool/test/run_ui_tests.sh
similarity index 100%
rename from tool/test/run_ui_tests.sh
rename to legacy/flutter/tool/test/run_ui_tests.sh
From 1f624c32622f9c8741f33582ebf214251a47205c Mon Sep 17 00:00:00 2001
From: lucaslushuo <282139159+lucaslus@users.noreply.github.com>
Date: Thu, 3 Sep 2026 11:37:33 +0800
Subject: [PATCH 02/27] feat: refactor floatick to tauri v2 + react/ts menu bar
architecture
---
.gitignore | 2 +
index.html | 13 +
.../xcshareddata/swiftpm/Package.resolved | 14 +
package.json | 44 +
pnpm-lock.yaml | 2377 ++++++++
src-tauri/.gitignore | 4 +
src-tauri/Cargo.lock | 5203 +++++++++++++++++
src-tauri/Cargo.toml | 25 +
src-tauri/build.rs | 3 +
src-tauri/capabilities/default.json | 13 +
src-tauri/icons/128x128.png | Bin 0 -> 8706 bytes
src-tauri/icons/128x128@2x.png | Bin 0 -> 21554 bytes
src-tauri/icons/32x32.png | Bin 0 -> 1649 bytes
src-tauri/icons/64x64.png | Bin 0 -> 3689 bytes
src-tauri/icons/Square107x107Logo.png | Bin 0 -> 7026 bytes
src-tauri/icons/Square142x142Logo.png | Bin 0 -> 10071 bytes
src-tauri/icons/Square150x150Logo.png | Bin 0 -> 10723 bytes
src-tauri/icons/Square284x284Logo.png | Bin 0 -> 26828 bytes
src-tauri/icons/Square30x30Logo.png | Bin 0 -> 1535 bytes
src-tauri/icons/Square310x310Logo.png | Bin 0 -> 30819 bytes
src-tauri/icons/Square44x44Logo.png | Bin 0 -> 2386 bytes
src-tauri/icons/Square71x71Logo.png | Bin 0 -> 4220 bytes
src-tauri/icons/Square89x89Logo.png | Bin 0 -> 5557 bytes
src-tauri/icons/StoreLogo.png | Bin 0 -> 2850 bytes
.../android/mipmap-anydpi-v26/ic_launcher.xml | 5 +
.../icons/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2748 bytes
.../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 11793 bytes
.../android/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 2722 bytes
.../icons/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2589 bytes
.../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 7100 bytes
.../android/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2594 bytes
.../android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 5710 bytes
.../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 17648 bytes
.../mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5870 bytes
.../android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 9285 bytes
.../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 32104 bytes
.../mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 9753 bytes
.../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 12918 bytes
.../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 59504 bytes
.../mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 14007 bytes
.../android/values/ic_launcher_background.xml | 4 +
src-tauri/icons/icon.icns | Bin 0 -> 612319 bytes
src-tauri/icons/icon.ico | Bin 0 -> 33569 bytes
src-tauri/icons/icon.png | Bin 0 -> 64732 bytes
src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 0 -> 883 bytes
src-tauri/icons/ios/AppIcon-20x20@2x-1.png | Bin 0 -> 2019 bytes
src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 0 -> 2019 bytes
src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 0 -> 3184 bytes
src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 0 -> 1360 bytes
src-tauri/icons/ios/AppIcon-29x29@2x-1.png | Bin 0 -> 3094 bytes
src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 0 -> 3094 bytes
src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 0 -> 4996 bytes
src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 0 -> 2019 bytes
src-tauri/icons/ios/AppIcon-40x40@2x-1.png | Bin 0 -> 4635 bytes
src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 0 -> 4635 bytes
src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 0 -> 7421 bytes
src-tauri/icons/ios/AppIcon-512@2x.png | Bin 0 -> 415003 bytes
src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 0 -> 7421 bytes
src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 0 -> 13081 bytes
src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 0 -> 4369 bytes
src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 0 -> 10259 bytes
src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png | Bin 0 -> 11599 bytes
src-tauri/src/commands.rs | 98 +
src-tauri/src/lib.rs | 78 +
src-tauri/src/main.rs | 5 +
src-tauri/src/models.rs | 104 +
src-tauri/src/storage.rs | 117 +
src-tauri/src/tray.rs | 78 +
src-tauri/tauri.conf.json | 47 +
src/App.tsx | 95 +
src/components/layout/Header.tsx | 107 +
src/components/notes/NoteEditorDrawer.tsx | 205 +
src/components/notes/NoteItemRow.tsx | 99 +
src/components/notes/NotePanel.tsx | 229 +
src/components/settings/SettingsDrawer.tsx | 198 +
src/components/tags/TagManagerDrawer.tsx | 195 +
src/components/todos/TodoEditDrawer.tsx | 223 +
src/components/todos/TodoItemRow.tsx | 198 +
src/components/todos/TodoPanel.tsx | 256 +
src/i18n/index.ts | 18 +
src/i18n/locales/en.json | 63 +
src/i18n/locales/zh.json | 63 +
src/index.css | 50 +
src/lib/api.ts | 58 +
src/lib/dateUtils.ts | 44 +
src/main.tsx | 11 +
src/stores/useNoteStore.ts | 105 +
src/stores/useSettingsStore.ts | 93 +
src/stores/useTagStore.ts | 96 +
src/stores/useTodoStore.ts | 133 +
src/types/index.ts | 48 +
src/vite-env.d.ts | 1 +
tsconfig.json | 30 +
vite.config.ts | 23 +
94 files changed, 10875 insertions(+)
create mode 100644 index.html
create mode 100644 legacy/flutter/macos/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved
create mode 100644 package.json
create mode 100644 pnpm-lock.yaml
create mode 100644 src-tauri/.gitignore
create mode 100644 src-tauri/Cargo.lock
create mode 100644 src-tauri/Cargo.toml
create mode 100644 src-tauri/build.rs
create mode 100644 src-tauri/capabilities/default.json
create mode 100644 src-tauri/icons/128x128.png
create mode 100644 src-tauri/icons/128x128@2x.png
create mode 100644 src-tauri/icons/32x32.png
create mode 100644 src-tauri/icons/64x64.png
create mode 100644 src-tauri/icons/Square107x107Logo.png
create mode 100644 src-tauri/icons/Square142x142Logo.png
create mode 100644 src-tauri/icons/Square150x150Logo.png
create mode 100644 src-tauri/icons/Square284x284Logo.png
create mode 100644 src-tauri/icons/Square30x30Logo.png
create mode 100644 src-tauri/icons/Square310x310Logo.png
create mode 100644 src-tauri/icons/Square44x44Logo.png
create mode 100644 src-tauri/icons/Square71x71Logo.png
create mode 100644 src-tauri/icons/Square89x89Logo.png
create mode 100644 src-tauri/icons/StoreLogo.png
create mode 100644 src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml
create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher.png
create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png
create mode 100644 src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png
create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher.png
create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png
create mode 100644 src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png
create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png
create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png
create mode 100644 src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png
create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png
create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png
create mode 100644 src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png
create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png
create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png
create mode 100644 src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png
create mode 100644 src-tauri/icons/android/values/ic_launcher_background.xml
create mode 100644 src-tauri/icons/icon.icns
create mode 100644 src-tauri/icons/icon.ico
create mode 100644 src-tauri/icons/icon.png
create mode 100644 src-tauri/icons/ios/AppIcon-20x20@1x.png
create mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x-1.png
create mode 100644 src-tauri/icons/ios/AppIcon-20x20@2x.png
create mode 100644 src-tauri/icons/ios/AppIcon-20x20@3x.png
create mode 100644 src-tauri/icons/ios/AppIcon-29x29@1x.png
create mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x-1.png
create mode 100644 src-tauri/icons/ios/AppIcon-29x29@2x.png
create mode 100644 src-tauri/icons/ios/AppIcon-29x29@3x.png
create mode 100644 src-tauri/icons/ios/AppIcon-40x40@1x.png
create mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x-1.png
create mode 100644 src-tauri/icons/ios/AppIcon-40x40@2x.png
create mode 100644 src-tauri/icons/ios/AppIcon-40x40@3x.png
create mode 100644 src-tauri/icons/ios/AppIcon-512@2x.png
create mode 100644 src-tauri/icons/ios/AppIcon-60x60@2x.png
create mode 100644 src-tauri/icons/ios/AppIcon-60x60@3x.png
create mode 100644 src-tauri/icons/ios/AppIcon-76x76@1x.png
create mode 100644 src-tauri/icons/ios/AppIcon-76x76@2x.png
create mode 100644 src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png
create mode 100644 src-tauri/src/commands.rs
create mode 100644 src-tauri/src/lib.rs
create mode 100644 src-tauri/src/main.rs
create mode 100644 src-tauri/src/models.rs
create mode 100644 src-tauri/src/storage.rs
create mode 100644 src-tauri/src/tray.rs
create mode 100644 src-tauri/tauri.conf.json
create mode 100644 src/App.tsx
create mode 100644 src/components/layout/Header.tsx
create mode 100644 src/components/notes/NoteEditorDrawer.tsx
create mode 100644 src/components/notes/NoteItemRow.tsx
create mode 100644 src/components/notes/NotePanel.tsx
create mode 100644 src/components/settings/SettingsDrawer.tsx
create mode 100644 src/components/tags/TagManagerDrawer.tsx
create mode 100644 src/components/todos/TodoEditDrawer.tsx
create mode 100644 src/components/todos/TodoItemRow.tsx
create mode 100644 src/components/todos/TodoPanel.tsx
create mode 100644 src/i18n/index.ts
create mode 100644 src/i18n/locales/en.json
create mode 100644 src/i18n/locales/zh.json
create mode 100644 src/index.css
create mode 100644 src/lib/api.ts
create mode 100644 src/lib/dateUtils.ts
create mode 100644 src/main.tsx
create mode 100644 src/stores/useNoteStore.ts
create mode 100644 src/stores/useSettingsStore.ts
create mode 100644 src/stores/useTagStore.ts
create mode 100644 src/stores/useTodoStore.ts
create mode 100644 src/types/index.ts
create mode 100644 src/vite-env.d.ts
create mode 100644 tsconfig.json
create mode 100644 vite.config.ts
diff --git a/.gitignore b/.gitignore
index 270fc98..dd20b51 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,6 +18,8 @@
build/
coverage/
dist/
+node_modules/
+src-tauri/target/
*.dmg
*.xcarchive
.build/
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..05b0b86
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Floatick
+
+
+
+
+
+
diff --git a/legacy/flutter/macos/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved b/legacy/flutter/macos/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved
new file mode 100644
index 0000000..d4c2188
--- /dev/null
+++ b/legacy/flutter/macos/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved
@@ -0,0 +1,14 @@
+{
+ "pins" : [
+ {
+ "identity" : "sparkle",
+ "kind" : "remoteSourceControl",
+ "location" : "https://github.com/sparkle-project/Sparkle",
+ "state" : {
+ "revision" : "6276ba2b404829d139c45ff98427cf90e2efc59b",
+ "version" : "2.9.2"
+ }
+ }
+ ],
+ "version" : 2
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..94a7401
--- /dev/null
+++ b/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "floatick",
+ "version": "1.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview",
+ "tauri": "tauri",
+ "tauri:dev": "tauri dev",
+ "tauri:build": "tauri build"
+ },
+ "packageManager": "pnpm@11.7.0",
+ "dependencies": {
+ "@tauri-apps/api": "^2.11.1",
+ "@tauri-apps/plugin-autostart": "^2.5.1",
+ "@tauri-apps/plugin-opener": "^2.5.5",
+ "clsx": "^2.1.1",
+ "date-fns": "^4.4.0",
+ "i18next": "^26.4.1",
+ "lucide-react": "^1.39.0",
+ "react": "^19.2.8",
+ "react-dom": "^19.2.8",
+ "react-i18next": "^17.0.13",
+ "react-markdown": "^10.1.0",
+ "remark-gfm": "^4.0.1",
+ "tailwind-merge": "^3.6.0",
+ "zustand": "^5.0.15"
+ },
+ "devDependencies": {
+ "@tailwindcss/vite": "^4.3.3",
+ "@tauri-apps/cli": "^2.11.4",
+ "@types/node": "^26.4.1",
+ "@types/react": "^19.2.18",
+ "@types/react-dom": "^19.2.5",
+ "@vitejs/plugin-react": "^6.1.1",
+ "autoprefixer": "^10.5.4",
+ "postcss": "^8.5.26",
+ "tailwindcss": "^4.3.3",
+ "typescript": "^7.0.2",
+ "vite": "^8.2.2"
+ }
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..f0cbe40
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,2377 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@tauri-apps/api':
+ specifier: ^2.11.1
+ version: 2.11.1
+ '@tauri-apps/plugin-autostart':
+ specifier: ^2.5.1
+ version: 2.5.1
+ '@tauri-apps/plugin-opener':
+ specifier: ^2.5.5
+ version: 2.5.5
+ clsx:
+ specifier: ^2.1.1
+ version: 2.1.1
+ date-fns:
+ specifier: ^4.4.0
+ version: 4.4.0
+ i18next:
+ specifier: ^26.4.1
+ version: 26.4.1(typescript@7.0.2)
+ lucide-react:
+ specifier: ^1.39.0
+ version: 1.39.0(react@19.2.8)
+ react:
+ specifier: ^19.2.8
+ version: 19.2.8
+ react-dom:
+ specifier: ^19.2.8
+ version: 19.2.8(react@19.2.8)
+ react-i18next:
+ specifier: ^17.0.13
+ version: 17.0.13(i18next@26.4.1(typescript@7.0.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2)
+ react-markdown:
+ specifier: ^10.1.0
+ version: 10.1.0(@types/react@19.2.18)(react@19.2.8)
+ remark-gfm:
+ specifier: ^4.0.1
+ version: 4.0.1
+ tailwind-merge:
+ specifier: ^3.6.0
+ version: 3.6.0
+ zustand:
+ specifier: ^5.0.15
+ version: 5.0.15(@types/react@19.2.18)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8))
+ devDependencies:
+ '@tailwindcss/vite':
+ specifier: ^4.3.3
+ version: 4.3.3(vite@8.2.2(@types/node@26.4.1)(jiti@2.7.0))
+ '@tauri-apps/cli':
+ specifier: ^2.11.4
+ version: 2.11.4
+ '@types/node':
+ specifier: ^26.4.1
+ version: 26.4.1
+ '@types/react':
+ specifier: ^19.2.18
+ version: 19.2.18
+ '@types/react-dom':
+ specifier: ^19.2.5
+ version: 19.2.5(@types/react@19.2.18)
+ '@vitejs/plugin-react':
+ specifier: ^6.1.1
+ version: 6.1.1(vite@8.2.2(@types/node@26.4.1)(jiti@2.7.0))
+ autoprefixer:
+ specifier: ^10.5.4
+ version: 10.5.4(postcss@8.5.26)
+ postcss:
+ specifier: ^8.5.26
+ version: 8.5.26
+ tailwindcss:
+ specifier: ^4.3.3
+ version: 4.3.3
+ typescript:
+ specifier: ^7.0.2
+ version: 7.0.2
+ vite:
+ specifier: ^8.2.2
+ version: 8.2.2(@types/node@26.4.1)(jiti@2.7.0)
+
+packages:
+
+ '@babel/runtime@7.29.7':
+ resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==}
+ engines: {node: '>=6.9.0'}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/sourcemap-codec@1.6.0':
+ resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@oxc-project/types@0.147.0':
+ resolution: {integrity: sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg==}
+
+ '@rolldown/binding-android-arm-eabi@1.2.6':
+ resolution: {integrity: sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@rolldown/binding-android-arm64@1.2.6':
+ resolution: {integrity: sha512-lkWU8ZJaRk9q3CIEY1Tc7vIFALp3Xw5NfGJo2hQg5oIqNgxWi1zI+IiDEK3r70BF5Dzol1tcXsnzsRc8NLhG+Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.2.6':
+ resolution: {integrity: sha512-dgR56NYnvAszm7Ob1B2/Vn0e8bUQYZH2UjVaMMtMVOCKFSfjhfLmuA/9+O+F+ajUdG6B/bSssrKW6JJYASa8jA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.2.6':
+ resolution: {integrity: sha512-vpVxFvUCFioJqug7OTvqptkc4yb8UX0AwfDmJpaR/0sWz+BUmqSVAf7c8JkUgnN8YLspb4a/N6NhTyMAmdyQ7Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@1.2.6':
+ resolution: {integrity: sha512-h1wG6Y6K3JlRswxsI64qQJqBAy4vrLuHgRbc8CZMGSWTOFRY6ghMApM1NKzB2I0n5xV1fjkE18SuVl2QpLeNpA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.6':
+ resolution: {integrity: sha512-tbCiqub0q2MVWJKgF5PoAlNWCtQydiOYSLIkd8sByqK/6MMYLJRcSXSYodqYtd0O+Fw7QaVmKKlS4oL94YRZ0w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@1.2.6':
+ resolution: {integrity: sha512-oxK9+baEBPhZG5HB4URY+uU04zJWeZlH6Tb9rB5DK4DF9XR1uXNLXt5Q5ZsugTKayNCNLhkcwz/ye74hRI98dg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-arm64-musl@1.2.6':
+ resolution: {integrity: sha512-muWCk27FVBEZtv0MsK8gnfSmgczA8KQ0uRVJbTABKhkRfQc38aUrcb7fhi3BNiyseFmgcRsoMfQsSNJ+DbZdSw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-linux-ppc64-gnu@1.2.6':
+ resolution: {integrity: sha512-eWDoSfU7Co2qj3vgB3Dt4lj1mG6CoWbcJQkRMP3XJplyCMtuaq3LHvPFjS9QIPvMGWVadJC04Xiy0IdcVPtnwQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-s390x-gnu@1.2.6':
+ resolution: {integrity: sha512-2bWNjRSIayvupRKxXUY2tWG9fYdoUlTqWywHRvE8Eq3GvuQ+f2HeIkve697fIt+IQs/PV8yFsdWuhp1aJ1PdnA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-gnu@1.2.6':
+ resolution: {integrity: sha512-KekI0gS0wLxe1UBSQSjenBVwou/JkcQPDzBPICGZjxUv9k3RteHDPBQaiOicZUFKRIH2wKEimGwVpnJsbPzu7w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-musl@1.2.6':
+ resolution: {integrity: sha512-TvtPnfVr+HtyGiDmPK4VWmlNm7QhNNAcK5Q9A7aOXsI8545yCyaoMaicXrFZ72JzeYjaUVk7yT243zT0jzjFKQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-openharmony-arm64@1.2.6':
+ resolution: {integrity: sha512-iOo0VEay2XFhaCcH0sps5XIimkSuOnNaZrf6+ZkoSOQBJPKNU48RkmJv0/lSpipexu5P+ouFgafe5IGr/DiQfg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-win32-arm64-msvc@1.2.6':
+ resolution: {integrity: sha512-y5NTmmasMS455JlOCO4ZM9krIchv3Mvm1crL1iUPGOPgEzSkves9n0SdC5Sjz6+qWDFhd8/JpfWMH8NSWNHe+A==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.2.6':
+ resolution: {integrity: sha512-np8iZSLfXlAD4kWhiyq/u0Yt8oZDtRQ8lGhQaCXo2rl37KNjeU0GjJuwr4P3oeZ++ROfofsKNBqR5LTO8aXyWQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/pluginutils@1.0.1':
+ resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
+
+ '@tailwindcss/node@4.3.3':
+ resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==}
+
+ '@tailwindcss/oxide-android-arm64@4.3.3':
+ resolution: {integrity: sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [android]
+
+ '@tailwindcss/oxide-darwin-arm64@4.3.3':
+ resolution: {integrity: sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-darwin-x64@4.3.3':
+ resolution: {integrity: sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-freebsd-x64@4.3.3':
+ resolution: {integrity: sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3':
+ resolution: {integrity: sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.3.3':
+ resolution: {integrity: sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.3.3':
+ resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.3.3':
+ resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tailwindcss/oxide-linux-x64-musl@4.3.3':
+ resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@tailwindcss/oxide-wasm32-wasi@4.3.3':
+ resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ bundledDependencies:
+ - '@napi-rs/wasm-runtime'
+ - '@emnapi/core'
+ - '@emnapi/runtime'
+ - '@tybys/wasm-util'
+ - '@emnapi/wasi-threads'
+ - tslib
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.3.3':
+ resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==}
+ engines: {node: '>= 20'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.3.3':
+ resolution: {integrity: sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==}
+ engines: {node: '>= 20'}
+ cpu: [x64]
+ os: [win32]
+
+ '@tailwindcss/oxide@4.3.3':
+ resolution: {integrity: sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==}
+ engines: {node: '>= 20'}
+
+ '@tailwindcss/vite@4.3.3':
+ resolution: {integrity: sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==}
+ peerDependencies:
+ vite: ^5.2.0 || ^6 || ^7 || ^8
+
+ '@tauri-apps/api@2.11.1':
+ resolution: {integrity: sha512-M2FPuYND2m+wh5hfW9ZpSdxMPdEJovPBWwoHJmwUpysTYNHaOkVFN419m/K0LIgjb/7KU2vBgsUepJWugQCvAA==}
+
+ '@tauri-apps/cli-darwin-arm64@2.11.4':
+ resolution: {integrity: sha512-1ryOF3ZhpZ/nemHV5zVwBQBz9jDGKmKPvWPADOhc83ig0P4bMc2iER4NbC6r9sjeIZ6RVQ4g3RZIYvezhcl4TQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@tauri-apps/cli-darwin-x64@2.11.4':
+ resolution: {integrity: sha512-uFsGQAAfuyz1k/yGLmkWfkBlgKAqZfxqlHmLWx81QU27RJWfmbNHCIq8T8w1e+VClleIuZUjpHWfoE4E3DLo3A==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@tauri-apps/cli-linux-arm-gnueabihf@2.11.4':
+ resolution: {integrity: sha512-IaHZn5CdBL21oUmjiVOS1ctw6Ip1O0pjp70FwOWmYz1myWe0SY96ZIj2FYf7pT0m8bI2h/hrs5ZbEXXh44/MkQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@tauri-apps/cli-linux-arm64-gnu@2.11.4':
+ resolution: {integrity: sha512-N41/ukTRVe6XSuUTESuFdGeOW2i7k62tK+6gHK5Kd5/q5RPvvi19GaWAVPPb9u95HSGmTChSolBfzynUsssFaA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tauri-apps/cli-linux-arm64-musl@2.11.4':
+ resolution: {integrity: sha512-v277UnT/fB64xAfSroL5N3Km3tLmvATWqJJw/wRI+g6o+HkeD0slyE7gOhNs1MbjE41R7bQOTxMVoL3aomUJmw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@tauri-apps/cli-linux-riscv64-gnu@2.11.4':
+ resolution: {integrity: sha512-qqgNkQ2u1yZHxjhxsZaxUtRDW8dIqIYm33rx/mzwQv0SfY9x1B+iraj8vWeFiXjjSVVhEMepXSOts1TqPzvXNQ==}
+ engines: {node: '>= 10'}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tauri-apps/cli-linux-x64-gnu@2.11.4':
+ resolution: {integrity: sha512-2VRNWl84FOH0m2giiDkO2h0QXlcMJeX+zJDpI5kDIQAx6s+geF3v48F4DXfJez4GS/FdoDGnPnw1C2iYGbQ7bQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@tauri-apps/cli-linux-x64-musl@2.11.4':
+ resolution: {integrity: sha512-o9GyhYor/nc7xarmwDE3ka2szuW3uuZzXjHWh64Q8YX5AtSgxdQkFWzrY4O8KiGtVNvFBI14H3Q49Qj5TOIP/A==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@tauri-apps/cli-win32-arm64-msvc@2.11.4':
+ resolution: {integrity: sha512-ld5Ehb598m0VkYyylRPNeCFsBe/km0jxis6KgMpl3IGY6I/i1RwQXO05I1AsXUXO2WC6AvB/Lw4qTf/asiuEiQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@tauri-apps/cli-win32-ia32-msvc@2.11.4':
+ resolution: {integrity: sha512-12Hxi0XX/H5VFxO/bGgHkFWhml9VMgEOu9CidjeCeTNQ1l6fpUlbiGgSP7CLI3PFtW9/FfbeHieZ+kyWK5H7CA==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@tauri-apps/cli-win32-x64-msvc@2.11.4':
+ resolution: {integrity: sha512-+vDiqBIU5dMISg/wNvX3sF+ZHfgJGJ5T0AcO+EHNXV9GGAG+P5fzodlDXD3QdKCRgZxMoCm5PPvj3BqLNjBthw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@tauri-apps/cli@2.11.4':
+ resolution: {integrity: sha512-R8xGtMpwyetawSqm9kYOuMmEqkhUbvcUy8n0aNXIxollKBLESUu5f4Fx+64hgASYm1H+jSWq6jCW6zqTnH6hqQ==}
+ engines: {node: '>= 10'}
+ hasBin: true
+
+ '@tauri-apps/plugin-autostart@2.5.1':
+ resolution: {integrity: sha512-zS/xx7yzveCcotkA+8TqkI2lysmG2wvQXv2HGAVExITmnFfHAdj1arGsbbfs3o6EktRHf6l34pJxc3YGG2mg7w==}
+
+ '@tauri-apps/plugin-opener@2.5.5':
+ resolution: {integrity: sha512-xvzGai5aQds8j8R8RsUK/lW6pGG50YgOYIPLzvkqmkwAj7dfySOD7sGtejRzvVdMmv1EQfKVEFh1MvmDp8QR0g==}
+
+ '@types/debug@4.1.13':
+ resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==}
+
+ '@types/estree-jsx@1.0.5':
+ resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
+
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
+ '@types/hast@3.0.5':
+ resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==}
+
+ '@types/mdast@4.0.4':
+ resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+
+ '@types/ms@2.1.0':
+ resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
+
+ '@types/node@26.4.1':
+ resolution: {integrity: sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==}
+
+ '@types/react-dom@19.2.5':
+ resolution: {integrity: sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg==}
+ peerDependencies:
+ '@types/react': ^19.2.0
+
+ '@types/react@19.2.18':
+ resolution: {integrity: sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==}
+
+ '@types/unist@2.0.11':
+ resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
+
+ '@types/unist@3.0.3':
+ resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
+
+ '@typescript/typescript-aix-ppc64@7.0.2':
+ resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@typescript/typescript-darwin-arm64@7.0.2':
+ resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@typescript/typescript-darwin-x64@7.0.2':
+ resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@typescript/typescript-freebsd-arm64@7.0.2':
+ resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@typescript/typescript-freebsd-x64@7.0.2':
+ resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@typescript/typescript-linux-arm64@7.0.2':
+ resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@typescript/typescript-linux-arm@7.0.2':
+ resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm]
+ os: [linux]
+
+ '@typescript/typescript-linux-loong64@7.0.2':
+ resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@typescript/typescript-linux-mips64el@7.0.2':
+ resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@typescript/typescript-linux-ppc64@7.0.2':
+ resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@typescript/typescript-linux-riscv64@7.0.2':
+ resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@typescript/typescript-linux-s390x@7.0.2':
+ resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==}
+ engines: {node: '>=16.20.0'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@typescript/typescript-linux-x64@7.0.2':
+ resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [linux]
+
+ '@typescript/typescript-netbsd-arm64@7.0.2':
+ resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [netbsd]
+
+ '@typescript/typescript-netbsd-x64@7.0.2':
+ resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@typescript/typescript-openbsd-arm64@7.0.2':
+ resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [openbsd]
+
+ '@typescript/typescript-openbsd-x64@7.0.2':
+ resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@typescript/typescript-sunos-x64@7.0.2':
+ resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@typescript/typescript-win32-arm64@7.0.2':
+ resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==}
+ engines: {node: '>=16.20.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@typescript/typescript-win32-x64@7.0.2':
+ resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==}
+ engines: {node: '>=16.20.0'}
+ cpu: [x64]
+ os: [win32]
+
+ '@ungap/structured-clone@1.4.0':
+ resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==}
+
+ '@vitejs/plugin-react@6.1.1':
+ resolution: {integrity: sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0
+ babel-plugin-react-compiler: ^1.0.0
+ oxc-transform-react: ^0.145.0
+ vite: ^8.0.0
+ peerDependenciesMeta:
+ '@rolldown/plugin-babel':
+ optional: true
+ babel-plugin-react-compiler:
+ optional: true
+ oxc-transform-react:
+ optional: true
+
+ autoprefixer@10.5.4:
+ resolution: {integrity: sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ bail@2.0.2:
+ resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
+
+ baseline-browser-mapping@2.11.20:
+ resolution: {integrity: sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ browserslist@4.28.8:
+ resolution: {integrity: sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ caniuse-lite@1.0.30001810:
+ resolution: {integrity: sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==}
+
+ ccount@2.0.1:
+ resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
+
+ character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
+ character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
+ character-entities@2.0.2:
+ resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
+
+ character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
+
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
+
+ comma-separated-tokens@2.0.3:
+ resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
+
+ csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
+
+ date-fns@4.4.0:
+ resolution: {integrity: sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w==}
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decode-named-character-reference@1.3.0:
+ resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
+
+ dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
+ engines: {node: '>=8'}
+
+ devlop@1.1.0:
+ resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
+
+ electron-to-chromium@1.5.420:
+ resolution: {integrity: sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA==}
+
+ enhanced-resolve@5.24.5:
+ resolution: {integrity: sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==}
+ engines: {node: '>=10.13.0'}
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
+ estree-util-is-identifier-name@3.0.0:
+ resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+
+ extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+
+ fdir@6.5.0:
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+
+ fraction.js@5.3.4:
+ resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ hast-util-to-jsx-runtime@2.3.6:
+ resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
+
+ hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
+ html-parse-stringify@4.0.1:
+ resolution: {integrity: sha512-0zHsZJrK7S3K2aucXWL6ycoYJ/iNtIcFHC/nYQgFklPtrv5LpJctIiSCroWZWeuoXvuyFdzp6KzjJQ+OT5MfFw==}
+
+ html-url-attributes@3.0.1:
+ resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
+
+ i18next@26.4.1:
+ resolution: {integrity: sha512-9YbX5E6gd1H+yaOSX3izCsPj5iWXyH7X4oC+iuHHJJw8AeHglzOK5SJf+1CHxaYKYigcea+8jvzSxqYx46YvyA==}
+ peerDependencies:
+ typescript: ^5 || ^6 || ^7
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ inline-style-parser@0.2.7:
+ resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
+
+ is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
+ is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
+ is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+
+ is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
+ is-plain-obj@4.1.0:
+ resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
+ engines: {node: '>=12'}
+
+ jiti@2.7.0:
+ resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==}
+ hasBin: true
+
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-android-arm64@1.33.0:
+ resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-arm64@1.33.0:
+ resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.33.0:
+ resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-freebsd-x64@1.33.0:
+ resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-musl@1.33.0:
+ resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
+ lightningcss@1.33.0:
+ resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==}
+ engines: {node: '>= 12.0.0'}
+
+ longest-streak@3.1.0:
+ resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
+
+ lucide-react@1.39.0:
+ resolution: {integrity: sha512-y8nXoEwvqqIsF927NBWXODa4bfMrcUeEb/9sgpwFqg0gUjgn3j5Hznk+v7STmPgZ2iQ11JKlbQGdFRuTOwvYkA==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
+ markdown-table@3.0.4:
+ resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==}
+
+ mdast-util-find-and-replace@3.0.2:
+ resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
+
+ mdast-util-from-markdown@2.0.3:
+ resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==}
+
+ mdast-util-gfm-autolink-literal@2.0.1:
+ resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
+
+ mdast-util-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==}
+
+ mdast-util-gfm-strikethrough@2.0.0:
+ resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==}
+
+ mdast-util-gfm-table@2.0.0:
+ resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==}
+
+ mdast-util-gfm-task-list-item@2.0.0:
+ resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==}
+
+ mdast-util-gfm@3.1.0:
+ resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
+
+ mdast-util-mdx-expression@2.0.1:
+ resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
+
+ mdast-util-mdx-jsx@3.2.0:
+ resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==}
+
+ mdast-util-mdxjs-esm@2.0.1:
+ resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
+
+ mdast-util-phrasing@4.1.0:
+ resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
+
+ mdast-util-to-hast@13.2.1:
+ resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==}
+
+ mdast-util-to-markdown@2.1.2:
+ resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
+
+ mdast-util-to-string@4.0.0:
+ resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+
+ micromark-core-commonmark@2.0.3:
+ resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
+
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==}
+
+ micromark-extension-gfm-footnote@2.1.0:
+ resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==}
+
+ micromark-extension-gfm-strikethrough@2.1.0:
+ resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==}
+
+ micromark-extension-gfm-table@2.1.1:
+ resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==}
+
+ micromark-extension-gfm-tagfilter@2.0.0:
+ resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==}
+
+ micromark-extension-gfm-task-list-item@2.1.0:
+ resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==}
+
+ micromark-extension-gfm@3.0.0:
+ resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==}
+
+ micromark-factory-destination@2.0.1:
+ resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
+
+ micromark-factory-label@2.0.1:
+ resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
+
+ micromark-factory-space@2.0.1:
+ resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
+
+ micromark-factory-title@2.0.1:
+ resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
+
+ micromark-factory-whitespace@2.0.1:
+ resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
+
+ micromark-util-character@2.1.1:
+ resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
+
+ micromark-util-chunked@2.0.1:
+ resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
+
+ micromark-util-classify-character@2.0.1:
+ resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
+
+ micromark-util-combine-extensions@2.0.1:
+ resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
+
+ micromark-util-decode-numeric-character-reference@2.0.2:
+ resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
+
+ micromark-util-decode-string@2.0.1:
+ resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
+
+ micromark-util-encode@2.0.1:
+ resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
+
+ micromark-util-html-tag-name@2.0.1:
+ resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
+
+ micromark-util-normalize-identifier@2.0.1:
+ resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
+
+ micromark-util-resolve-all@2.0.1:
+ resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
+
+ micromark-util-sanitize-uri@2.0.1:
+ resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
+
+ micromark-util-subtokenize@2.1.0:
+ resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
+
+ micromark-util-symbol@2.0.1:
+ resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
+
+ micromark-util-types@2.0.2:
+ resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
+
+ micromark@4.0.2:
+ resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ nanoid@3.3.18:
+ resolution: {integrity: sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ node-releases@2.0.54:
+ resolution: {integrity: sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ==}
+ engines: {node: '>=18'}
+
+ parse-entities@4.0.2:
+ resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@4.0.7:
+ resolution: {integrity: sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==}
+ engines: {node: '>=12'}
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.5.26:
+ resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ property-information@7.2.0:
+ resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==}
+
+ react-dom@19.2.8:
+ resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==}
+ peerDependencies:
+ react: ^19.2.8
+
+ react-i18next@17.0.13:
+ resolution: {integrity: sha512-Cc1PscmblIHA1kljTqDwrcVMI21ydgmUzw0UAeQBe7pAOgfuRLfzXze4EUBQoeDiICzFIXXhHFoZxuetNg5D0Q==}
+ peerDependencies:
+ i18next: '>= 26.2.0'
+ react: '>= 16.8.0'
+ react-dom: '*'
+ react-native: '*'
+ typescript: ^5 || ^6 || ^7
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+ react-native:
+ optional: true
+ typescript:
+ optional: true
+
+ react-markdown@10.1.0:
+ resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==}
+ peerDependencies:
+ '@types/react': '>=18'
+ react: '>=18'
+
+ react@19.2.8:
+ resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==}
+ engines: {node: '>=0.10.0'}
+
+ remark-gfm@4.0.1:
+ resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
+
+ remark-parse@11.0.0:
+ resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==}
+
+ remark-rehype@11.1.2:
+ resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==}
+
+ remark-stringify@11.0.0:
+ resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
+
+ rolldown@1.2.6:
+ resolution: {integrity: sha512-vMM4q3aixf46GiF1Kok8jDPFsEpXgFWGjUHXNkNHNm+Y2adXAG2dbX91jkti3i0ZRsOlcmbuzAz1poObSHCmUA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
+ scheduler@0.27.0:
+ resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ space-separated-tokens@2.0.2:
+ resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
+
+ stringify-entities@4.0.4:
+ resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+
+ style-to-js@1.1.21:
+ resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
+
+ style-to-object@1.0.14:
+ resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
+
+ tailwind-merge@3.6.0:
+ resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==}
+
+ tailwindcss@4.3.3:
+ resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==}
+
+ tapable@2.3.3:
+ resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==}
+ engines: {node: '>=6'}
+
+ tinyglobby@0.2.17:
+ resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
+ engines: {node: '>=12.0.0'}
+
+ trim-lines@3.0.1:
+ resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
+
+ trough@2.2.0:
+ resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
+
+ typescript@7.0.2:
+ resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==}
+ engines: {node: '>=16.20.0'}
+ hasBin: true
+
+ undici-types@8.3.0:
+ resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==}
+
+ unified@11.0.5:
+ resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
+
+ unist-util-is@6.0.1:
+ resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
+
+ unist-util-position@5.0.0:
+ resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
+
+ unist-util-stringify-position@4.0.0:
+ resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
+
+ unist-util-visit-parents@6.0.2:
+ resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
+
+ unist-util-visit@5.1.0:
+ resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
+
+ update-browserslist-db@1.3.2:
+ resolution: {integrity: sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ use-sync-external-store@1.6.0:
+ resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ vfile-message@4.0.3:
+ resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
+
+ vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
+ vite@8.2.2:
+ resolution: {integrity: sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.4.0 || ^0.5.0
+ esbuild: ^0.27.0 || ^0.28.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ zustand@5.0.15:
+ resolution: {integrity: sha512-MpSEjRiBkA9crSYeOUH32rJC7SVqAbm0Fqcqge/bUi2PPoLcBWKOsG+C8mevmpr8TwXHBVkChbbJiyvkE+i/3A==}
+ engines: {node: '>=12.20.0'}
+ peerDependencies:
+ '@types/react': '>=18.0.0'
+ immer: '>=9.0.6'
+ react: '>=18.0.0'
+ use-sync-external-store: '>=1.2.0'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ immer:
+ optional: true
+ react:
+ optional: true
+ use-sync-external-store:
+ optional: true
+
+ zwitch@2.0.4:
+ resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
+
+snapshots:
+
+ '@babel/runtime@7.29.7': {}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.6.0
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/sourcemap-codec@1.6.0': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.6.0
+
+ '@oxc-project/types@0.147.0': {}
+
+ '@rolldown/binding-android-arm-eabi@1.2.6':
+ optional: true
+
+ '@rolldown/binding-android-arm64@1.2.6':
+ optional: true
+
+ '@rolldown/binding-darwin-arm64@1.2.6':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@1.2.6':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@1.2.6':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.2.6':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@1.2.6':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@1.2.6':
+ optional: true
+
+ '@rolldown/binding-linux-ppc64-gnu@1.2.6':
+ optional: true
+
+ '@rolldown/binding-linux-s390x-gnu@1.2.6':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@1.2.6':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@1.2.6':
+ optional: true
+
+ '@rolldown/binding-openharmony-arm64@1.2.6':
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@1.2.6':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.2.6':
+ optional: true
+
+ '@rolldown/pluginutils@1.0.1': {}
+
+ '@tailwindcss/node@4.3.3':
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ enhanced-resolve: 5.24.5
+ jiti: 2.7.0
+ lightningcss: 1.32.0
+ magic-string: 0.30.21
+ source-map-js: 1.2.1
+ tailwindcss: 4.3.3
+
+ '@tailwindcss/oxide-android-arm64@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-arm64@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-x64@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-freebsd-x64@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-musl@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-wasm32-wasi@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.3.3':
+ optional: true
+
+ '@tailwindcss/oxide@4.3.3':
+ optionalDependencies:
+ '@tailwindcss/oxide-android-arm64': 4.3.3
+ '@tailwindcss/oxide-darwin-arm64': 4.3.3
+ '@tailwindcss/oxide-darwin-x64': 4.3.3
+ '@tailwindcss/oxide-freebsd-x64': 4.3.3
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.3
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.3.3
+ '@tailwindcss/oxide-linux-arm64-musl': 4.3.3
+ '@tailwindcss/oxide-linux-x64-gnu': 4.3.3
+ '@tailwindcss/oxide-linux-x64-musl': 4.3.3
+ '@tailwindcss/oxide-wasm32-wasi': 4.3.3
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3
+ '@tailwindcss/oxide-win32-x64-msvc': 4.3.3
+
+ '@tailwindcss/vite@4.3.3(vite@8.2.2(@types/node@26.4.1)(jiti@2.7.0))':
+ dependencies:
+ '@tailwindcss/node': 4.3.3
+ '@tailwindcss/oxide': 4.3.3
+ tailwindcss: 4.3.3
+ vite: 8.2.2(@types/node@26.4.1)(jiti@2.7.0)
+
+ '@tauri-apps/api@2.11.1': {}
+
+ '@tauri-apps/cli-darwin-arm64@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-darwin-x64@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-linux-arm-gnueabihf@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-linux-arm64-gnu@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-linux-arm64-musl@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-linux-riscv64-gnu@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-linux-x64-gnu@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-linux-x64-musl@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-win32-arm64-msvc@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-win32-ia32-msvc@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli-win32-x64-msvc@2.11.4':
+ optional: true
+
+ '@tauri-apps/cli@2.11.4':
+ optionalDependencies:
+ '@tauri-apps/cli-darwin-arm64': 2.11.4
+ '@tauri-apps/cli-darwin-x64': 2.11.4
+ '@tauri-apps/cli-linux-arm-gnueabihf': 2.11.4
+ '@tauri-apps/cli-linux-arm64-gnu': 2.11.4
+ '@tauri-apps/cli-linux-arm64-musl': 2.11.4
+ '@tauri-apps/cli-linux-riscv64-gnu': 2.11.4
+ '@tauri-apps/cli-linux-x64-gnu': 2.11.4
+ '@tauri-apps/cli-linux-x64-musl': 2.11.4
+ '@tauri-apps/cli-win32-arm64-msvc': 2.11.4
+ '@tauri-apps/cli-win32-ia32-msvc': 2.11.4
+ '@tauri-apps/cli-win32-x64-msvc': 2.11.4
+
+ '@tauri-apps/plugin-autostart@2.5.1':
+ dependencies:
+ '@tauri-apps/api': 2.11.1
+
+ '@tauri-apps/plugin-opener@2.5.5':
+ dependencies:
+ '@tauri-apps/api': 2.11.1
+
+ '@types/debug@4.1.13':
+ dependencies:
+ '@types/ms': 2.1.0
+
+ '@types/estree-jsx@1.0.5':
+ dependencies:
+ '@types/estree': 1.0.9
+
+ '@types/estree@1.0.9': {}
+
+ '@types/hast@3.0.5':
+ dependencies:
+ '@types/unist': 3.0.3
+
+ '@types/mdast@4.0.4':
+ dependencies:
+ '@types/unist': 3.0.3
+
+ '@types/ms@2.1.0': {}
+
+ '@types/node@26.4.1':
+ dependencies:
+ undici-types: 8.3.0
+
+ '@types/react-dom@19.2.5(@types/react@19.2.18)':
+ dependencies:
+ '@types/react': 19.2.18
+
+ '@types/react@19.2.18':
+ dependencies:
+ csstype: 3.2.3
+
+ '@types/unist@2.0.11': {}
+
+ '@types/unist@3.0.3': {}
+
+ '@typescript/typescript-aix-ppc64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-darwin-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-darwin-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-freebsd-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-freebsd-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-arm@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-loong64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-mips64el@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-ppc64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-riscv64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-s390x@7.0.2':
+ optional: true
+
+ '@typescript/typescript-linux-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-netbsd-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-netbsd-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-openbsd-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-openbsd-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-sunos-x64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-win32-arm64@7.0.2':
+ optional: true
+
+ '@typescript/typescript-win32-x64@7.0.2':
+ optional: true
+
+ '@ungap/structured-clone@1.4.0': {}
+
+ '@vitejs/plugin-react@6.1.1(vite@8.2.2(@types/node@26.4.1)(jiti@2.7.0))':
+ dependencies:
+ '@rolldown/pluginutils': 1.0.1
+ vite: 8.2.2(@types/node@26.4.1)(jiti@2.7.0)
+
+ autoprefixer@10.5.4(postcss@8.5.26):
+ dependencies:
+ browserslist: 4.28.8
+ caniuse-lite: 1.0.30001810
+ fraction.js: 5.3.4
+ picocolors: 1.1.1
+ postcss: 8.5.26
+ postcss-value-parser: 4.2.0
+
+ bail@2.0.2: {}
+
+ baseline-browser-mapping@2.11.20: {}
+
+ browserslist@4.28.8:
+ dependencies:
+ baseline-browser-mapping: 2.11.20
+ caniuse-lite: 1.0.30001810
+ electron-to-chromium: 1.5.420
+ node-releases: 2.0.54
+ update-browserslist-db: 1.3.2(browserslist@4.28.8)
+
+ caniuse-lite@1.0.30001810: {}
+
+ ccount@2.0.1: {}
+
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
+ character-entities@2.0.2: {}
+
+ character-reference-invalid@2.0.1: {}
+
+ clsx@2.1.1: {}
+
+ comma-separated-tokens@2.0.3: {}
+
+ csstype@3.2.3: {}
+
+ date-fns@4.4.0: {}
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ decode-named-character-reference@1.3.0:
+ dependencies:
+ character-entities: 2.0.2
+
+ dequal@2.0.3: {}
+
+ detect-libc@2.1.2: {}
+
+ devlop@1.1.0:
+ dependencies:
+ dequal: 2.0.3
+
+ electron-to-chromium@1.5.420: {}
+
+ enhanced-resolve@5.24.5:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.3.3
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@5.0.0: {}
+
+ estree-util-is-identifier-name@3.0.0: {}
+
+ extend@3.0.2: {}
+
+ fdir@6.5.0(picomatch@4.0.7):
+ optionalDependencies:
+ picomatch: 4.0.7
+
+ fraction.js@5.3.4: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ graceful-fs@4.2.11: {}
+
+ hast-util-to-jsx-runtime@2.3.6:
+ dependencies:
+ '@types/estree': 1.0.9
+ '@types/hast': 3.0.5
+ '@types/unist': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1
+ mdast-util-mdx-jsx: 3.2.0
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 7.2.0
+ space-separated-tokens: 2.0.2
+ style-to-js: 1.1.21
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-whitespace@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.5
+
+ html-parse-stringify@4.0.1: {}
+
+ html-url-attributes@3.0.1: {}
+
+ i18next@26.4.1(typescript@7.0.2):
+ optionalDependencies:
+ typescript: 7.0.2
+
+ inline-style-parser@0.2.7: {}
+
+ is-alphabetical@2.0.1: {}
+
+ is-alphanumerical@2.0.1:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
+ is-decimal@2.0.1: {}
+
+ is-hexadecimal@2.0.1: {}
+
+ is-plain-obj@4.1.0: {}
+
+ jiti@2.7.0: {}
+
+ lightningcss-android-arm64@1.32.0:
+ optional: true
+
+ lightningcss-android-arm64@1.33.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-arm64@1.33.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.32.0:
+ optional: true
+
+ lightningcss-darwin-x64@1.33.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.32.0:
+ optional: true
+
+ lightningcss-freebsd-x64@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.33.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.33.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.33.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.32.0:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.33.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.32.0:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.33.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.32.0:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.33.0:
+ optional: true
+
+ lightningcss@1.32.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
+
+ lightningcss@1.33.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.33.0
+ lightningcss-darwin-arm64: 1.33.0
+ lightningcss-darwin-x64: 1.33.0
+ lightningcss-freebsd-x64: 1.33.0
+ lightningcss-linux-arm-gnueabihf: 1.33.0
+ lightningcss-linux-arm64-gnu: 1.33.0
+ lightningcss-linux-arm64-musl: 1.33.0
+ lightningcss-linux-x64-gnu: 1.33.0
+ lightningcss-linux-x64-musl: 1.33.0
+ lightningcss-win32-arm64-msvc: 1.33.0
+ lightningcss-win32-x64-msvc: 1.33.0
+
+ longest-streak@3.1.0: {}
+
+ lucide-react@1.39.0(react@19.2.8):
+ dependencies:
+ react: 19.2.8
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.6.0
+
+ markdown-table@3.0.4: {}
+
+ mdast-util-find-and-replace@3.0.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ escape-string-regexp: 5.0.0
+ unist-util-is: 6.0.1
+ unist-util-visit-parents: 6.0.2
+
+ mdast-util-from-markdown@2.0.3:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ mdast-util-to-string: 4.0.0
+ micromark: 4.0.2
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-decode-string: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ unist-util-stringify-position: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-autolink-literal@2.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-find-and-replace: 3.0.2
+ micromark-util-character: 2.1.1
+
+ mdast-util-gfm-footnote@2.1.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ micromark-util-normalize-identifier: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-strikethrough@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-table@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ markdown-table: 3.0.4
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm-task-list-item@2.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-gfm@3.1.0:
+ dependencies:
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-gfm-autolink-literal: 2.0.1
+ mdast-util-gfm-footnote: 2.1.0
+ mdast-util-gfm-strikethrough: 2.0.0
+ mdast-util-gfm-table: 2.0.0
+ mdast-util-gfm-task-list-item: 2.0.0
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-expression@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-jsx@3.2.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ parse-entities: 4.0.2
+ stringify-entities: 4.0.4
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdxjs-esm@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-phrasing@4.1.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ unist-util-is: 6.0.1
+
+ mdast-util-to-hast@13.2.1:
+ dependencies:
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ '@ungap/structured-clone': 1.4.0
+ devlop: 1.1.0
+ micromark-util-sanitize-uri: 2.0.1
+ trim-lines: 3.0.1
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.1.0
+ vfile: 6.0.3
+
+ mdast-util-to-markdown@2.1.2:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ longest-streak: 3.1.0
+ mdast-util-phrasing: 4.1.0
+ mdast-util-to-string: 4.0.0
+ micromark-util-classify-character: 2.0.1
+ micromark-util-decode-string: 2.0.1
+ unist-util-visit: 5.1.0
+ zwitch: 2.0.4
+
+ mdast-util-to-string@4.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+
+ micromark-core-commonmark@2.0.3:
+ dependencies:
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ micromark-factory-destination: 2.0.1
+ micromark-factory-label: 2.0.1
+ micromark-factory-space: 2.0.1
+ micromark-factory-title: 2.0.1
+ micromark-factory-whitespace: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-html-tag-name: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-autolink-literal@2.1.0:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-footnote@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-strikethrough@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-classify-character: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-table@2.1.1:
+ dependencies:
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-tagfilter@2.0.0:
+ dependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm-task-list-item@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-extension-gfm@3.0.0:
+ dependencies:
+ micromark-extension-gfm-autolink-literal: 2.1.0
+ micromark-extension-gfm-footnote: 2.1.0
+ micromark-extension-gfm-strikethrough: 2.1.0
+ micromark-extension-gfm-table: 2.1.1
+ micromark-extension-gfm-tagfilter: 2.0.0
+ micromark-extension-gfm-task-list-item: 2.1.0
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-destination@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-label@2.0.1:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-space@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-title@2.0.1:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-factory-whitespace@2.0.1:
+ dependencies:
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-character@2.1.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-chunked@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-classify-character@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-combine-extensions@2.0.1:
+ dependencies:
+ micromark-util-chunked: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-decode-numeric-character-reference@2.0.2:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-decode-string@2.0.1:
+ dependencies:
+ decode-named-character-reference: 1.3.0
+ micromark-util-character: 2.1.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-encode@2.0.1: {}
+
+ micromark-util-html-tag-name@2.0.1: {}
+
+ micromark-util-normalize-identifier@2.0.1:
+ dependencies:
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-resolve-all@2.0.1:
+ dependencies:
+ micromark-util-types: 2.0.2
+
+ micromark-util-sanitize-uri@2.0.1:
+ dependencies:
+ micromark-util-character: 2.1.1
+ micromark-util-encode: 2.0.1
+ micromark-util-symbol: 2.0.1
+
+ micromark-util-subtokenize@2.1.0:
+ dependencies:
+ devlop: 1.1.0
+ micromark-util-chunked: 2.0.1
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+
+ micromark-util-symbol@2.0.1: {}
+
+ micromark-util-types@2.0.2: {}
+
+ micromark@4.0.2:
+ dependencies:
+ '@types/debug': 4.1.13
+ debug: 4.4.3
+ decode-named-character-reference: 1.3.0
+ devlop: 1.1.0
+ micromark-core-commonmark: 2.0.3
+ micromark-factory-space: 2.0.1
+ micromark-util-character: 2.1.1
+ micromark-util-chunked: 2.0.1
+ micromark-util-combine-extensions: 2.0.1
+ micromark-util-decode-numeric-character-reference: 2.0.2
+ micromark-util-encode: 2.0.1
+ micromark-util-normalize-identifier: 2.0.1
+ micromark-util-resolve-all: 2.0.1
+ micromark-util-sanitize-uri: 2.0.1
+ micromark-util-subtokenize: 2.1.0
+ micromark-util-symbol: 2.0.1
+ micromark-util-types: 2.0.2
+ transitivePeerDependencies:
+ - supports-color
+
+ ms@2.1.3: {}
+
+ nanoid@3.3.18: {}
+
+ node-releases@2.0.54: {}
+
+ parse-entities@4.0.2:
+ dependencies:
+ '@types/unist': 2.0.11
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.3.0
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+
+ picocolors@1.1.1: {}
+
+ picomatch@4.0.7: {}
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.5.26:
+ dependencies:
+ nanoid: 3.3.18
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ property-information@7.2.0: {}
+
+ react-dom@19.2.8(react@19.2.8):
+ dependencies:
+ react: 19.2.8
+ scheduler: 0.27.0
+
+ react-i18next@17.0.13(i18next@26.4.1(typescript@7.0.2))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(typescript@7.0.2):
+ dependencies:
+ '@babel/runtime': 7.29.7
+ html-parse-stringify: 4.0.1
+ i18next: 26.4.1(typescript@7.0.2)
+ react: 19.2.8
+ use-sync-external-store: 1.6.0(react@19.2.8)
+ optionalDependencies:
+ react-dom: 19.2.8(react@19.2.8)
+ typescript: 7.0.2
+
+ react-markdown@10.1.0(@types/react@19.2.18)(react@19.2.8):
+ dependencies:
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ '@types/react': 19.2.18
+ devlop: 1.1.0
+ hast-util-to-jsx-runtime: 2.3.6
+ html-url-attributes: 3.0.1
+ mdast-util-to-hast: 13.2.1
+ react: 19.2.8
+ remark-parse: 11.0.0
+ remark-rehype: 11.1.2
+ unified: 11.0.5
+ unist-util-visit: 5.1.0
+ vfile: 6.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ react@19.2.8: {}
+
+ remark-gfm@4.0.1:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-gfm: 3.1.0
+ micromark-extension-gfm: 3.0.0
+ remark-parse: 11.0.0
+ remark-stringify: 11.0.0
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-parse@11.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-from-markdown: 2.0.3
+ micromark-util-types: 2.0.2
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - supports-color
+
+ remark-rehype@11.1.2:
+ dependencies:
+ '@types/hast': 3.0.5
+ '@types/mdast': 4.0.4
+ mdast-util-to-hast: 13.2.1
+ unified: 11.0.5
+ vfile: 6.0.3
+
+ remark-stringify@11.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-to-markdown: 2.1.2
+ unified: 11.0.5
+
+ rolldown@1.2.6:
+ dependencies:
+ '@oxc-project/types': 0.147.0
+ '@rolldown/pluginutils': 1.0.1
+ optionalDependencies:
+ '@rolldown/binding-android-arm-eabi': 1.2.6
+ '@rolldown/binding-android-arm64': 1.2.6
+ '@rolldown/binding-darwin-arm64': 1.2.6
+ '@rolldown/binding-darwin-x64': 1.2.6
+ '@rolldown/binding-freebsd-x64': 1.2.6
+ '@rolldown/binding-linux-arm-gnueabihf': 1.2.6
+ '@rolldown/binding-linux-arm64-gnu': 1.2.6
+ '@rolldown/binding-linux-arm64-musl': 1.2.6
+ '@rolldown/binding-linux-ppc64-gnu': 1.2.6
+ '@rolldown/binding-linux-s390x-gnu': 1.2.6
+ '@rolldown/binding-linux-x64-gnu': 1.2.6
+ '@rolldown/binding-linux-x64-musl': 1.2.6
+ '@rolldown/binding-openharmony-arm64': 1.2.6
+ '@rolldown/binding-win32-arm64-msvc': 1.2.6
+ '@rolldown/binding-win32-x64-msvc': 1.2.6
+
+ scheduler@0.27.0: {}
+
+ source-map-js@1.2.1: {}
+
+ space-separated-tokens@2.0.2: {}
+
+ stringify-entities@4.0.4:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
+ style-to-js@1.1.21:
+ dependencies:
+ style-to-object: 1.0.14
+
+ style-to-object@1.0.14:
+ dependencies:
+ inline-style-parser: 0.2.7
+
+ tailwind-merge@3.6.0: {}
+
+ tailwindcss@4.3.3: {}
+
+ tapable@2.3.3: {}
+
+ tinyglobby@0.2.17:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.7)
+ picomatch: 4.0.7
+
+ trim-lines@3.0.1: {}
+
+ trough@2.2.0: {}
+
+ typescript@7.0.2:
+ optionalDependencies:
+ '@typescript/typescript-aix-ppc64': 7.0.2
+ '@typescript/typescript-darwin-arm64': 7.0.2
+ '@typescript/typescript-darwin-x64': 7.0.2
+ '@typescript/typescript-freebsd-arm64': 7.0.2
+ '@typescript/typescript-freebsd-x64': 7.0.2
+ '@typescript/typescript-linux-arm': 7.0.2
+ '@typescript/typescript-linux-arm64': 7.0.2
+ '@typescript/typescript-linux-loong64': 7.0.2
+ '@typescript/typescript-linux-mips64el': 7.0.2
+ '@typescript/typescript-linux-ppc64': 7.0.2
+ '@typescript/typescript-linux-riscv64': 7.0.2
+ '@typescript/typescript-linux-s390x': 7.0.2
+ '@typescript/typescript-linux-x64': 7.0.2
+ '@typescript/typescript-netbsd-arm64': 7.0.2
+ '@typescript/typescript-netbsd-x64': 7.0.2
+ '@typescript/typescript-openbsd-arm64': 7.0.2
+ '@typescript/typescript-openbsd-x64': 7.0.2
+ '@typescript/typescript-sunos-x64': 7.0.2
+ '@typescript/typescript-win32-arm64': 7.0.2
+ '@typescript/typescript-win32-x64': 7.0.2
+
+ undici-types@8.3.0: {}
+
+ unified@11.0.5:
+ dependencies:
+ '@types/unist': 3.0.3
+ bail: 2.0.2
+ devlop: 1.1.0
+ extend: 3.0.2
+ is-plain-obj: 4.1.0
+ trough: 2.2.0
+ vfile: 6.0.3
+
+ unist-util-is@6.0.1:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-position@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-stringify-position@4.0.0:
+ dependencies:
+ '@types/unist': 3.0.3
+
+ unist-util-visit-parents@6.0.2:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.1
+
+ unist-util-visit@5.1.0:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-is: 6.0.1
+ unist-util-visit-parents: 6.0.2
+
+ update-browserslist-db@1.3.2(browserslist@4.28.8):
+ dependencies:
+ browserslist: 4.28.8
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ use-sync-external-store@1.6.0(react@19.2.8):
+ dependencies:
+ react: 19.2.8
+
+ vfile-message@4.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ unist-util-stringify-position: 4.0.0
+
+ vfile@6.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile-message: 4.0.3
+
+ vite@8.2.2(@types/node@26.4.1)(jiti@2.7.0):
+ dependencies:
+ lightningcss: 1.33.0
+ picomatch: 4.0.7
+ postcss: 8.5.26
+ rolldown: 1.2.6
+ tinyglobby: 0.2.17
+ optionalDependencies:
+ '@types/node': 26.4.1
+ fsevents: 2.3.3
+ jiti: 2.7.0
+
+ zustand@5.0.15(@types/react@19.2.18)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8)):
+ optionalDependencies:
+ '@types/react': 19.2.18
+ react: 19.2.8
+ use-sync-external-store: 1.6.0(react@19.2.8)
+
+ zwitch@2.0.4: {}
diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore
new file mode 100644
index 0000000..502406b
--- /dev/null
+++ b/src-tauri/.gitignore
@@ -0,0 +1,4 @@
+# Generated by Cargo
+# will have compiled files and executables
+/target/
+/gen/schemas
diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock
new file mode 100644
index 0000000..05c3439
--- /dev/null
+++ b/src-tauri/Cargo.lock
@@ -0,0 +1,5203 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "adler2"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "alloc-no-stdlib"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3"
+
+[[package]]
+name = "alloc-stdlib"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195"
+dependencies = [
+ "alloc-no-stdlib",
+]
+
+[[package]]
+name = "android_log-sys"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84521a3cf562bc62942e294181d9eef17eb38ceb8c68677bc49f144e4c3d4f8d"
+
+[[package]]
+name = "android_logger"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbb4e440d04be07da1f1bf44fb4495ebd58669372fe0cffa6e48595ac5bd88a3"
+dependencies = [
+ "android_log-sys",
+ "env_filter",
+ "log",
+]
+
+[[package]]
+name = "android_system_properties"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "anyhow"
+version = "1.0.104"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470"
+
+[[package]]
+name = "async-broadcast"
+version = "0.7.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
+dependencies = [
+ "event-listener",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-channel"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
+dependencies = [
+ "concurrent-queue",
+ "event-listener-strategy",
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-executor"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a"
+dependencies = [
+ "async-task",
+ "concurrent-queue",
+ "fastrand",
+ "futures-lite",
+ "pin-project-lite",
+ "slab",
+]
+
+[[package]]
+name = "async-io"
+version = "2.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
+dependencies = [
+ "autocfg",
+ "cfg-if",
+ "concurrent-queue",
+ "futures-io",
+ "futures-lite",
+ "parking",
+ "polling",
+ "rustix",
+ "slab",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "async-lock"
+version = "3.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311"
+dependencies = [
+ "event-listener",
+ "event-listener-strategy",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "async-process"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
+dependencies = [
+ "async-channel",
+ "async-io",
+ "async-lock",
+ "async-signal",
+ "async-task",
+ "blocking",
+ "cfg-if",
+ "event-listener",
+ "futures-lite",
+ "rustix",
+]
+
+[[package]]
+name = "async-recursion"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "async-signal"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485"
+dependencies = [
+ "async-io",
+ "async-lock",
+ "atomic-waker",
+ "cfg-if",
+ "futures-core",
+ "futures-io",
+ "rustix",
+ "signal-hook-registry",
+ "slab",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "async-task"
+version = "4.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
+
+[[package]]
+name = "async-trait"
+version = "0.1.92"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "atk"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b"
+dependencies = [
+ "atk-sys",
+ "glib",
+ "libc",
+]
+
+[[package]]
+name = "atk-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "atomic-waker"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+
+[[package]]
+name = "auto-launch"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f012b8cc0c850f34117ec8252a44418f2e34a2cf501de89e29b241ae5f79471"
+dependencies = [
+ "dirs 4.0.0",
+ "thiserror 1.0.69",
+ "winreg 0.10.1",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
+
+[[package]]
+name = "base64"
+version = "0.21.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "bit-set"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
+dependencies = [
+ "bit-vec",
+]
+
+[[package]]
+name = "bit-vec"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
+
+[[package]]
+name = "bitflags"
+version = "1.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+
+[[package]]
+name = "bitflags"
+version = "2.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
+name = "block2"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
+dependencies = [
+ "objc2",
+]
+
+[[package]]
+name = "blocking"
+version = "1.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a70e4329df6cb94385eed412ec92375c3cdd8a6e502493d1229b6414e4036dfa"
+dependencies = [
+ "async-channel",
+ "async-task",
+ "futures-io",
+ "futures-lite",
+ "piper",
+]
+
+[[package]]
+name = "brotli"
+version = "8.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+ "brotli-decompressor",
+]
+
+[[package]]
+name = "brotli-decompressor"
+version = "5.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583"
+dependencies = [
+ "alloc-no-stdlib",
+ "alloc-stdlib",
+]
+
+[[package]]
+name = "bs58"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
+dependencies = [
+ "tinyvec",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.20.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
+
+[[package]]
+name = "bytemuck"
+version = "1.25.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "byteorder-lite"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
+
+[[package]]
+name = "bytes"
+version = "1.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cairo-rs"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2"
+dependencies = [
+ "bitflags 2.13.1",
+ "cairo-sys-rs",
+ "glib",
+ "libc",
+ "once_cell",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "cairo-sys-rs"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "camino"
+version = "1.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb1307f12aa967b5a58416e87b3653360e0fd614a016b6e970db08fecbb1b80d"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "cargo-platform"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.19.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
+dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.20",
+]
+
+[[package]]
+name = "cargo_toml"
+version = "0.22.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77"
+dependencies = [
+ "serde",
+ "toml 0.9.12+spec-1.1.0",
+]
+
+[[package]]
+name = "cc"
+version = "1.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273"
+dependencies = [
+ "find-msvc-tools",
+ "shlex",
+]
+
+[[package]]
+name = "cesu8"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
+
+[[package]]
+name = "cfb"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f"
+dependencies = [
+ "byteorder",
+ "fnv",
+ "uuid",
+]
+
+[[package]]
+name = "cfg-expr"
+version = "0.15.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02"
+dependencies = [
+ "smallvec",
+ "target-lexicon",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+
+[[package]]
+name = "chrono"
+version = "0.4.45"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
+dependencies = [
+ "iana-time-zone",
+ "js-sys",
+ "num-traits",
+ "serde",
+ "wasm-bindgen",
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "combine"
+version = "4.6.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e"
+dependencies = [
+ "bytes",
+ "memchr",
+]
+
+[[package]]
+name = "concurrent-queue"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "cookie"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a373e3602691c3cdea496d2f0ee5935151e6168fe87739483c463db1b2f2f87"
+dependencies = [
+ "time",
+ "version_check",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "core-graphics"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97"
+dependencies = [
+ "bitflags 2.13.1",
+ "core-foundation",
+ "core-graphics-types",
+ "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "core-graphics-types"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
+dependencies = [
+ "bitflags 2.13.1",
+ "core-foundation",
+ "libc",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "crc32fast"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
+
+[[package]]
+name = "crypto-common"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
+dependencies = [
+ "generic-array",
+ "typenum",
+]
+
+[[package]]
+name = "cssparser"
+version = "0.36.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2"
+dependencies = [
+ "cssparser-macros",
+ "dtoa-short",
+ "itoa",
+ "phf",
+ "smallvec",
+]
+
+[[package]]
+name = "cssparser-macros"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331"
+dependencies = [
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "ctor"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "352d39c2f7bef1d6ad73db6f5160efcaed66d94ef8c6c573a8410c00bf909a98"
+dependencies = [
+ "ctor-proc-macro",
+ "dtor",
+]
+
+[[package]]
+name = "ctor-proc-macro"
+version = "0.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52560adf09603e58c9a7ee1fe1dcb95a16927b17c127f0ac02d6e768a0e25bc1"
+
+[[package]]
+name = "darling"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
+dependencies = [
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "dbus"
+version = "0.9.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ab69f03cc8c4340c9c8e315114e1658e6775a9b16a04357973aa21cec22b32e"
+dependencies = [
+ "libc",
+ "libdbus-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "defmt"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1"
+dependencies = [
+ "bitflags 1.3.2",
+ "defmt-macros",
+]
+
+[[package]]
+name = "defmt-macros"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8"
+dependencies = [
+ "defmt-parser",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "defmt-parser"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e"
+dependencies = [
+ "thiserror 2.0.20",
+]
+
+[[package]]
+name = "deranged"
+version = "0.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "derive_more"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
+dependencies = [
+ "derive_more-impl",
+]
+
+[[package]]
+name = "derive_more-impl"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "digest"
+version = "0.10.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+dependencies = [
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "dirs"
+version = "4.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
+dependencies = [
+ "dirs-sys 0.3.7",
+]
+
+[[package]]
+name = "dirs"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
+dependencies = [
+ "dirs-sys 0.5.0",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+dependencies = [
+ "libc",
+ "redox_users 0.4.6",
+ "winapi",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users 0.5.2",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "dispatch2"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
+dependencies = [
+ "bitflags 2.13.1",
+ "block2",
+ "libc",
+ "objc2",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "dlopen2"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4"
+dependencies = [
+ "dlopen2_derive",
+ "libc",
+ "once_cell",
+ "winapi",
+]
+
+[[package]]
+name = "dlopen2_derive"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "dom_query"
+version = "0.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89"
+dependencies = [
+ "bit-set",
+ "cssparser",
+ "foldhash",
+ "html5ever",
+ "precomputed-hash",
+ "selectors",
+ "tendril",
+]
+
+[[package]]
+name = "dpi"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "dtoa"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590"
+
+[[package]]
+name = "dtoa-short"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87"
+dependencies = [
+ "dtoa",
+]
+
+[[package]]
+name = "dtor"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f1057d6c64987086ff8ed0fd3fbf377a6b7d205cc7715868cd401705f715cbe4"
+dependencies = [
+ "dtor-proc-macro",
+]
+
+[[package]]
+name = "dtor-proc-macro"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f678cf4a922c215c63e0de95eb1ff08a958a81d47e485cf9da1e27bf6305cfa5"
+
+[[package]]
+name = "dunce"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
+
+[[package]]
+name = "dyn-clone"
+version = "1.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
+
+[[package]]
+name = "embed-resource"
+version = "3.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd"
+dependencies = [
+ "cc",
+ "memchr",
+ "rustc_version",
+ "toml 1.1.5+spec-1.1.0",
+ "vswhom",
+ "winreg 0.55.0",
+]
+
+[[package]]
+name = "embed_plist"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7"
+
+[[package]]
+name = "endi"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099"
+
+[[package]]
+name = "enumflags2"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef"
+dependencies = [
+ "enumflags2_derive",
+ "serde",
+]
+
+[[package]]
+name = "enumflags2_derive"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "env_filter"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2"
+dependencies = [
+ "log",
+ "regex",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "erased-serde"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec"
+dependencies = [
+ "serde",
+ "serde_core",
+ "typeid",
+]
+
+[[package]]
+name = "errno"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "event-listener"
+version = "5.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2"
+dependencies = [
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "event-listener-strategy"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
+dependencies = [
+ "event-listener",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"
+
+[[package]]
+name = "fdeflate"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
+dependencies = [
+ "simd-adler32",
+]
+
+[[package]]
+name = "fern"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4316185f709b23713e41e3195f90edef7fb00c3ed4adc79769cf09cc762a3b29"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "field-offset"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f"
+dependencies = [
+ "memoffset",
+ "rustc_version",
+]
+
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890"
+
+[[package]]
+name = "flate2"
+version = "1.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e634e2e0ebac1ee034020da1ca582e17ffe4e0f5e985823721e168928136dcb"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide 0.9.1",
+ "zlib-rs",
+]
+
+[[package]]
+name = "floatick"
+version = "1.0.0"
+dependencies = [
+ "chrono",
+ "dirs 6.0.0",
+ "log",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-build",
+ "tauri-plugin-autostart",
+ "tauri-plugin-log",
+ "tauri-plugin-opener",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foldhash"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
+
+[[package]]
+name = "foreign-types"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
+dependencies = [
+ "foreign-types-macros",
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-macros"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea5190182e6915eb873ddbc16e23b711b6eb1f9c00a0d0a3a91b5f6228475225"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "futures-channel"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e"
+
+[[package]]
+name = "futures-executor"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432"
+dependencies = [
+ "futures-core",
+ "futures-task",
+ "futures-util",
+]
+
+[[package]]
+name = "futures-io"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed"
+
+[[package]]
+name = "futures-lite"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
+dependencies = [
+ "fastrand",
+ "futures-core",
+ "futures-io",
+ "parking",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "futures-macro"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "futures-sink"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d"
+
+[[package]]
+name = "futures-task"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd"
+
+[[package]]
+name = "futures-util"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc"
+dependencies = [
+ "futures-core",
+ "futures-io",
+ "futures-macro",
+ "futures-sink",
+ "futures-task",
+ "memchr",
+ "pin-project-lite",
+ "slab",
+]
+
+[[package]]
+name = "gdk"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691"
+dependencies = [
+ "cairo-rs",
+ "gdk-pixbuf",
+ "gdk-sys",
+ "gio",
+ "glib",
+ "libc",
+ "pango",
+]
+
+[[package]]
+name = "gdk-pixbuf"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec"
+dependencies = [
+ "gdk-pixbuf-sys",
+ "gio",
+ "glib",
+ "libc",
+ "once_cell",
+]
+
+[[package]]
+name = "gdk-pixbuf-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gdk-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7"
+dependencies = [
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gdkwayland-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69"
+dependencies = [
+ "gdk-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pkg-config",
+ "system-deps",
+]
+
+[[package]]
+name = "gdkx11"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe"
+dependencies = [
+ "gdk",
+ "gdkx11-sys",
+ "gio",
+ "glib",
+ "libc",
+ "x11",
+]
+
+[[package]]
+name = "gdkx11-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d"
+dependencies = [
+ "gdk-sys",
+ "glib-sys",
+ "libc",
+ "system-deps",
+ "x11",
+]
+
+[[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi 5.3.0",
+ "wasip2",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi 6.0.0",
+]
+
+[[package]]
+name = "gio"
+version = "0.18.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73"
+dependencies = [
+ "futures-channel",
+ "futures-core",
+ "futures-io",
+ "futures-util",
+ "gio-sys",
+ "glib",
+ "libc",
+ "once_cell",
+ "pin-project-lite",
+ "smallvec",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "gio-sys"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+ "winapi",
+]
+
+[[package]]
+name = "glib"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5"
+dependencies = [
+ "bitflags 2.13.1",
+ "futures-channel",
+ "futures-core",
+ "futures-executor",
+ "futures-task",
+ "futures-util",
+ "gio-sys",
+ "glib-macros",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "memchr",
+ "once_cell",
+ "smallvec",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "glib-macros"
+version = "0.18.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc"
+dependencies = [
+ "heck 0.4.1",
+ "proc-macro-crate 2.0.2",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "glib-sys"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898"
+dependencies = [
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "glob"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b"
+
+[[package]]
+name = "gobject-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44"
+dependencies = [
+ "glib-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a"
+dependencies = [
+ "atk",
+ "cairo-rs",
+ "field-offset",
+ "futures-channel",
+ "gdk",
+ "gdk-pixbuf",
+ "gio",
+ "glib",
+ "gtk-sys",
+ "gtk3-macros",
+ "libc",
+ "pango",
+ "pkg-config",
+]
+
+[[package]]
+name = "gtk-sys"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414"
+dependencies = [
+ "atk-sys",
+ "cairo-sys-rs",
+ "gdk-pixbuf-sys",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "pango-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "gtk3-macros"
+version = "0.18.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d"
+dependencies = [
+ "proc-macro-crate 1.3.1",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+
+[[package]]
+name = "hashbrown"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
+
+[[package]]
+name = "heck"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+
+[[package]]
+name = "heck"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
+
+[[package]]
+name = "hermit-abi"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e17592d60ebacc7d5e169f4663c5f84f9161cc90328abcfe8456f41e4dfcb284"
+
+[[package]]
+name = "hex"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+
+[[package]]
+name = "html5ever"
+version = "0.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2"
+dependencies = [
+ "log",
+ "markup5ever",
+]
+
+[[package]]
+name = "http"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0"
+dependencies = [
+ "bytes",
+ "itoa",
+]
+
+[[package]]
+name = "http-body"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c"
+dependencies = [
+ "bytes",
+ "http",
+]
+
+[[package]]
+name = "http-body-util"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "http",
+ "http-body",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "httparse"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
+
+[[package]]
+name = "hyper"
+version = "1.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "27b501faa50e7a26c3d3560ca625132f4078a17771f4810baf70475ae48cbe43"
+dependencies = [
+ "atomic-waker",
+ "bytes",
+ "futures-channel",
+ "futures-core",
+ "http",
+ "http-body",
+ "httparse",
+ "itoa",
+ "pin-project-lite",
+ "smallvec",
+ "tokio",
+ "want",
+]
+
+[[package]]
+name = "hyper-util"
+version = "0.1.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
+dependencies = [
+ "base64 0.22.1",
+ "bytes",
+ "futures-channel",
+ "futures-util",
+ "http",
+ "http-body",
+ "hyper",
+ "ipnet",
+ "libc",
+ "percent-encoding",
+ "pin-project-lite",
+ "socket2",
+ "tokio",
+ "tower-service",
+ "tracing",
+]
+
+[[package]]
+name = "iana-time-zone"
+version = "0.1.65"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
+dependencies = [
+ "android_system_properties",
+ "core-foundation-sys",
+ "iana-time-zone-haiku",
+ "js-sys",
+ "log",
+ "wasm-bindgen",
+ "windows-core 0.62.2",
+]
+
+[[package]]
+name = "iana-time-zone-haiku"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "ico"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371"
+dependencies = [
+ "byteorder",
+ "png 0.17.16",
+]
+
+[[package]]
+name = "icu_collections"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "utf8_iter",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f"
+dependencies = [
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0"
+
+[[package]]
+name = "icu_properties"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa"
+
+[[package]]
+name = "icu_provider"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "image"
+version = "0.25.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
+dependencies = [
+ "bytemuck",
+ "byteorder-lite",
+ "moxcms",
+ "num-traits",
+ "png 0.18.1",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+dependencies = [
+ "autocfg",
+ "hashbrown 0.12.3",
+ "serde",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.17.1",
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "infer"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7"
+dependencies = [
+ "cfb",
+]
+
+[[package]]
+name = "ipnet"
+version = "2.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a756c3fac73139e83f14c2d742155dd2b78d3ee56597b419a0579b7bdd6dd78"
+
+[[package]]
+name = "is-docker"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "is-wsl"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
+dependencies = [
+ "is-docker",
+ "once_cell",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
+
+[[package]]
+name = "javascriptcore-rs"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc"
+dependencies = [
+ "bitflags 1.3.2",
+ "glib",
+ "javascriptcore-rs-sys",
+]
+
+[[package]]
+name = "javascriptcore-rs-sys"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "jiff"
+version = "0.2.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "668b7183bd07af9a4885f5c35b0cc5c83c4607a913c16b7e17291832910d2dcc"
+dependencies = [
+ "defmt",
+ "jiff-core",
+ "jiff-static",
+ "jiff-tzdb-platform",
+ "log",
+ "portable-atomic",
+ "portable-atomic-util",
+ "serde_core",
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "jiff-core"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7feca88439efe53da3754500c1851dedf3cb36c524dd5cf8225cc0794de95d09"
+dependencies = [
+ "defmt",
+]
+
+[[package]]
+name = "jiff-static"
+version = "0.2.35"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a69dcb3a21cfb32ce1cd056169337ca284af0766dd766e7878819b251a49204"
+dependencies = [
+ "jiff-core",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "jiff-tzdb"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e"
+
+[[package]]
+name = "jiff-tzdb-platform"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8"
+dependencies = [
+ "jiff-tzdb",
+]
+
+[[package]]
+name = "jni"
+version = "0.21.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
+dependencies = [
+ "cesu8",
+ "cfg-if",
+ "combine",
+ "jni-sys 0.3.1",
+ "log",
+ "thiserror 1.0.69",
+ "walkdir",
+ "windows-sys 0.45.0",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
+dependencies = [
+ "jni-sys 0.4.1",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"
+dependencies = [
+ "jni-sys-macros",
+]
+
+[[package]]
+name = "jni-sys-macros"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
+dependencies = [
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.104"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a"
+dependencies = [
+ "cfg-if",
+ "futures-util",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "json-patch"
+version = "3.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08"
+dependencies = [
+ "jsonptr",
+ "serde",
+ "serde_json",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "jsonptr"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "keyboard-types"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a"
+dependencies = [
+ "bitflags 2.13.1",
+ "serde",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "libappindicator"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a"
+dependencies = [
+ "glib",
+ "gtk",
+ "gtk-sys",
+ "libappindicator-sys",
+ "log",
+]
+
+[[package]]
+name = "libappindicator-sys"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf"
+dependencies = [
+ "gtk-sys",
+ "libloading",
+ "once_cell",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.189"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
+
+[[package]]
+name = "libdbus-sys"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043"
+dependencies = [
+ "pkg-config",
+]
+
+[[package]]
+name = "libloading"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+dependencies = [
+ "cfg-if",
+ "winapi",
+]
+
+[[package]]
+name = "libredox"
+version = "0.1.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d8f1ea3f21fd3405dcaf6c9b5c1630af9afc422d9073ea39c5f6d6c772e08ed"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
+
+[[package]]
+name = "litemap"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae"
+
+[[package]]
+name = "lock_api"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
+dependencies = [
+ "scopeguard",
+]
+
+[[package]]
+name = "log"
+version = "0.4.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6"
+
+[[package]]
+name = "markup5ever"
+version = "0.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862"
+dependencies = [
+ "log",
+ "tendril",
+ "web_atoms",
+]
+
+[[package]]
+name = "memchr"
+version = "2.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
+
+[[package]]
+name = "memoffset"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "mime"
+version = "0.3.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
+dependencies = [
+ "adler2",
+ "simd-adler32",
+]
+
+[[package]]
+name = "miniz_oxide"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b63fbc4a50860e98e7b2aa7804ded1db5cbc3aff9193adaff57a6931bf7c4b4c"
+dependencies = [
+ "adler2",
+ "simd-adler32",
+]
+
+[[package]]
+name = "mio"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4b18443e9c262bfe8fa82f51666e2642c53393f7e5c27b3e1aeab922cff5b9d8"
+dependencies = [
+ "libc",
+ "wasi",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "moxcms"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
+dependencies = [
+ "num-traits",
+ "pxfm",
+]
+
+[[package]]
+name = "muda"
+version = "0.19.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1dd04e60bc0b07438a6771710ee1698f98f6ebbc7f89b61264af1563b8aeb878"
+dependencies = [
+ "crossbeam-channel",
+ "dpi",
+ "gtk",
+ "keyboard-types",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "once_cell",
+ "png 0.18.1",
+ "serde",
+ "thiserror 2.0.20",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "ndk"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
+dependencies = [
+ "bitflags 2.13.1",
+ "jni-sys 0.3.1",
+ "log",
+ "ndk-sys",
+ "num_enum",
+ "raw-window-handle",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "ndk-sys"
+version = "0.6.0+11769913"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873"
+dependencies = [
+ "jni-sys 0.3.1",
+]
+
+[[package]]
+name = "new_debug_unreachable"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
+
+[[package]]
+name = "num-conv"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26"
+dependencies = [
+ "num_enum_derive",
+ "rustversion",
+]
+
+[[package]]
+name = "num_enum_derive"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8"
+dependencies = [
+ "proc-macro-crate 3.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "num_threads"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "objc2"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
+dependencies = [
+ "objc2-encode",
+ "objc2-exception-helper",
+]
+
+[[package]]
+name = "objc2-app-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
+dependencies = [
+ "bitflags 2.13.1",
+ "block2",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-cloud-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73ad74d880bb43877038da939b7427bba67e9dd42004a18b809ba7d87cee241c"
+dependencies = [
+ "bitflags 2.13.1",
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-core-data"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b402a653efbb5e82ce4df10683b6b28027616a2715e90009947d50b8dd298fa"
+dependencies = [
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-core-foundation"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
+dependencies = [
+ "bitflags 2.13.1",
+ "dispatch2",
+ "objc2",
+]
+
+[[package]]
+name = "objc2-core-graphics"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
+dependencies = [
+ "bitflags 2.13.1",
+ "dispatch2",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-io-surface",
+]
+
+[[package]]
+name = "objc2-core-image"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5d563b38d2b97209f8e861173de434bd0214cf020e3423a52624cd1d989f006"
+dependencies = [
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-core-location"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ca347214e24bc973fc025fd0d36ebb179ff30536ed1f80252706db19ee452009"
+dependencies = [
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-core-text"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cde0dfb48d25d2b4862161a4d5fcc0e3c24367869ad306b0c9ec0073bfed92d"
+dependencies = [
+ "bitflags 2.13.1",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+]
+
+[[package]]
+name = "objc2-encode"
+version = "4.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
+
+[[package]]
+name = "objc2-exception-helper"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "objc2-foundation"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
+dependencies = [
+ "bitflags 2.13.1",
+ "block2",
+ "objc2",
+ "objc2-core-foundation",
+]
+
+[[package]]
+name = "objc2-io-surface"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
+dependencies = [
+ "bitflags 2.13.1",
+ "objc2",
+ "objc2-core-foundation",
+]
+
+[[package]]
+name = "objc2-quartz-core"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
+dependencies = [
+ "bitflags 2.13.1",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-ui-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
+dependencies = [
+ "bitflags 2.13.1",
+ "block2",
+ "objc2",
+ "objc2-cloud-kit",
+ "objc2-core-data",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+ "objc2-core-image",
+ "objc2-core-location",
+ "objc2-core-text",
+ "objc2-foundation",
+ "objc2-quartz-core",
+ "objc2-user-notifications",
+]
+
+[[package]]
+name = "objc2-user-notifications"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9df9128cbbfef73cda168416ccf7f837b62737d748333bfe9ab71c245d76613e"
+dependencies = [
+ "objc2",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "objc2-web-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f"
+dependencies = [
+ "bitflags 2.13.1",
+ "block2",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
+
+[[package]]
+name = "open"
+version = "5.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c603ab8300cf18bc3b14146b19fe3dfcc4843ae5a400cd0e7a30b95aa366634"
+dependencies = [
+ "dunce",
+ "is-wsl",
+ "libc",
+]
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "ordered-stream"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
+dependencies = [
+ "futures-core",
+ "pin-project-lite",
+]
+
+[[package]]
+name = "pango"
+version = "0.18.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4"
+dependencies = [
+ "gio",
+ "glib",
+ "libc",
+ "once_cell",
+ "pango-sys",
+]
+
+[[package]]
+name = "pango-sys"
+version = "0.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5"
+dependencies = [
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "parking"
+version = "2.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
+
+[[package]]
+name = "parking_lot"
+version = "0.12.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
+dependencies = [
+ "lock_api",
+ "parking_lot_core",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.9.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "redox_syscall",
+ "smallvec",
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "phf"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
+dependencies = [
+ "phf_macros",
+ "phf_shared",
+ "serde",
+]
+
+[[package]]
+name = "phf_codegen"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_generator"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
+dependencies = [
+ "fastrand",
+ "phf_shared",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "phf_shared"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
+dependencies = [
+ "siphasher",
+]
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
+
+[[package]]
+name = "piper"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1"
+dependencies = [
+ "atomic-waker",
+ "fastrand",
+ "futures-io",
+]
+
+[[package]]
+name = "pkg-config"
+version = "0.3.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548"
+
+[[package]]
+name = "plist"
+version = "1.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da1d65da6dd5d1e44199ac0f58712d241c0f439f80adea8924d832384087f85"
+dependencies = [
+ "base64 0.22.1",
+ "indexmap 2.14.1",
+ "quick-xml",
+ "serde",
+ "time",
+]
+
+[[package]]
+name = "png"
+version = "0.17.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
+dependencies = [
+ "bitflags 1.3.2",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide 0.8.9",
+]
+
+[[package]]
+name = "png"
+version = "0.18.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
+dependencies = [
+ "bitflags 2.13.1",
+ "crc32fast",
+ "fdeflate",
+ "flate2",
+ "miniz_oxide 0.8.9",
+]
+
+[[package]]
+name = "polling"
+version = "3.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
+dependencies = [
+ "cfg-if",
+ "concurrent-queue",
+ "hermit-abi",
+ "pin-project-lite",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "portable-atomic"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
+
+[[package]]
+name = "portable-atomic-util"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
+dependencies = [
+ "portable-atomic",
+]
+
+[[package]]
+name = "potential_utf"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "precomputed-hash"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
+
+[[package]]
+name = "proc-macro-crate"
+version = "1.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+dependencies = [
+ "once_cell",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24"
+dependencies = [
+ "toml_datetime 0.6.3",
+ "toml_edit 0.20.2",
+]
+
+[[package]]
+name = "proc-macro-crate"
+version = "3.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
+dependencies = [
+ "toml_edit 0.25.13+spec-1.1.0",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.107"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "pxfm"
+version = "0.1.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea"
+
+[[package]]
+name = "quick-xml"
+version = "0.41.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.47"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+
+[[package]]
+name = "r-efi"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
+
+[[package]]
+name = "raw-window-handle"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
+
+[[package]]
+name = "redox_syscall"
+version = "0.5.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
+dependencies = [
+ "bitflags 2.13.1",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43"
+dependencies = [
+ "getrandom 0.2.17",
+ "libredox",
+ "thiserror 1.0.69",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
+dependencies = [
+ "getrandom 0.2.17",
+ "libredox",
+ "thiserror 2.0.20",
+]
+
+[[package]]
+name = "ref-cast"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3"
+dependencies = [
+ "ref-cast-impl",
+]
+
+[[package]]
+name = "ref-cast-impl"
+version = "1.0.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "regex"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
+
+[[package]]
+name = "reqwest"
+version = "0.13.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"
+dependencies = [
+ "base64 0.22.1",
+ "bytes",
+ "futures-core",
+ "futures-util",
+ "http",
+ "http-body",
+ "http-body-util",
+ "hyper",
+ "hyper-util",
+ "js-sys",
+ "log",
+ "percent-encoding",
+ "pin-project-lite",
+ "serde",
+ "serde_json",
+ "sync_wrapper",
+ "tokio",
+ "tokio-util",
+ "tower",
+ "tower-http",
+ "tower-service",
+ "url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "wasm-streams",
+ "web-sys",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "2.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
+
+[[package]]
+name = "rustix"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
+dependencies = [
+ "bitflags 2.13.1",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
+
+[[package]]
+name = "same-file"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "schemars"
+version = "0.8.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615"
+dependencies = [
+ "dyn-clone",
+ "indexmap 1.9.3",
+ "schemars_derive",
+ "serde",
+ "serde_json",
+ "url",
+ "uuid",
+]
+
+[[package]]
+name = "schemars"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "687274d293b6cdc6e73e0fee520bf2049650090d7164f87672d212a3c530cf4a"
+dependencies = [
+ "dyn-clone",
+ "ref-cast",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "schemars_derive"
+version = "0.8.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde_derive_internals",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "scopeguard"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+
+[[package]]
+name = "selectors"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c"
+dependencies = [
+ "bitflags 2.13.1",
+ "cssparser",
+ "derive_more",
+ "log",
+ "new_debug_unreachable",
+ "phf",
+ "phf_codegen",
+ "precomputed-hash",
+ "rustc-hash",
+ "servo_arc",
+ "smallvec",
+]
+
+[[package]]
+name = "semver"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
+dependencies = [
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.229"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
+dependencies = [
+ "serde_core",
+ "serde_derive",
+]
+
+[[package]]
+name = "serde-untagged"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058"
+dependencies = [
+ "erased-serde",
+ "serde",
+ "serde_core",
+ "typeid",
+]
+
+[[package]]
+name = "serde_core"
+version = "1.0.229"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.229"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "serde_derive_internals"
+version = "0.29.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.151"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
+dependencies = [
+ "itoa",
+ "memchr",
+ "serde",
+ "serde_core",
+ "zmij",
+]
+
+[[package]]
+name = "serde_repr"
+version = "0.1.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "serde_spanned"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "serde_with"
+version = "3.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee78f1fbe43ac4a0e47aadb3dbd357b69eb0d3793e948624cd03dd2750ab1c0a"
+dependencies = [
+ "base64 0.22.1",
+ "bs58",
+ "chrono",
+ "hex",
+ "indexmap 1.9.3",
+ "indexmap 2.14.1",
+ "jiff",
+ "schemars 0.9.0",
+ "schemars 1.2.2",
+ "serde_core",
+ "serde_json",
+ "serde_with_macros",
+ "time",
+]
+
+[[package]]
+name = "serde_with_macros"
+version = "3.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8705578779c2b6bd90d84d66eb2e206b708b1a4d7b9f17641b293545bf1c7e46"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "serialize-to-javascript"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5"
+dependencies = [
+ "serde",
+ "serde_json",
+ "serialize-to-javascript-impl",
+]
+
+[[package]]
+name = "serialize-to-javascript-impl"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "servo_arc"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930"
+dependencies = [
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "sha2"
+version = "0.10.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
+name = "shlex"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
+
+[[package]]
+name = "signal-hook-registry"
+version = "1.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
+dependencies = [
+ "errno",
+ "libc",
+]
+
+[[package]]
+name = "simd-adler32"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea"
+
+[[package]]
+name = "siphasher"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
+
+[[package]]
+name = "slab"
+version = "0.4.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
+
+[[package]]
+name = "smallvec"
+version = "1.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9be42f50aa861c555654aa3a37f52f4b1074bacf4e48fe0ef7fa584e80f1f0f"
+
+[[package]]
+name = "socket2"
+version = "0.6.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "softbuffer"
+version = "0.4.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3"
+dependencies = [
+ "bytemuck",
+ "js-sys",
+ "ndk",
+ "objc2",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+ "objc2-foundation",
+ "objc2-quartz-core",
+ "raw-window-handle",
+ "redox_syscall",
+ "tracing",
+ "wasm-bindgen",
+ "web-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "soup3"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f"
+dependencies = [
+ "futures-channel",
+ "gio",
+ "glib",
+ "libc",
+ "soup3-sys",
+]
+
+[[package]]
+name = "soup3-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27"
+dependencies = [
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "libc",
+ "system-deps",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+
+[[package]]
+name = "string_cache"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901"
+dependencies = [
+ "new_debug_unreachable",
+ "parking_lot",
+ "phf_shared",
+ "precomputed-hash",
+]
+
+[[package]]
+name = "string_cache_codegen"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69"
+dependencies = [
+ "phf_generator",
+ "phf_shared",
+ "proc-macro2",
+ "quote",
+]
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "swift-rs"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e45c444e496845d3f2a351146bff59aae4975b2280238df1dfaa0c7d1846f38e"
+dependencies = [
+ "base64 0.21.7",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.109"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+dependencies = [
+ "proc-macro2",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.119"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "syn"
+version = "3.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "sync_wrapper"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
+dependencies = [
+ "futures-core",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "system-deps"
+version = "6.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349"
+dependencies = [
+ "cfg-expr",
+ "heck 0.5.0",
+ "pkg-config",
+ "toml 0.8.2",
+ "version-compare",
+]
+
+[[package]]
+name = "tao"
+version = "0.35.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1c93047acf68669466a34690ac58cca7010bd1b201e1ec86f1fd0a75d3dd4a9"
+dependencies = [
+ "bitflags 2.13.1",
+ "block2",
+ "core-foundation",
+ "core-graphics",
+ "crossbeam-channel",
+ "dbus",
+ "dispatch2",
+ "dlopen2",
+ "dpi",
+ "gdkwayland-sys",
+ "gdkx11-sys",
+ "gtk",
+ "jni",
+ "libc",
+ "log",
+ "ndk",
+ "ndk-sys",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "objc2-ui-kit",
+ "once_cell",
+ "parking_lot",
+ "percent-encoding",
+ "raw-window-handle",
+ "tao-macros",
+ "unicode-segmentation",
+ "url",
+ "windows",
+ "windows-core 0.61.2",
+ "windows-version",
+ "x11-dl",
+]
+
+[[package]]
+name = "tao-macros"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f7eeb6d99155545da6150a1795945f16ac9c178deb2a5f2e74d776107bd5849"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "target-lexicon"
+version = "0.12.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
+
+[[package]]
+name = "tauri"
+version = "2.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "667b20e2726d572dea2de7370da16e188eb06008faf9a92fab7cdc46791190b5"
+dependencies = [
+ "anyhow",
+ "bytes",
+ "cookie",
+ "dirs 6.0.0",
+ "dunce",
+ "embed_plist",
+ "getrandom 0.3.4",
+ "glob",
+ "gtk",
+ "heck 0.5.0",
+ "http",
+ "image",
+ "jni",
+ "libc",
+ "log",
+ "mime",
+ "muda",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "objc2-ui-kit",
+ "objc2-web-kit",
+ "percent-encoding",
+ "plist",
+ "raw-window-handle",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "serialize-to-javascript",
+ "swift-rs",
+ "tauri-build",
+ "tauri-macros",
+ "tauri-runtime",
+ "tauri-runtime-wry",
+ "tauri-utils",
+ "thiserror 2.0.20",
+ "tokio",
+ "tray-icon",
+ "url",
+ "webkit2gtk",
+ "webview2-com",
+ "window-vibrancy",
+ "windows",
+]
+
+[[package]]
+name = "tauri-build"
+version = "2.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc9ce40b16101cb6ea63d3e221567affd1c3a9205f95d7bc574941a10636b632"
+dependencies = [
+ "anyhow",
+ "cargo_toml",
+ "dirs 6.0.0",
+ "glob",
+ "heck 0.5.0",
+ "json-patch",
+ "schemars 0.8.22",
+ "semver",
+ "serde",
+ "serde_json",
+ "tauri-utils",
+ "tauri-winres",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-codegen"
+version = "2.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08279169ff42f8fc45a1dbc9dcae888893ba95288142e5880c59b93a26d2cfc5"
+dependencies = [
+ "base64 0.22.1",
+ "brotli",
+ "ico",
+ "json-patch",
+ "plist",
+ "png 0.17.16",
+ "proc-macro2",
+ "quote",
+ "semver",
+ "serde",
+ "serde_json",
+ "sha2",
+ "syn 2.0.119",
+ "tauri-utils",
+ "thiserror 2.0.20",
+ "time",
+ "url",
+ "uuid",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-macros"
+version = "2.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8b394794f399a421811d06966343e7933fcae92d59f5180b9388d1174497a45"
+dependencies = [
+ "heck 0.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+ "tauri-codegen",
+ "tauri-utils",
+]
+
+[[package]]
+name = "tauri-plugin"
+version = "2.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74be5dd4bed9afbd145e5716b5fa2ec28cbc29c34ffa61c258c9273d896c8020"
+dependencies = [
+ "anyhow",
+ "glob",
+ "plist",
+ "schemars 0.8.22",
+ "serde",
+ "serde_json",
+ "tauri-utils",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-plugin-autostart"
+version = "2.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "459383cebc193cdd03d1ba4acc40f2c408a7abce419d64bdcd2d745bc2886f70"
+dependencies = [
+ "auto-launch",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-plugin",
+ "thiserror 2.0.20",
+]
+
+[[package]]
+name = "tauri-plugin-log"
+version = "2.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4e8861142c21636b03ff6eb9682a073814112e35220435670738a8be7b49896"
+dependencies = [
+ "android_logger",
+ "fern",
+ "log",
+ "objc2",
+ "objc2-foundation",
+ "serde",
+ "serde_json",
+ "serde_repr",
+ "swift-rs",
+ "tauri",
+ "tauri-plugin",
+ "thiserror 2.0.20",
+ "time",
+]
+
+[[package]]
+name = "tauri-plugin-opener"
+version = "2.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60d60366174b745b4ef5824b8bbc1c457fd08f0ce101ff643c0a49181a9f4e91"
+dependencies = [
+ "dunce",
+ "glob",
+ "objc2-app-kit",
+ "objc2-foundation",
+ "open",
+ "schemars 0.8.22",
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-plugin",
+ "thiserror 2.0.20",
+ "url",
+ "windows",
+ "zbus",
+]
+
+[[package]]
+name = "tauri-runtime"
+version = "2.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0b4bc95aed361b0019067d189a1174a603d460d0f6c72606512d59fc9c12ec8"
+dependencies = [
+ "cookie",
+ "dpi",
+ "gtk",
+ "http",
+ "jni",
+ "objc2",
+ "objc2-ui-kit",
+ "objc2-web-kit",
+ "raw-window-handle",
+ "serde",
+ "serde_json",
+ "tauri-utils",
+ "thiserror 2.0.20",
+ "url",
+ "webkit2gtk",
+ "webview2-com",
+ "windows",
+]
+
+[[package]]
+name = "tauri-runtime-wry"
+version = "2.11.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4e6fac707727b7a2f48e4ded90976324267371073edbb415ffb73bb0458d203f"
+dependencies = [
+ "gtk",
+ "http",
+ "jni",
+ "log",
+ "objc2",
+ "objc2-app-kit",
+ "once_cell",
+ "percent-encoding",
+ "raw-window-handle",
+ "softbuffer",
+ "tao",
+ "tauri-runtime",
+ "tauri-utils",
+ "url",
+ "webkit2gtk",
+ "webview2-com",
+ "windows",
+ "wry",
+]
+
+[[package]]
+name = "tauri-utils"
+version = "2.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3e176a18e67764923c4f1ce66f25ae4abe5f688384d5eb1a0fa6c77f3d90f887"
+dependencies = [
+ "anyhow",
+ "brotli",
+ "cargo_metadata",
+ "ctor",
+ "dom_query",
+ "dunce",
+ "glob",
+ "http",
+ "infer",
+ "json-patch",
+ "log",
+ "memchr",
+ "phf",
+ "plist",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "schemars 0.8.22",
+ "semver",
+ "serde",
+ "serde-untagged",
+ "serde_json",
+ "serde_with",
+ "swift-rs",
+ "thiserror 2.0.20",
+ "toml 1.1.5+spec-1.1.0",
+ "url",
+ "urlpattern",
+ "uuid",
+ "walkdir",
+]
+
+[[package]]
+name = "tauri-winres"
+version = "0.3.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc65d45c68858bfe420dd29e834b5d15dbecf8a07a8a16cf4d532c7b1f69d4b6"
+dependencies = [
+ "dunce",
+ "embed-resource",
+ "toml 1.1.5+spec-1.1.0",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.27.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
+dependencies = [
+ "fastrand",
+ "getrandom 0.4.3",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "tendril"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08"
+dependencies = [
+ "new_debug_unreachable",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+dependencies = [
+ "thiserror-impl 1.0.69",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
+dependencies = [
+ "thiserror-impl 2.0.20",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.20"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "time"
+version = "0.3.55"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134"
+dependencies = [
+ "deranged",
+ "libc",
+ "num-conv",
+ "num_threads",
+ "powerfmt",
+ "serde_core",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
+
+[[package]]
+name = "time-macros"
+version = "0.2.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tinyvec"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f"
+dependencies = [
+ "tinyvec_macros",
+]
+
+[[package]]
+name = "tinyvec_macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+
+[[package]]
+name = "tokio"
+version = "1.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"
+dependencies = [
+ "bytes",
+ "libc",
+ "mio",
+ "pin-project-lite",
+ "socket2",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "tokio-util"
+version = "0.7.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52"
+dependencies = [
+ "bytes",
+ "futures-core",
+ "futures-sink",
+ "pin-project-lite",
+ "tokio",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
+dependencies = [
+ "serde",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.3",
+ "toml_edit 0.20.2",
+]
+
+[[package]]
+name = "toml"
+version = "0.9.12+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863"
+dependencies = [
+ "indexmap 2.14.1",
+ "serde_core",
+ "serde_spanned 1.1.1",
+ "toml_datetime 0.7.5+spec-1.1.0",
+ "toml_parser",
+ "toml_writer",
+ "winnow 0.7.15",
+]
+
+[[package]]
+name = "toml"
+version = "1.1.5+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12c0ba9680044b4ce98d391a62094047eada0d64860b80166c39f4a6b5640785"
+dependencies = [
+ "indexmap 2.14.1",
+ "serde_core",
+ "serde_spanned 1.1.1",
+ "toml_datetime 1.1.1+spec-1.1.0",
+ "toml_parser",
+ "toml_writer",
+ "winnow 1.0.4",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.7.5+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "1.1.1+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
+dependencies = [
+ "serde_core",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap 2.14.1",
+ "toml_datetime 0.6.3",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
+dependencies = [
+ "indexmap 2.14.1",
+ "serde",
+ "serde_spanned 0.6.9",
+ "toml_datetime 0.6.3",
+ "winnow 0.5.40",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.25.13+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b"
+dependencies = [
+ "indexmap 2.14.1",
+ "toml_datetime 1.1.1+spec-1.1.0",
+ "toml_parser",
+ "winnow 1.0.4",
+]
+
+[[package]]
+name = "toml_parser"
+version = "1.1.3+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"
+dependencies = [
+ "winnow 1.0.4",
+]
+
+[[package]]
+name = "toml_writer"
+version = "1.1.2+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2"
+
+[[package]]
+name = "tower"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
+dependencies = [
+ "futures-core",
+ "futures-util",
+ "pin-project-lite",
+ "sync_wrapper",
+ "tokio",
+ "tower-layer",
+ "tower-service",
+]
+
+[[package]]
+name = "tower-http"
+version = "0.6.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
+dependencies = [
+ "bitflags 2.13.1",
+ "bytes",
+ "futures-util",
+ "http",
+ "http-body",
+ "pin-project-lite",
+ "tower",
+ "tower-layer",
+ "tower-service",
+ "url",
+]
+
+[[package]]
+name = "tower-layer"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
+
+[[package]]
+name = "tower-service"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
+
+[[package]]
+name = "tracing"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
+dependencies = [
+ "pin-project-lite",
+ "tracing-attributes",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-attributes"
+version = "0.1.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "tray-icon"
+version = "0.24.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "045979e3f037cd18ad1cb2a419dfda133c5c29c9f3453370079f2255d46c257e"
+dependencies = [
+ "crossbeam-channel",
+ "dirs 6.0.0",
+ "libappindicator",
+ "muda",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-core-graphics",
+ "objc2-foundation",
+ "once_cell",
+ "png 0.18.1",
+ "serde",
+ "thiserror 2.0.20",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "try-lock"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
+
+[[package]]
+name = "typeid"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
+
+[[package]]
+name = "typenum"
+version = "1.20.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
+
+[[package]]
+name = "uds_windows"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e"
+dependencies = [
+ "memoffset",
+ "tempfile",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "unic-char-property"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221"
+dependencies = [
+ "unic-char-range",
+]
+
+[[package]]
+name = "unic-char-range"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc"
+
+[[package]]
+name = "unic-common"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc"
+
+[[package]]
+name = "unic-ucd-ident"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987"
+dependencies = [
+ "unic-char-property",
+ "unic-char-range",
+ "unic-ucd-version",
+]
+
+[[package]]
+name = "unic-ucd-version"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4"
+dependencies = [
+ "unic-common",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
+
+[[package]]
+name = "url"
+version = "2.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "urlpattern"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d"
+dependencies = [
+ "regex",
+ "serde",
+ "unic-ucd-ident",
+ "url",
+]
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
+name = "uuid"
+version = "1.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b5772d71c9be8a8a6ac2117d949c5b224c1b72241bb611d9a3012edcf8af7812"
+dependencies = [
+ "getrandom 0.4.3",
+ "js-sys",
+ "serde_core",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "version-compare"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "vswhom"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b"
+dependencies = [
+ "libc",
+ "vswhom-sys",
+]
+
+[[package]]
+name = "vswhom-sys"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150"
+dependencies = [
+ "cc",
+ "libc",
+]
+
+[[package]]
+name = "walkdir"
+version = "2.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
+dependencies = [
+ "same-file",
+ "winapi-util",
+]
+
+[[package]]
+name = "want"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+dependencies = [
+ "try-lock",
+]
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "wasip2"
+version = "1.0.4+wasi-0.2.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.127"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-futures"
+version = "0.4.77"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.127"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.127"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284"
+dependencies = [
+ "bumpalo",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.127"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "wasm-streams"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
+[[package]]
+name = "web-sys"
+version = "0.3.104"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "web_atoms"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ba8b815c1b593dc0baf78dd0f4fc8fdb2de53198fb1163738093e9a311c33fb3"
+dependencies = [
+ "phf",
+ "phf_codegen",
+ "string_cache",
+ "string_cache_codegen",
+]
+
+[[package]]
+name = "webkit2gtk"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793"
+dependencies = [
+ "bitflags 1.3.2",
+ "cairo-rs",
+ "gdk",
+ "gdk-sys",
+ "gio",
+ "gio-sys",
+ "glib",
+ "glib-sys",
+ "gobject-sys",
+ "gtk",
+ "gtk-sys",
+ "javascriptcore-rs",
+ "libc",
+ "once_cell",
+ "soup3",
+ "webkit2gtk-sys",
+]
+
+[[package]]
+name = "webkit2gtk-sys"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5"
+dependencies = [
+ "bitflags 1.3.2",
+ "cairo-sys-rs",
+ "gdk-sys",
+ "gio-sys",
+ "glib-sys",
+ "gobject-sys",
+ "gtk-sys",
+ "javascriptcore-rs-sys",
+ "libc",
+ "pkg-config",
+ "soup3-sys",
+ "system-deps",
+]
+
+[[package]]
+name = "webview2-com"
+version = "0.38.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a"
+dependencies = [
+ "webview2-com-macros",
+ "webview2-com-sys",
+ "windows",
+ "windows-core 0.61.2",
+ "windows-implement",
+ "windows-interface",
+]
+
+[[package]]
+name = "webview2-com-macros"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "webview2-com-sys"
+version = "0.38.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c"
+dependencies = [
+ "thiserror 2.0.20",
+ "windows",
+ "windows-core 0.61.2",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-util"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
+dependencies = [
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "window-vibrancy"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c"
+dependencies = [
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "raw-window-handle",
+ "windows-sys 0.59.0",
+ "windows-version",
+]
+
+[[package]]
+name = "windows"
+version = "0.61.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
+dependencies = [
+ "windows-collections",
+ "windows-core 0.61.2",
+ "windows-future",
+ "windows-link 0.1.3",
+ "windows-numerics",
+]
+
+[[package]]
+name = "windows-collections"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
+dependencies = [
+ "windows-core 0.61.2",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-link 0.1.3",
+ "windows-result 0.3.4",
+ "windows-strings 0.4.2",
+]
+
+[[package]]
+name = "windows-core"
+version = "0.62.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
+dependencies = [
+ "windows-implement",
+ "windows-interface",
+ "windows-link 0.2.1",
+ "windows-result 0.4.1",
+ "windows-strings 0.5.1",
+]
+
+[[package]]
+name = "windows-future"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
+dependencies = [
+ "windows-core 0.61.2",
+ "windows-link 0.1.3",
+ "windows-threading",
+]
+
+[[package]]
+name = "windows-implement"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "windows-interface"
+version = "0.59.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+]
+
+[[package]]
+name = "windows-link"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
+
+[[package]]
+name = "windows-link"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+
+[[package]]
+name = "windows-numerics"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
+dependencies = [
+ "windows-core 0.61.2",
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-result"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-strings"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.45.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+dependencies = [
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
+dependencies = [
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-threading"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
+dependencies = [
+ "windows-link 0.1.3",
+]
+
+[[package]]
+name = "windows-version"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631"
+dependencies = [
+ "windows-link 0.2.1",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.42.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "winnow"
+version = "0.5.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winnow"
+version = "0.7.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
+
+[[package]]
+name = "winnow"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "winreg"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d"
+dependencies = [
+ "winapi",
+]
+
+[[package]]
+name = "winreg"
+version = "0.55.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "wit-bindgen"
+version = "0.57.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
+
+[[package]]
+name = "writeable"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc"
+
+[[package]]
+name = "wry"
+version = "0.55.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "186f9871daa55fd9c016578b810d149de58367113db7fb72b462d2323ce19514"
+dependencies = [
+ "base64 0.22.1",
+ "block2",
+ "cookie",
+ "crossbeam-channel",
+ "dirs 6.0.0",
+ "dom_query",
+ "dpi",
+ "dunce",
+ "gdkx11",
+ "gtk",
+ "http",
+ "javascriptcore-rs",
+ "jni",
+ "libc",
+ "ndk",
+ "objc2",
+ "objc2-app-kit",
+ "objc2-core-foundation",
+ "objc2-foundation",
+ "objc2-ui-kit",
+ "objc2-web-kit",
+ "once_cell",
+ "percent-encoding",
+ "raw-window-handle",
+ "sha2",
+ "soup3",
+ "tao-macros",
+ "thiserror 2.0.20",
+ "url",
+ "webkit2gtk",
+ "webkit2gtk-sys",
+ "webview2-com",
+ "windows",
+ "windows-core 0.61.2",
+ "windows-version",
+ "x11-dl",
+]
+
+[[package]]
+name = "x11"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e"
+dependencies = [
+ "libc",
+ "pkg-config",
+]
+
+[[package]]
+name = "x11-dl"
+version = "2.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f"
+dependencies = [
+ "libc",
+ "once_cell",
+ "pkg-config",
+]
+
+[[package]]
+name = "yoke"
+version = "0.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+ "synstructure",
+]
+
+[[package]]
+name = "zbus"
+version = "5.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5db4be7c075cb421e4b7ee645541604239bd243ba7c357511f4ff3a74b555907"
+dependencies = [
+ "async-broadcast",
+ "async-executor",
+ "async-io",
+ "async-lock",
+ "async-process",
+ "async-recursion",
+ "async-task",
+ "async-trait",
+ "blocking",
+ "enumflags2",
+ "event-listener",
+ "futures-core",
+ "futures-lite",
+ "hex",
+ "libc",
+ "ordered-stream",
+ "rustix",
+ "serde",
+ "serde_repr",
+ "tracing",
+ "uds_windows",
+ "uuid",
+ "windows-sys 0.61.2",
+ "winnow 1.0.4",
+ "zbus_macros",
+ "zbus_names",
+ "zvariant",
+]
+
+[[package]]
+name = "zbus_macros"
+version = "5.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2990635d09ade6df1868f72f8cac69a876a90981e8bd3c40b1be413f8dc88f40"
+dependencies = [
+ "proc-macro-crate 3.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+ "zbus_names",
+ "zvariant",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zbus_names"
+version = "4.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8bf88b4a3ff53e883001e0e0115b297a9d53c31b9c1edd2bfdd853e3428624e"
+dependencies = [
+ "serde",
+ "winnow 1.0.4",
+ "zvariant",
+]
+
+[[package]]
+name = "zcheapstr"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d1afec51604565183aeb5c54c20aeab286120d4e4460f7f76e3e8bb8c0d99473"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.119",
+ "synstructure",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+]
+
+[[package]]
+name = "zlib-rs"
+version = "0.6.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12"
+
+[[package]]
+name = "zmij"
+version = "1.0.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
+
+[[package]]
+name = "zvariant"
+version = "5.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1d34c27cc6cdd1f458427519dd6b8612f7b7e3f7b9a0b2355d041dda9869147"
+dependencies = [
+ "endi",
+ "enumflags2",
+ "serde",
+ "winnow 1.0.4",
+ "zcheapstr",
+ "zvariant_derive",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zvariant_derive"
+version = "5.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "864155e69b4352db0c7f374917bf45d1e0c8d17659c8b3dbf9795f3673f8c497"
+dependencies = [
+ "proc-macro-crate 3.5.0",
+ "proc-macro2",
+ "quote",
+ "syn 3.0.4",
+ "zvariant_utils",
+]
+
+[[package]]
+name = "zvariant_utils"
+version = "4.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bad0294361a320b694a328460dc73add56c306150f5cb6bfafc44446120008a3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "serde",
+ "syn 3.0.4",
+ "winnow 1.0.4",
+]
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
new file mode 100644
index 0000000..4d3b8e9
--- /dev/null
+++ b/src-tauri/Cargo.toml
@@ -0,0 +1,25 @@
+[package]
+name = "floatick"
+version = "1.0.0"
+description = "A focused, local-first floating todo and note app for macOS"
+authors = ["Lucas"]
+edition = "2021"
+rust-version = "1.77.2"
+
+[lib]
+name = "floatick_lib"
+crate-type = ["staticlib", "cdylib", "rlib"]
+
+[build-dependencies]
+tauri-build = { version = "2.6.3", features = [] }
+
+[dependencies]
+serde_json = "1.0"
+serde = { version = "1.0", features = ["derive"] }
+log = "0.4"
+tauri = { version = "2.11.3", features = ["macos-private-api", "tray-icon", "image-png"] }
+tauri-plugin-log = "2"
+tauri-plugin-autostart = "2"
+tauri-plugin-opener = "2"
+dirs = "6.0"
+chrono = { version = "0.4", features = ["serde"] }
diff --git a/src-tauri/build.rs b/src-tauri/build.rs
new file mode 100644
index 0000000..795b9b7
--- /dev/null
+++ b/src-tauri/build.rs
@@ -0,0 +1,3 @@
+fn main() {
+ tauri_build::build()
+}
diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json
new file mode 100644
index 0000000..05ee128
--- /dev/null
+++ b/src-tauri/capabilities/default.json
@@ -0,0 +1,13 @@
+{
+ "$schema": "../gen/schemas/desktop-schema.json",
+ "identifier": "default",
+ "description": "enables the default permissions",
+ "windows": [
+ "main"
+ ],
+ "permissions": [
+ "core:default",
+ "opener:default",
+ "autostart:default"
+ ]
+}
diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png
new file mode 100644
index 0000000000000000000000000000000000000000..a2f779f2e8c411c13efba3423f6b38b647dc21fd
GIT binary patch
literal 8706
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
literal 0
HcmV?d00001
diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png
new file mode 100644
index 0000000000000000000000000000000000000000..880baabc1cce7090dfa3b088ab59e4d64098e0b5
GIT binary patch
literal 1649
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