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.
- package/.env.example +33 -3
- package/LICENSE +111 -56
- package/README.md +8 -3
- package/docs/configuration.md +8 -0
- package/docs/getting-started.md +9 -3
- package/docs/index.md +4 -0
- package/extensions/chrome-browser/background.mjs +45 -7
- package/extensions/chrome-browser/icons/icon128.png +0 -0
- package/extensions/chrome-browser/icons/icon16.png +0 -0
- package/extensions/chrome-browser/icons/icon48.png +0 -0
- package/extensions/chrome-browser/icons/logo.svg +39 -8
- package/extensions/chrome-browser/manifest.json +3 -2
- package/extensions/chrome-browser/popup.html +5 -1
- package/extensions/chrome-browser/popup.js +15 -2
- package/flutter_app/android/app/src/main/AndroidManifest.xml +2 -1
- package/flutter_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
- package/flutter_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
- package/flutter_app/assets/branding/app_icon_1024.png +0 -0
- package/flutter_app/assets/branding/app_icon_128.png +0 -0
- package/flutter_app/assets/branding/app_icon_192.png +0 -0
- package/flutter_app/assets/branding/app_icon_256.png +0 -0
- package/flutter_app/assets/branding/app_icon_32.png +0 -0
- package/flutter_app/assets/branding/app_icon_512.png +0 -0
- package/flutter_app/assets/branding/app_icon_64.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_1024.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_128.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_192.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_256.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_32.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_512.png +0 -0
- package/flutter_app/assets/branding/app_icon_light_64.png +0 -0
- package/flutter_app/assets/branding/onboarding_intro.mp4 +0 -0
- package/flutter_app/assets/branding/tray_icon_light_template.png +0 -0
- package/flutter_app/assets/branding/tray_icon_template.png +0 -0
- package/flutter_app/lib/features/location/location_service.dart +3 -0
- package/flutter_app/lib/features/onboarding/onboarding_chrome.dart +391 -382
- package/flutter_app/lib/features/onboarding/onboarding_companion_step.dart +743 -0
- package/flutter_app/lib/features/onboarding/onboarding_messaging_step.dart +18 -16
- package/flutter_app/lib/features/onboarding/onboarding_model_step.dart +19 -18
- package/flutter_app/lib/features/onboarding/onboarding_shell.dart +8 -1
- package/flutter_app/lib/features/onboarding/onboarding_video_step.dart +16 -13
- package/flutter_app/lib/features/onboarding/onboarding_welcome_step.dart +17 -13
- package/flutter_app/lib/main.dart +3 -0
- package/flutter_app/lib/main_account_settings.dart +10 -34
- package/flutter_app/lib/main_admin.dart +14 -1
- package/flutter_app/lib/main_app_shell.dart +377 -340
- package/flutter_app/lib/main_chat.dart +707 -227
- package/flutter_app/lib/main_controller.dart +338 -46
- package/flutter_app/lib/main_devices.dart +851 -122
- package/flutter_app/lib/main_integrations.dart +255 -6
- package/flutter_app/lib/main_launcher.dart +1 -1
- package/flutter_app/lib/main_model_picker.dart +685 -0
- package/flutter_app/lib/main_models.dart +212 -0
- package/flutter_app/lib/main_navigation.dart +1 -9
- package/flutter_app/lib/main_operations.dart +1417 -614
- package/flutter_app/lib/main_settings.dart +764 -887
- package/flutter_app/lib/main_shared.dart +971 -443
- package/flutter_app/lib/main_spacing.dart +4 -4
- package/flutter_app/lib/main_theme.dart +22 -14
- package/flutter_app/lib/main_unified.dart +5 -72
- package/flutter_app/lib/src/android_apk_drop_zone.dart +24 -0
- package/flutter_app/lib/src/android_apk_drop_zone_stub.dart +13 -0
- package/flutter_app/lib/src/android_apk_drop_zone_web.dart +219 -0
- package/flutter_app/lib/src/backend_client.dart +79 -0
- package/flutter_app/lib/src/desktop_companion_actions.dart +56 -7
- package/flutter_app/lib/src/desktop_companion_io.dart +77 -1
- package/flutter_app/lib/src/desktop_native_bridge.dart +13 -0
- package/flutter_app/lib/src/security/password_strength.dart +84 -0
- package/flutter_app/lib/src/stream_renderer.dart +205 -35
- package/flutter_app/lib/src/theme/palette.dart +76 -34
- package/flutter_app/linux/runner/resources/app_icon.png +0 -0
- package/flutter_app/macos/Runner/AppDelegate.swift +44 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png +0 -0
- package/flutter_app/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png +0 -0
- package/flutter_app/pubspec.lock +2 -2
- package/flutter_app/pubspec.yaml +7 -1
- package/flutter_app/tool/branding_source/neoagent-icon-1024.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-128.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-16.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-180.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-192.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-256.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-32.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-48.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-512.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon-64.png +0 -0
- package/flutter_app/tool/branding_source/neoagent-icon.svg +43 -0
- package/flutter_app/tool/generate_desktop_branding.py +154 -152
- package/flutter_app/web/favicon.png +0 -0
- package/flutter_app/web/favicon.svg +40 -9
- package/flutter_app/web/favicon_light.svg +43 -0
- package/flutter_app/web/icons/Icon-192-light.png +0 -0
- package/flutter_app/web/icons/Icon-192.png +0 -0
- package/flutter_app/web/icons/Icon-512-light.png +0 -0
- package/flutter_app/web/icons/Icon-512.png +0 -0
- package/flutter_app/web/icons/Icon-maskable-192-light.png +0 -0
- package/flutter_app/web/icons/Icon-maskable-192.png +0 -0
- package/flutter_app/web/icons/Icon-maskable-512-light.png +0 -0
- package/flutter_app/web/icons/Icon-maskable-512.png +0 -0
- package/flutter_app/windows/runner/main.cpp +7 -1
- package/flutter_app/windows/runner/resources/app_icon.ico +0 -0
- package/lib/manager.js +445 -83
- package/package.json +17 -3
- package/runtime/paths.js +3 -1
- package/server/admin/access.js +198 -0
- package/server/admin/admin.css +268 -0
- package/server/admin/admin.js +348 -0
- package/server/admin/analytics.js +128 -0
- package/server/admin/index.html +1015 -0
- package/server/admin/login.html +290 -0
- package/server/admin/logo.svg +43 -0
- package/server/admin/sql.js +134 -0
- package/server/admin/users.js +147 -0
- package/server/config/origins.js +3 -1
- package/server/db/database.js +92 -0
- package/server/db/ftsQuery.js +27 -0
- package/server/http/routes.js +1 -0
- package/server/http/static.js +23 -6
- package/server/index.js +1 -1
- package/server/middleware/adminAuth.js +48 -0
- package/server/middleware/auth.js +1 -40
- package/server/public/.last_build_id +1 -1
- package/server/public/app_icon.png +0 -0
- package/server/public/assets/AssetManifest.bin +1 -1
- package/server/public/assets/AssetManifest.bin.json +1 -1
- package/server/public/assets/assets/branding/app_icon_1024.png +0 -0
- package/server/public/assets/assets/branding/app_icon_256.png +0 -0
- package/server/public/assets/assets/branding/app_icon_512.png +0 -0
- package/server/public/assets/assets/branding/app_icon_light_1024.png +0 -0
- package/server/public/assets/assets/branding/app_icon_light_256.png +0 -0
- package/server/public/assets/assets/branding/app_icon_light_512.png +0 -0
- package/server/public/assets/assets/branding/onboarding_intro.mp4 +0 -0
- package/server/public/assets/assets/branding/tray_icon_light_template.png +0 -0
- package/server/public/assets/assets/branding/tray_icon_template.png +0 -0
- package/server/public/assets/fonts/MaterialIcons-Regular.otf +0 -0
- package/server/public/assets/web/icons/Icon-192.png +0 -0
- package/server/public/favicon.png +0 -0
- package/server/public/favicon.svg +40 -9
- package/server/public/favicon_light.svg +43 -0
- package/server/public/flutter_bootstrap.js +2 -2
- package/server/public/icons/Icon-192-light.png +0 -0
- package/server/public/icons/Icon-192.png +0 -0
- package/server/public/icons/Icon-512-light.png +0 -0
- package/server/public/icons/Icon-512.png +0 -0
- package/server/public/icons/Icon-maskable-192-light.png +0 -0
- package/server/public/icons/Icon-maskable-192.png +0 -0
- package/server/public/icons/Icon-maskable-512-light.png +0 -0
- package/server/public/icons/Icon-maskable-512.png +0 -0
- package/server/public/main.dart.js +88944 -85720
- package/server/routes/admin.js +632 -0
- package/server/routes/agent_profiles.js +3 -0
- package/server/routes/agents.js +1 -1
- package/server/routes/auth.js +3 -1
- package/server/routes/browser.js +14 -0
- package/server/routes/browser_extension.js +21 -4
- package/server/routes/desktop.js +10 -0
- package/server/routes/mcp.js +29 -13
- package/server/routes/memory.js +23 -1
- package/server/routes/messaging.js +2 -0
- package/server/routes/screenHistory.js +14 -8
- package/server/routes/settings.js +14 -2
- package/server/routes/stream.js +12 -3
- package/server/routes/triggers.js +4 -4
- package/server/routes/voice_assistant.js +36 -1
- package/server/routes/workspace.js +86 -0
- package/server/services/account/admin_two_factor.js +132 -0
- package/server/services/account/password_policy.js +6 -1
- package/server/services/ai/completion.js +44 -0
- package/server/services/ai/engine.js +321 -500
- package/server/services/ai/imageAnalysis.js +9 -5
- package/server/services/ai/logFormat.js +46 -0
- package/server/services/ai/loopPolicy.js +11 -0
- package/server/services/ai/messagingFallback.js +228 -0
- package/server/services/ai/models.js +194 -55
- package/server/services/ai/providerRetry.js +169 -0
- package/server/services/ai/providers/anthropic.js +15 -4
- package/server/services/ai/providers/google.js +38 -11
- package/server/services/ai/providers/grok.js +19 -68
- package/server/services/ai/providers/grokOauth.js +141 -0
- package/server/services/ai/providers/nvidia.js +154 -0
- package/server/services/ai/providers/ollama.js +76 -39
- package/server/services/ai/providers/openai.js +20 -31
- package/server/services/ai/providers/openaiCodex.js +6 -2
- package/server/services/ai/providers/openaiCompatible.js +70 -0
- package/server/services/ai/providers/openrouter.js +162 -0
- package/server/services/ai/settings.js +30 -0
- package/server/services/ai/systemPrompt.js +51 -29
- package/server/services/ai/taskAnalysis.js +60 -1
- package/server/services/ai/toolEvidence.js +207 -0
- package/server/services/ai/toolSelector.js +8 -1
- package/server/services/ai/tools.js +80 -15
- package/server/services/android/controller.js +36 -1
- package/server/services/browser/controller.js +18 -0
- package/server/services/browser/extension/manifest.js +33 -0
- package/server/services/browser/extension/provider.js +12 -6
- package/server/services/browser/extension/registry.js +229 -18
- package/server/services/desktop/protocol.js +1 -0
- package/server/services/desktop/provider.js +4 -0
- package/server/services/desktop/registry.js +104 -1
- package/server/services/desktop/screenRecorder.js +208 -98
- package/server/services/desktop/screen_recorder_support.js +46 -0
- package/server/services/integrations/google/provider.js +13 -0
- package/server/services/integrations/home_assistant/constants.js +88 -0
- package/server/services/integrations/home_assistant/network.js +207 -0
- package/server/services/integrations/home_assistant/provider.js +249 -0
- package/server/services/integrations/home_assistant/snapshot.js +98 -0
- package/server/services/integrations/home_assistant/tools.js +101 -0
- package/server/services/integrations/manager.js +5 -0
- package/server/services/integrations/registry.js +2 -0
- package/server/services/integrations/trello/provider.js +8 -2
- package/server/services/manager.js +51 -47
- package/server/services/mcp/client.js +208 -268
- package/server/services/mcp/client_support.js +172 -0
- package/server/services/mcp/recovery.js +116 -0
- package/server/services/mcp/tool_operations.js +123 -0
- package/server/services/memory/ingestion.js +185 -370
- package/server/services/memory/ingestion_coverage.js +129 -0
- package/server/services/memory/ingestion_documents.js +123 -0
- package/server/services/memory/ingestion_support.js +171 -0
- package/server/services/memory/intelligence.js +181 -0
- package/server/services/memory/manager.js +476 -32
- package/server/services/messaging/automation.js +71 -134
- package/server/services/messaging/formatting_guides.js +26 -1
- package/server/services/messaging/inbound_queue.js +111 -0
- package/server/services/messaging/manager.js +25 -8
- package/server/services/messaging/typing_keepalive.js +110 -0
- package/server/services/runtime/manager.js +7 -3
- package/server/services/runtime/settings.js +17 -0
- package/server/services/streaming/android-stream.js +296 -32
- package/server/services/streaming/stream-hub.js +1 -1
- package/server/services/tasks/integration_runtime.js +4 -1
- package/server/services/tasks/runtime.js +415 -56
- package/server/services/tasks/task_repository.js +48 -6
- package/server/services/websocket.js +8 -2
- package/server/services/widgets/service.js +17 -1
- package/server/services/workspace/manager.js +116 -0
- package/server/utils/logger.js +44 -6
- package/server/utils/security.js +3 -0
- package/server/utils/version.js +29 -19
- 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(
|
|
45
|
-
bgSecondary: Color(
|
|
46
|
-
bgTertiary: Color(
|
|
47
|
-
bgCard: Color(
|
|
48
|
-
textPrimary: Color(
|
|
49
|
-
textSecondary: Color(
|
|
50
|
-
textMuted: Color(
|
|
51
|
-
accent: Color(
|
|
52
|
-
accentHover: Color(
|
|
53
|
-
accentAlt: Color(
|
|
54
|
-
accentMuted: Color(
|
|
55
|
-
border: Color(
|
|
56
|
-
borderLight: Color(
|
|
57
|
-
success: Color(
|
|
58
|
-
warning: Color(
|
|
59
|
-
danger: Color(
|
|
60
|
-
info: Color(
|
|
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(
|
|
65
|
-
bgSecondary: Color(
|
|
66
|
-
bgTertiary: Color(
|
|
67
|
-
bgCard: Color(
|
|
68
|
-
textPrimary: Color(
|
|
69
|
-
textSecondary: Color(
|
|
70
|
-
textMuted: Color(
|
|
71
|
-
accent: Color(
|
|
72
|
-
accentHover: Color(
|
|
73
|
-
accentAlt: Color(
|
|
74
|
-
accentMuted: Color(
|
|
75
|
-
border: Color(
|
|
76
|
-
borderLight: Color(
|
|
77
|
-
success: Color(
|
|
78
|
-
warning: Color(
|
|
79
|
-
danger: Color(
|
|
80
|
-
info: Color(
|
|
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
|
);
|
|
Binary file
|
|
@@ -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,
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/flutter_app/pubspec.lock
CHANGED
|
@@ -418,10 +418,10 @@ packages:
|
|
|
418
418
|
dependency: "direct main"
|
|
419
419
|
description:
|
|
420
420
|
name: google_fonts
|
|
421
|
-
sha256:
|
|
421
|
+
sha256: "4e9391085e524954a51e3625b7c9c7e9851dc3f376603208bb45c24b9a66255d"
|
|
422
422
|
url: "https://pub.dev"
|
|
423
423
|
source: hosted
|
|
424
|
-
version: "
|
|
424
|
+
version: "8.1.0"
|
|
425
425
|
hotkey_manager:
|
|
426
426
|
dependency: "direct main"
|
|
427
427
|
description:
|
package/flutter_app/pubspec.yaml
CHANGED
|
@@ -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: ^
|
|
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
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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>
|