neoagent 2.4.1-beta.8 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/.env.example +33 -3
  2. package/LICENSE +111 -56
  3. package/README.md +8 -3
  4. package/docs/configuration.md +8 -0
  5. package/docs/getting-started.md +9 -3
  6. package/docs/index.md +4 -0
  7. package/extensions/chrome-browser/background.mjs +45 -7
  8. package/extensions/chrome-browser/icons/icon128.png +0 -0
  9. package/extensions/chrome-browser/icons/icon16.png +0 -0
  10. package/extensions/chrome-browser/icons/icon48.png +0 -0
  11. package/extensions/chrome-browser/icons/logo.svg +39 -8
  12. package/extensions/chrome-browser/manifest.json +3 -2
  13. package/extensions/chrome-browser/popup.html +5 -1
  14. package/extensions/chrome-browser/popup.js +15 -2
  15. package/flutter_app/android/app/src/main/AndroidManifest.xml +2 -1
  16. package/flutter_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  17. package/flutter_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  18. package/flutter_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  19. package/flutter_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  20. package/flutter_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  21. package/flutter_app/assets/branding/app_icon_1024.png +0 -0
  22. package/flutter_app/assets/branding/app_icon_128.png +0 -0
  23. package/flutter_app/assets/branding/app_icon_192.png +0 -0
  24. package/flutter_app/assets/branding/app_icon_256.png +0 -0
  25. package/flutter_app/assets/branding/app_icon_32.png +0 -0
  26. package/flutter_app/assets/branding/app_icon_512.png +0 -0
  27. package/flutter_app/assets/branding/app_icon_64.png +0 -0
  28. package/flutter_app/assets/branding/app_icon_light_1024.png +0 -0
  29. package/flutter_app/assets/branding/app_icon_light_128.png +0 -0
  30. package/flutter_app/assets/branding/app_icon_light_192.png +0 -0
  31. package/flutter_app/assets/branding/app_icon_light_256.png +0 -0
  32. package/flutter_app/assets/branding/app_icon_light_32.png +0 -0
  33. package/flutter_app/assets/branding/app_icon_light_512.png +0 -0
  34. package/flutter_app/assets/branding/app_icon_light_64.png +0 -0
  35. package/flutter_app/assets/branding/onboarding_intro.mp4 +0 -0
  36. package/flutter_app/assets/branding/tray_icon_light_template.png +0 -0
  37. package/flutter_app/assets/branding/tray_icon_template.png +0 -0
  38. package/flutter_app/lib/features/location/location_service.dart +3 -0
  39. package/flutter_app/lib/features/onboarding/onboarding_chrome.dart +391 -382
  40. package/flutter_app/lib/features/onboarding/onboarding_companion_step.dart +743 -0
  41. package/flutter_app/lib/features/onboarding/onboarding_messaging_step.dart +18 -16
  42. package/flutter_app/lib/features/onboarding/onboarding_model_step.dart +19 -18
  43. package/flutter_app/lib/features/onboarding/onboarding_shell.dart +8 -1
  44. package/flutter_app/lib/features/onboarding/onboarding_video_step.dart +16 -13
  45. package/flutter_app/lib/features/onboarding/onboarding_welcome_step.dart +17 -13
  46. package/flutter_app/lib/main.dart +3 -0
  47. package/flutter_app/lib/main_account_settings.dart +10 -34
  48. package/flutter_app/lib/main_admin.dart +14 -1
  49. package/flutter_app/lib/main_app_shell.dart +377 -340
  50. package/flutter_app/lib/main_chat.dart +707 -227
  51. package/flutter_app/lib/main_controller.dart +338 -46
  52. package/flutter_app/lib/main_devices.dart +851 -122
  53. package/flutter_app/lib/main_integrations.dart +255 -6
  54. package/flutter_app/lib/main_launcher.dart +1 -1
  55. package/flutter_app/lib/main_model_picker.dart +685 -0
  56. package/flutter_app/lib/main_models.dart +212 -0
  57. package/flutter_app/lib/main_navigation.dart +1 -9
  58. package/flutter_app/lib/main_operations.dart +1417 -614
  59. package/flutter_app/lib/main_settings.dart +764 -887
  60. package/flutter_app/lib/main_shared.dart +971 -443
  61. package/flutter_app/lib/main_spacing.dart +4 -4
  62. package/flutter_app/lib/main_theme.dart +22 -14
  63. package/flutter_app/lib/main_unified.dart +5 -72
  64. package/flutter_app/lib/src/android_apk_drop_zone.dart +24 -0
  65. package/flutter_app/lib/src/android_apk_drop_zone_stub.dart +13 -0
  66. package/flutter_app/lib/src/android_apk_drop_zone_web.dart +219 -0
  67. package/flutter_app/lib/src/backend_client.dart +79 -0
  68. package/flutter_app/lib/src/desktop_companion_actions.dart +56 -7
  69. package/flutter_app/lib/src/desktop_companion_io.dart +77 -1
  70. package/flutter_app/lib/src/desktop_native_bridge.dart +13 -0
  71. package/flutter_app/lib/src/security/password_strength.dart +84 -0
  72. package/flutter_app/lib/src/stream_renderer.dart +205 -35
  73. package/flutter_app/lib/src/theme/palette.dart +76 -34
  74. package/flutter_app/linux/runner/resources/app_icon.png +0 -0
  75. package/flutter_app/macos/Runner/AppDelegate.swift +44 -0
  76. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
  77. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
  78. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
  79. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
  80. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
  81. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
  82. package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
  83. package/flutter_app/pubspec.lock +2 -2
  84. package/flutter_app/pubspec.yaml +7 -1
  85. package/flutter_app/tool/branding_source/neoagent-icon-1024.png +0 -0
  86. package/flutter_app/tool/branding_source/neoagent-icon-128.png +0 -0
  87. package/flutter_app/tool/branding_source/neoagent-icon-16.png +0 -0
  88. package/flutter_app/tool/branding_source/neoagent-icon-180.png +0 -0
  89. package/flutter_app/tool/branding_source/neoagent-icon-192.png +0 -0
  90. package/flutter_app/tool/branding_source/neoagent-icon-256.png +0 -0
  91. package/flutter_app/tool/branding_source/neoagent-icon-32.png +0 -0
  92. package/flutter_app/tool/branding_source/neoagent-icon-48.png +0 -0
  93. package/flutter_app/tool/branding_source/neoagent-icon-512.png +0 -0
  94. package/flutter_app/tool/branding_source/neoagent-icon-64.png +0 -0
  95. package/flutter_app/tool/branding_source/neoagent-icon.svg +43 -0
  96. package/flutter_app/tool/generate_desktop_branding.py +154 -152
  97. package/flutter_app/web/favicon.png +0 -0
  98. package/flutter_app/web/favicon.svg +40 -9
  99. package/flutter_app/web/favicon_light.svg +43 -0
  100. package/flutter_app/web/icons/Icon-192-light.png +0 -0
  101. package/flutter_app/web/icons/Icon-192.png +0 -0
  102. package/flutter_app/web/icons/Icon-512-light.png +0 -0
  103. package/flutter_app/web/icons/Icon-512.png +0 -0
  104. package/flutter_app/web/icons/Icon-maskable-192-light.png +0 -0
  105. package/flutter_app/web/icons/Icon-maskable-192.png +0 -0
  106. package/flutter_app/web/icons/Icon-maskable-512-light.png +0 -0
  107. package/flutter_app/web/icons/Icon-maskable-512.png +0 -0
  108. package/flutter_app/windows/runner/main.cpp +7 -1
  109. package/flutter_app/windows/runner/resources/app_icon.ico +0 -0
  110. package/lib/manager.js +445 -83
  111. package/package.json +17 -3
  112. package/runtime/paths.js +3 -1
  113. package/server/admin/access.js +198 -0
  114. package/server/admin/admin.css +268 -0
  115. package/server/admin/admin.js +348 -0
  116. package/server/admin/analytics.js +128 -0
  117. package/server/admin/index.html +1015 -0
  118. package/server/admin/login.html +290 -0
  119. package/server/admin/logo.svg +43 -0
  120. package/server/admin/sql.js +134 -0
  121. package/server/admin/users.js +147 -0
  122. package/server/config/origins.js +3 -1
  123. package/server/db/database.js +92 -0
  124. package/server/db/ftsQuery.js +27 -0
  125. package/server/http/routes.js +1 -0
  126. package/server/http/static.js +23 -6
  127. package/server/index.js +1 -1
  128. package/server/middleware/adminAuth.js +48 -0
  129. package/server/middleware/auth.js +1 -40
  130. package/server/public/.last_build_id +1 -1
  131. package/server/public/app_icon.png +0 -0
  132. package/server/public/assets/AssetManifest.bin +1 -1
  133. package/server/public/assets/AssetManifest.bin.json +1 -1
  134. package/server/public/assets/assets/branding/app_icon_1024.png +0 -0
  135. package/server/public/assets/assets/branding/app_icon_256.png +0 -0
  136. package/server/public/assets/assets/branding/app_icon_512.png +0 -0
  137. package/server/public/assets/assets/branding/app_icon_light_1024.png +0 -0
  138. package/server/public/assets/assets/branding/app_icon_light_256.png +0 -0
  139. package/server/public/assets/assets/branding/app_icon_light_512.png +0 -0
  140. package/server/public/assets/assets/branding/onboarding_intro.mp4 +0 -0
  141. package/server/public/assets/assets/branding/tray_icon_light_template.png +0 -0
  142. package/server/public/assets/assets/branding/tray_icon_template.png +0 -0
  143. package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
  144. package/server/public/assets/web/icons/Icon-192.png +0 -0
  145. package/server/public/favicon.png +0 -0
  146. package/server/public/favicon.svg +40 -9
  147. package/server/public/favicon_light.svg +43 -0
  148. package/server/public/flutter_bootstrap.js +2 -2
  149. package/server/public/icons/Icon-192-light.png +0 -0
  150. package/server/public/icons/Icon-192.png +0 -0
  151. package/server/public/icons/Icon-512-light.png +0 -0
  152. package/server/public/icons/Icon-512.png +0 -0
  153. package/server/public/icons/Icon-maskable-192-light.png +0 -0
  154. package/server/public/icons/Icon-maskable-192.png +0 -0
  155. package/server/public/icons/Icon-maskable-512-light.png +0 -0
  156. package/server/public/icons/Icon-maskable-512.png +0 -0
  157. package/server/public/main.dart.js +88944 -85720
  158. package/server/routes/admin.js +632 -0
  159. package/server/routes/agent_profiles.js +3 -0
  160. package/server/routes/agents.js +1 -1
  161. package/server/routes/auth.js +3 -1
  162. package/server/routes/browser.js +14 -0
  163. package/server/routes/browser_extension.js +21 -4
  164. package/server/routes/desktop.js +10 -0
  165. package/server/routes/mcp.js +29 -13
  166. package/server/routes/memory.js +23 -1
  167. package/server/routes/messaging.js +2 -0
  168. package/server/routes/screenHistory.js +14 -8
  169. package/server/routes/settings.js +14 -2
  170. package/server/routes/stream.js +12 -3
  171. package/server/routes/triggers.js +4 -4
  172. package/server/routes/voice_assistant.js +36 -1
  173. package/server/routes/workspace.js +86 -0
  174. package/server/services/account/admin_two_factor.js +132 -0
  175. package/server/services/account/password_policy.js +6 -1
  176. package/server/services/ai/completion.js +44 -0
  177. package/server/services/ai/engine.js +321 -500
  178. package/server/services/ai/imageAnalysis.js +9 -5
  179. package/server/services/ai/logFormat.js +46 -0
  180. package/server/services/ai/loopPolicy.js +11 -0
  181. package/server/services/ai/messagingFallback.js +228 -0
  182. package/server/services/ai/models.js +194 -55
  183. package/server/services/ai/providerRetry.js +169 -0
  184. package/server/services/ai/providers/anthropic.js +15 -4
  185. package/server/services/ai/providers/google.js +38 -11
  186. package/server/services/ai/providers/grok.js +19 -68
  187. package/server/services/ai/providers/grokOauth.js +141 -0
  188. package/server/services/ai/providers/nvidia.js +154 -0
  189. package/server/services/ai/providers/ollama.js +76 -39
  190. package/server/services/ai/providers/openai.js +20 -31
  191. package/server/services/ai/providers/openaiCodex.js +6 -2
  192. package/server/services/ai/providers/openaiCompatible.js +70 -0
  193. package/server/services/ai/providers/openrouter.js +162 -0
  194. package/server/services/ai/settings.js +30 -0
  195. package/server/services/ai/systemPrompt.js +51 -29
  196. package/server/services/ai/taskAnalysis.js +60 -1
  197. package/server/services/ai/toolEvidence.js +207 -0
  198. package/server/services/ai/toolSelector.js +8 -1
  199. package/server/services/ai/tools.js +80 -15
  200. package/server/services/android/controller.js +36 -1
  201. package/server/services/browser/controller.js +18 -0
  202. package/server/services/browser/extension/manifest.js +33 -0
  203. package/server/services/browser/extension/provider.js +12 -6
  204. package/server/services/browser/extension/registry.js +229 -18
  205. package/server/services/desktop/protocol.js +1 -0
  206. package/server/services/desktop/provider.js +4 -0
  207. package/server/services/desktop/registry.js +104 -1
  208. package/server/services/desktop/screenRecorder.js +208 -98
  209. package/server/services/desktop/screen_recorder_support.js +46 -0
  210. package/server/services/integrations/google/provider.js +13 -0
  211. package/server/services/integrations/home_assistant/constants.js +88 -0
  212. package/server/services/integrations/home_assistant/network.js +207 -0
  213. package/server/services/integrations/home_assistant/provider.js +249 -0
  214. package/server/services/integrations/home_assistant/snapshot.js +98 -0
  215. package/server/services/integrations/home_assistant/tools.js +101 -0
  216. package/server/services/integrations/manager.js +5 -0
  217. package/server/services/integrations/registry.js +2 -0
  218. package/server/services/integrations/trello/provider.js +8 -2
  219. package/server/services/manager.js +51 -47
  220. package/server/services/mcp/client.js +208 -268
  221. package/server/services/mcp/client_support.js +172 -0
  222. package/server/services/mcp/recovery.js +116 -0
  223. package/server/services/mcp/tool_operations.js +123 -0
  224. package/server/services/memory/ingestion.js +185 -370
  225. package/server/services/memory/ingestion_coverage.js +129 -0
  226. package/server/services/memory/ingestion_documents.js +123 -0
  227. package/server/services/memory/ingestion_support.js +171 -0
  228. package/server/services/memory/intelligence.js +181 -0
  229. package/server/services/memory/manager.js +476 -32
  230. package/server/services/messaging/automation.js +71 -134
  231. package/server/services/messaging/formatting_guides.js +26 -1
  232. package/server/services/messaging/inbound_queue.js +111 -0
  233. package/server/services/messaging/manager.js +25 -8
  234. package/server/services/messaging/typing_keepalive.js +110 -0
  235. package/server/services/runtime/manager.js +7 -3
  236. package/server/services/runtime/settings.js +17 -0
  237. package/server/services/streaming/android-stream.js +296 -32
  238. package/server/services/streaming/stream-hub.js +1 -1
  239. package/server/services/tasks/integration_runtime.js +4 -1
  240. package/server/services/tasks/runtime.js +415 -56
  241. package/server/services/tasks/task_repository.js +48 -6
  242. package/server/services/websocket.js +8 -2
  243. package/server/services/widgets/service.js +17 -1
  244. package/server/services/workspace/manager.js +116 -0
  245. package/server/utils/logger.js +44 -6
  246. package/server/utils/security.js +3 -0
  247. package/server/utils/version.js +29 -19
  248. package/server/services/memory/openhuman_uplift.test.js +0 -98
@@ -1,5 +1,19 @@
1
1
  import 'package:flutter/widgets.dart';
2
2
 
3
+ /// Resolves the active [NeoAgentPalette] for the given [brightness].
4
+ NeoAgentPalette paletteFor(Brightness brightness) =>
5
+ brightness == Brightness.light ? lightPalette : darkPalette;
6
+
7
+ /// Resolves the active [NeoAgentPalette] from the ambient theme brightness.
8
+ NeoAgentPalette paletteOf(BuildContext context) =>
9
+ paletteFor(MediaQuery.platformBrightnessOf(context));
10
+
11
+ /// Canonical color tokens for the NeoAgent "Control Surface" design system.
12
+ ///
13
+ /// Visual language: warm-organic "agent OS" — olive/sage greens paired with
14
+ /// a gold accent, a paper-light day theme and a deep-olive night theme.
15
+ /// Every screen reads its colors from these tokens (via the theme getters in
16
+ /// `main_theme.dart`), so adjusting a value here re-skins the whole app.
3
17
  class NeoAgentPalette {
4
18
  const NeoAgentPalette({
5
19
  required this.bgPrimary,
@@ -21,61 +35,89 @@ class NeoAgentPalette {
21
35
  required this.info,
22
36
  });
23
37
 
38
+ /// Page background ("paper" by day, "deep olive" by night).
24
39
  final Color bgPrimary;
40
+
41
+ /// Slightly recessed background used for rails and inset wells.
25
42
  final Color bgSecondary;
43
+
44
+ /// Tertiary surface for nested wells, track fills and pressed states.
26
45
  final Color bgTertiary;
46
+
47
+ /// Raised surface for cards, sheets and bubbles.
27
48
  final Color bgCard;
49
+
50
+ /// Primary ink — headings and body text.
28
51
  final Color textPrimary;
52
+
53
+ /// Secondary ink — supporting copy and inactive labels.
29
54
  final Color textSecondary;
55
+
56
+ /// Muted ink — captions, placeholders and disabled glyphs.
30
57
  final Color textMuted;
58
+
59
+ /// Gold accent — primary actions, active nav, focus rings.
31
60
  final Color accent;
61
+
62
+ /// Readable gold ("gold-ink") for eyebrows, links and accent text on paper.
32
63
  final Color accentHover;
64
+
65
+ /// Sage green companion accent — calls, traces and secondary affordances.
33
66
  final Color accentAlt;
67
+
68
+ /// Translucent gold wash for soft fills and selection backgrounds.
34
69
  final Color accentMuted;
70
+
71
+ /// Hairline divider color.
35
72
  final Color border;
73
+
74
+ /// Stronger hairline for inputs and interactive outlines.
36
75
  final Color borderLight;
76
+
37
77
  final Color success;
38
78
  final Color warning;
39
79
  final Color danger;
40
80
  final Color info;
41
81
  }
42
82
 
83
+ /// Deep-olive night theme.
43
84
  const NeoAgentPalette darkPalette = NeoAgentPalette(
44
- bgPrimary: Color(0xFF071015),
45
- bgSecondary: Color(0xFF0E171E),
46
- bgTertiary: Color(0xFF15232B),
47
- bgCard: Color(0xFF16212A),
48
- textPrimary: Color(0xFFF5EFE4),
49
- textSecondary: Color(0xFFD2D7DC),
50
- textMuted: Color(0xFF95A0A8),
51
- accent: Color(0xFFC7A36A),
52
- accentHover: Color(0xFFE4C58D),
53
- accentAlt: Color(0xFF5FA897),
54
- accentMuted: Color(0x24C7A36A),
55
- border: Color(0x30576875),
56
- borderLight: Color(0x4A7B8D99),
57
- success: Color(0xFF37B67E),
58
- warning: Color(0xFFD49A43),
59
- danger: Color(0xFFE26E61),
60
- info: Color(0xFF74A8D9),
85
+ bgPrimary: Color(0xFF0E1511),
86
+ bgSecondary: Color(0xFF0A0F0C),
87
+ bgTertiary: Color(0xFF252D28),
88
+ bgCard: Color(0xFF171F1A),
89
+ textPrimary: Color(0xFFECEFE5),
90
+ textSecondary: Color(0xFFAEB7A6),
91
+ textMuted: Color(0xFF7E8877),
92
+ accent: Color(0xFFE1B052),
93
+ accentHover: Color(0xFFEAC272),
94
+ accentAlt: Color(0xFF84BA87),
95
+ accentMuted: Color(0x29E1B052),
96
+ border: Color(0x1AE0F0E0),
97
+ borderLight: Color(0x2BE0F0E0),
98
+ success: Color(0xFF74C07C),
99
+ warning: Color(0xFFD9A24B),
100
+ danger: Color(0xFFDE8A78),
101
+ info: Color(0xFF6FB0A4),
61
102
  );
62
103
 
104
+ /// Paper-light day theme.
63
105
  const NeoAgentPalette lightPalette = NeoAgentPalette(
64
- bgPrimary: Color(0xFFF3F0EB),
65
- bgSecondary: Color(0xFFEAE4DA),
66
- bgTertiary: Color(0xFFDED6CA),
67
- bgCard: Color(0xFFFFFEFC),
68
- textPrimary: Color(0xFF16181D),
69
- textSecondary: Color(0xFF444A55),
70
- textMuted: Color(0xFF727987),
71
- accent: Color(0xFF8F6D3E),
72
- accentHover: Color(0xFFAF8750),
73
- accentAlt: Color(0xFF2F7D6E),
74
- accentMuted: Color(0x1F8F6D3E),
75
- border: Color(0x223F4652),
76
- borderLight: Color(0x3847505D),
77
- success: Color(0xFF1F8C58),
78
- warning: Color(0xFFB87322),
79
- danger: Color(0xFFD25B4D),
80
- info: Color(0xFF2F7AA8),
106
+ bgPrimary: Color(0xFFF4F1E8),
107
+ bgSecondary: Color(0xFFEDE9DC),
108
+ bgTertiary: Color(0xFFF1EDE1),
109
+ bgCard: Color(0xFFFDFCF8),
110
+ textPrimary: Color(0xFF1C2117),
111
+ textSecondary: Color(0xFF49503F),
112
+ textMuted: Color(0xFF7E8470),
113
+ accent: Color(0xFFB07D2B),
114
+ accentHover: Color(0xFF8A5F1C),
115
+ accentAlt: Color(0xFF5E6B4C),
116
+ accentMuted: Color(0x24B07D2B),
117
+ border: Color(0x171C2117),
118
+ borderLight: Color(0x291C2117),
119
+ success: Color(0xFF527C4F),
120
+ warning: Color(0xFF9A7B33),
121
+ danger: Color(0xFFAE473C),
122
+ info: Color(0xFF2F7D6E),
81
123
  );
@@ -106,6 +106,36 @@ final class DesktopCompanionNativePlugin: NSObject {
106
106
  displayId: displayId
107
107
  )
108
108
  result(nil)
109
+ case "mouseMove":
110
+ guard isAccessibilityTrusted() else {
111
+ result(
112
+ FlutterError(
113
+ code: "accessibility_permission_denied",
114
+ message: "Accessibility permission is required for input control.",
115
+ details: nil
116
+ )
117
+ )
118
+ return
119
+ }
120
+ guard let arguments = call.arguments as? [String: Any],
121
+ let x = arguments["x"] as? NSNumber,
122
+ let y = arguments["y"] as? NSNumber else {
123
+ result(
124
+ FlutterError(
125
+ code: "invalid_arguments",
126
+ message: "Missing mouseMove coordinates.",
127
+ details: nil
128
+ )
129
+ )
130
+ return
131
+ }
132
+ let displayId = arguments["displayId"] as? String
133
+ performMouseMove(
134
+ x: x.doubleValue,
135
+ y: y.doubleValue,
136
+ displayId: displayId
137
+ )
138
+ result(nil)
109
139
  case "drag":
110
140
  guard isAccessibilityTrusted() else {
111
141
  result(
@@ -417,6 +447,20 @@ final class DesktopCompanionNativePlugin: NSObject {
417
447
  up.post(tap: .cghidEventTap)
418
448
  }
419
449
 
450
+ private func performMouseMove(x: Double, y: Double, displayId: String?) {
451
+ let point = nativePointForCapturedPixel(x: x, y: y, displayId: displayId)
452
+ CGWarpMouseCursorPosition(point)
453
+ guard let moveEvent = CGEvent(
454
+ mouseEventSource: nil,
455
+ mouseType: .mouseMoved,
456
+ mouseCursorPosition: point,
457
+ mouseButton: .left
458
+ ) else {
459
+ return
460
+ }
461
+ moveEvent.post(tap: .cghidEventTap)
462
+ }
463
+
420
464
  private func performDrag(
421
465
  x1: Double,
422
466
  y1: Double,
@@ -418,10 +418,10 @@ packages:
418
418
  dependency: "direct main"
419
419
  description:
420
420
  name: google_fonts
421
- sha256: ba03d03bcaa2f6cb7bd920e3b5027181db75ab524f8891c8bc3aa603885b8055
421
+ sha256: "4e9391085e524954a51e3625b7c9c7e9851dc3f376603208bb45c24b9a66255d"
422
422
  url: "https://pub.dev"
423
423
  source: hosted
424
- version: "6.3.3"
424
+ version: "8.1.0"
425
425
  hotkey_manager:
426
426
  dependency: "direct main"
427
427
  description:
@@ -12,7 +12,7 @@ dependencies:
12
12
  cupertino_icons: ^1.0.8
13
13
  flutter_markdown: ^0.7.4+1
14
14
  file_picker: ^8.0.7
15
- google_fonts: ^6.3.1
15
+ google_fonts: ^8.1.0
16
16
  image: ^4.5.4
17
17
  http: ^1.5.0
18
18
  mixpanel_flutter: ^2.6.1
@@ -55,5 +55,11 @@ flutter:
55
55
  assets:
56
56
  - web/icons/Icon-192.png
57
57
  - assets/branding/app_icon_256.png
58
+ - assets/branding/app_icon_512.png
59
+ - assets/branding/app_icon_1024.png
60
+ - assets/branding/app_icon_light_256.png
61
+ - assets/branding/app_icon_light_512.png
62
+ - assets/branding/app_icon_light_1024.png
58
63
  - assets/branding/tray_icon_template.png
64
+ - assets/branding/tray_icon_light_template.png
59
65
  - assets/branding/onboarding_intro.mp4
@@ -0,0 +1,43 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100">
2
+ <defs>
3
+ <linearGradient id="tile" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" stop-color="#705331"></stop>
5
+ <stop offset="100%" stop-color="#22564c"></stop>
6
+ </linearGradient>
7
+ <radialGradient id="shine" cx="26%" cy="14%" r="72%">
8
+ <stop offset="0%" stop-color="#ffffff" stop-opacity="0.22"></stop>
9
+ <stop offset="100%" stop-color="#ffffff" stop-opacity="0"></stop>
10
+ </radialGradient>
11
+ <radialGradient id="core" cx="38%" cy="32%" r="75%">
12
+ <stop offset="0%" stop-color="#fffdf6"></stop>
13
+ <stop offset="48%" stop-color="#eee3cc"></stop>
14
+ <stop offset="100%" stop-color="#b5a888"></stop>
15
+ </radialGradient>
16
+ <radialGradient id="node" cx="36%" cy="30%" r="80%">
17
+ <stop offset="0%" stop-color="#f8dca8"></stop>
18
+ <stop offset="52%" stop-color="#d3a85f"></stop>
19
+ <stop offset="100%" stop-color="#9b6f2f"></stop>
20
+ </radialGradient>
21
+ <linearGradient id="tube" x1="0%" y1="0%" x2="0%" y2="100%">
22
+ <stop offset="0%" stop-color="#fffaf0"></stop>
23
+ <stop offset="52%" stop-color="#efe7d6"></stop>
24
+ <stop offset="100%" stop-color="#cabf9f"></stop>
25
+ </linearGradient>
26
+ <filter id="sh" x="-30%" y="-30%" width="160%" height="160%">
27
+ <feDropShadow dx="0" dy="1.1" stdDeviation="1.1" flood-color="#000000" flood-opacity="0.45"></feDropShadow>
28
+ </filter>
29
+ <clipPath id="tc"><rect x="0" y="0" width="100" height="100" rx="22.5"></rect></clipPath>
30
+ </defs>
31
+ <g clip-path="url(#tc)">
32
+ <rect x="0" y="0" width="100" height="100" fill="url(#tile)"></rect>
33
+ <rect x="0" y="0" width="100" height="100" fill="url(#shine)"></rect>
34
+ <g fill="none" stroke="url(#tube)" stroke-linecap="round" filter="url(#sh)">
35
+ <circle cx="50" cy="50" r="17" stroke-width="5" stroke-dasharray="78 29" transform="rotate(-35 50 50)" stroke-opacity="0.92"></circle>
36
+ <circle cx="50" cy="50" r="30" stroke-width="5" stroke-dasharray="150 39" transform="rotate(70 50 50)" stroke-opacity="0.8"></circle>
37
+ </g>
38
+ <circle cx="50" cy="50" r="7" fill="url(#core)"></circle>
39
+ <circle cx="50" cy="20" r="5.6" fill="url(#node)"></circle>
40
+ <circle cx="48" cy="18.4" r="1.7" fill="#fff7e6" fill-opacity="0.8"></circle>
41
+ </g>
42
+ <rect x="0.6" y="0.6" width="98.8" height="98.8" rx="22" fill="none" stroke="rgba(255,255,255,0.16)" stroke-width="1.2"></rect>
43
+ </svg>