neoagent 2.3.1-beta.56 → 2.3.1-beta.57
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/flutter_app/lib/main_navigation.dart +2 -7
- package/flutter_app/lib/main_recordings.dart +382 -332
- package/flutter_app/lib/main_settings.dart +77 -0
- package/flutter_app/lib/main_shared.dart +41 -30
- package/flutter_app/lib/main_theme.dart +28 -30
- package/flutter_app/lib/src/theme/palette.dart +14 -14
- package/package.json +1 -1
- package/server/public/.last_build_id +1 -1
- package/server/public/flutter_bootstrap.js +1 -1
- package/server/public/main.dart.js +37116 -37106
|
@@ -265,6 +265,8 @@ class _SettingsPanelState extends State<SettingsPanel> {
|
|
|
265
265
|
],
|
|
266
266
|
_buildSettingsOverview(controller, availableModels.length),
|
|
267
267
|
const SizedBox(height: 16),
|
|
268
|
+
_buildManagementSection(controller),
|
|
269
|
+
const SizedBox(height: 16),
|
|
268
270
|
_buildWorkspaceSection(controller),
|
|
269
271
|
const SizedBox(height: 16),
|
|
270
272
|
_buildModelsSection(
|
|
@@ -451,6 +453,81 @@ class _SettingsPanelState extends State<SettingsPanel> {
|
|
|
451
453
|
);
|
|
452
454
|
}
|
|
453
455
|
|
|
456
|
+
Widget _buildManagementSection(NeoAgentController controller) {
|
|
457
|
+
return Card(
|
|
458
|
+
child: Padding(
|
|
459
|
+
padding: const EdgeInsets.all(20),
|
|
460
|
+
child: Column(
|
|
461
|
+
crossAxisAlignment: CrossAxisAlignment.start,
|
|
462
|
+
children: <Widget>[
|
|
463
|
+
const _SectionTitle('Subcategories'),
|
|
464
|
+
const SizedBox(height: 10),
|
|
465
|
+
Text(
|
|
466
|
+
'Open settings areas that have their own dedicated management screens.',
|
|
467
|
+
style: TextStyle(color: _textSecondary, height: 1.45),
|
|
468
|
+
),
|
|
469
|
+
const SizedBox(height: 16),
|
|
470
|
+
InkWell(
|
|
471
|
+
onTap: () => controller.setSelectedSection(AppSection.agents),
|
|
472
|
+
borderRadius: BorderRadius.circular(20),
|
|
473
|
+
child: Ink(
|
|
474
|
+
decoration: BoxDecoration(
|
|
475
|
+
color: _bgSecondary.withValues(alpha: 0.7),
|
|
476
|
+
borderRadius: BorderRadius.circular(20),
|
|
477
|
+
border: Border.all(color: _border),
|
|
478
|
+
),
|
|
479
|
+
child: Padding(
|
|
480
|
+
padding: const EdgeInsets.all(16),
|
|
481
|
+
child: Row(
|
|
482
|
+
children: <Widget>[
|
|
483
|
+
Container(
|
|
484
|
+
width: 44,
|
|
485
|
+
height: 44,
|
|
486
|
+
decoration: BoxDecoration(
|
|
487
|
+
color: _accentMuted,
|
|
488
|
+
borderRadius: BorderRadius.circular(14),
|
|
489
|
+
),
|
|
490
|
+
child: Icon(
|
|
491
|
+
Icons.smart_toy_outlined,
|
|
492
|
+
color: _accentHover,
|
|
493
|
+
),
|
|
494
|
+
),
|
|
495
|
+
const SizedBox(width: 14),
|
|
496
|
+
Expanded(
|
|
497
|
+
child: Column(
|
|
498
|
+
crossAxisAlignment: CrossAxisAlignment.start,
|
|
499
|
+
children: <Widget>[
|
|
500
|
+
Text(
|
|
501
|
+
'Agents',
|
|
502
|
+
style: TextStyle(
|
|
503
|
+
fontWeight: FontWeight.w700,
|
|
504
|
+
color: _textPrimary,
|
|
505
|
+
),
|
|
506
|
+
),
|
|
507
|
+
const SizedBox(height: 4),
|
|
508
|
+
Text(
|
|
509
|
+
'Manage specialist agents, routing roles, memory separation, and account assignment.',
|
|
510
|
+
style: TextStyle(
|
|
511
|
+
color: _textSecondary,
|
|
512
|
+
height: 1.4,
|
|
513
|
+
),
|
|
514
|
+
),
|
|
515
|
+
],
|
|
516
|
+
),
|
|
517
|
+
),
|
|
518
|
+
const SizedBox(width: 12),
|
|
519
|
+
Icon(Icons.chevron_right_rounded, color: _textSecondary),
|
|
520
|
+
],
|
|
521
|
+
),
|
|
522
|
+
),
|
|
523
|
+
),
|
|
524
|
+
),
|
|
525
|
+
],
|
|
526
|
+
),
|
|
527
|
+
),
|
|
528
|
+
);
|
|
529
|
+
}
|
|
530
|
+
|
|
454
531
|
Widget _buildModelsSection({
|
|
455
532
|
required NeoAgentController controller,
|
|
456
533
|
required List<DropdownMenuItem<String>> modelChoices,
|
|
@@ -158,6 +158,7 @@ class _EntranceMotionState extends State<_EntranceMotion> {
|
|
|
158
158
|
|
|
159
159
|
class _GlassSurface extends StatelessWidget {
|
|
160
160
|
const _GlassSurface({
|
|
161
|
+
super.key,
|
|
161
162
|
required this.child,
|
|
162
163
|
this.width,
|
|
163
164
|
this.padding,
|
|
@@ -241,7 +242,6 @@ List<AppSection> _mainSections(NeoAgentController controller) {
|
|
|
241
242
|
AppSection.memory,
|
|
242
243
|
if (controller.showHealthSection) AppSection.health,
|
|
243
244
|
AppSection.settings,
|
|
244
|
-
AppSection.agents,
|
|
245
245
|
AppSection.messaging,
|
|
246
246
|
];
|
|
247
247
|
}
|
|
@@ -1513,11 +1513,13 @@ class _StatusPill extends StatelessWidget {
|
|
|
1513
1513
|
|
|
1514
1514
|
@override
|
|
1515
1515
|
Widget build(BuildContext context) {
|
|
1516
|
-
return
|
|
1516
|
+
return AnimatedContainer(
|
|
1517
|
+
duration: const Duration(milliseconds: 180),
|
|
1517
1518
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 6),
|
|
1518
1519
|
decoration: BoxDecoration(
|
|
1519
1520
|
borderRadius: BorderRadius.circular(999),
|
|
1520
|
-
color: color.withValues(alpha: 0.
|
|
1521
|
+
color: color.withValues(alpha: 0.14),
|
|
1522
|
+
border: Border.all(color: color.withValues(alpha: 0.18)),
|
|
1521
1523
|
),
|
|
1522
1524
|
child: Text(
|
|
1523
1525
|
label,
|
|
@@ -1539,14 +1541,13 @@ class _MetaPill extends StatelessWidget {
|
|
|
1539
1541
|
|
|
1540
1542
|
@override
|
|
1541
1543
|
Widget build(BuildContext context) {
|
|
1542
|
-
final accentColor = color ??
|
|
1543
|
-
return
|
|
1544
|
+
final accentColor = color ?? _accentAlt;
|
|
1545
|
+
return _GlassSurface(
|
|
1544
1546
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
),
|
|
1547
|
+
borderRadius: BorderRadius.circular(999),
|
|
1548
|
+
blurSigma: 10,
|
|
1549
|
+
fillColor: _bgCard.withValues(alpha: 0.86),
|
|
1550
|
+
borderColor: _borderLight,
|
|
1550
1551
|
child: Row(
|
|
1551
1552
|
mainAxisSize: MainAxisSize.min,
|
|
1552
1553
|
children: <Widget>[
|
|
@@ -1573,14 +1574,13 @@ class _InfoChip extends StatelessWidget {
|
|
|
1573
1574
|
|
|
1574
1575
|
@override
|
|
1575
1576
|
Widget build(BuildContext context) {
|
|
1576
|
-
return
|
|
1577
|
+
return _GlassSurface(
|
|
1577
1578
|
width: double.infinity,
|
|
1578
1579
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10),
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
),
|
|
1580
|
+
borderRadius: BorderRadius.circular(16),
|
|
1581
|
+
blurSigma: 12,
|
|
1582
|
+
fillColor: _bgCard.withValues(alpha: 0.72),
|
|
1583
|
+
borderColor: _borderLight,
|
|
1584
1584
|
child: Row(
|
|
1585
1585
|
children: <Widget>[
|
|
1586
1586
|
Icon(icon, size: 16, color: Colors.white.withValues(alpha: 0.72)),
|
|
@@ -1871,13 +1871,12 @@ class _RecordingPermissionBadge extends StatelessWidget {
|
|
|
1871
1871
|
),
|
|
1872
1872
|
};
|
|
1873
1873
|
|
|
1874
|
-
return
|
|
1874
|
+
return _GlassSurface(
|
|
1875
1875
|
padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 9),
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
),
|
|
1876
|
+
borderRadius: BorderRadius.circular(16),
|
|
1877
|
+
blurSigma: 10,
|
|
1878
|
+
fillColor: color.withValues(alpha: 0.09),
|
|
1879
|
+
borderColor: color.withValues(alpha: 0.22),
|
|
1881
1880
|
child: Row(
|
|
1882
1881
|
mainAxisSize: MainAxisSize.min,
|
|
1883
1882
|
children: <Widget>[
|
|
@@ -1950,8 +1949,13 @@ class _AudioLevelBar extends StatelessWidget {
|
|
|
1950
1949
|
@override
|
|
1951
1950
|
Widget build(BuildContext context) {
|
|
1952
1951
|
final progress = ((valueDb + 72) / 72).clamp(0.0, 1.0);
|
|
1953
|
-
return
|
|
1954
|
-
width: compact ?
|
|
1952
|
+
return _GlassSurface(
|
|
1953
|
+
width: compact ? 168 : 240,
|
|
1954
|
+
padding: const EdgeInsets.all(12),
|
|
1955
|
+
borderRadius: BorderRadius.circular(18),
|
|
1956
|
+
blurSigma: 10,
|
|
1957
|
+
fillColor: _bgCard.withValues(alpha: 0.88),
|
|
1958
|
+
borderColor: _borderLight,
|
|
1955
1959
|
child: Column(
|
|
1956
1960
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
1957
1961
|
children: <Widget>[
|
|
@@ -1976,14 +1980,21 @@ class _AudioLevelBar extends StatelessWidget {
|
|
|
1976
1980
|
),
|
|
1977
1981
|
],
|
|
1978
1982
|
),
|
|
1979
|
-
const SizedBox(height:
|
|
1983
|
+
const SizedBox(height: 10),
|
|
1980
1984
|
ClipRRect(
|
|
1981
1985
|
borderRadius: BorderRadius.circular(999),
|
|
1982
|
-
child:
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1986
|
+
child: TweenAnimationBuilder<double>(
|
|
1987
|
+
tween: Tween<double>(begin: 0, end: progress),
|
|
1988
|
+
duration: const Duration(milliseconds: 220),
|
|
1989
|
+
curve: Curves.easeOutCubic,
|
|
1990
|
+
builder: (context, animatedValue, _) {
|
|
1991
|
+
return LinearProgressIndicator(
|
|
1992
|
+
value: animatedValue,
|
|
1993
|
+
minHeight: compact ? 7 : 8,
|
|
1994
|
+
color: color,
|
|
1995
|
+
backgroundColor: _borderLight,
|
|
1996
|
+
);
|
|
1997
|
+
},
|
|
1987
1998
|
),
|
|
1988
1999
|
),
|
|
1989
2000
|
],
|
|
@@ -65,13 +65,13 @@ List<BoxShadow> get _softPanelShadow => <BoxShadow>[
|
|
|
65
65
|
];
|
|
66
66
|
|
|
67
67
|
Color get _glassFill =>
|
|
68
|
-
_bgCard.withValues(alpha: _palette == _darkPalette ? 0.
|
|
68
|
+
_bgCard.withValues(alpha: _palette == _darkPalette ? 0.78 : 0.88);
|
|
69
69
|
Color get _glassOverlay =>
|
|
70
|
-
Colors.white.withValues(alpha: _palette == _darkPalette ? 0.
|
|
70
|
+
Colors.white.withValues(alpha: _palette == _darkPalette ? 0.04 : 0.12);
|
|
71
71
|
Color get _glassBorder =>
|
|
72
|
-
Colors.white.withValues(alpha: _palette == _darkPalette ? 0.
|
|
72
|
+
Colors.white.withValues(alpha: _palette == _darkPalette ? 0.12 : 0.26);
|
|
73
73
|
Color get _glassHighlight =>
|
|
74
|
-
Colors.white.withValues(alpha: _palette == _darkPalette ? 0.
|
|
74
|
+
Colors.white.withValues(alpha: _palette == _darkPalette ? 0.1 : 0.18);
|
|
75
75
|
|
|
76
76
|
LinearGradient get _liquidMetalGradient => LinearGradient(
|
|
77
77
|
colors: <Color>[
|
|
@@ -84,18 +84,18 @@ LinearGradient get _liquidMetalGradient => LinearGradient(
|
|
|
84
84
|
end: const Alignment(1, 1),
|
|
85
85
|
);
|
|
86
86
|
|
|
87
|
-
TextStyle _displayTitleStyle([double size = 28]) =>
|
|
87
|
+
TextStyle _displayTitleStyle([double size = 28]) => TextStyle(
|
|
88
88
|
fontSize: size,
|
|
89
89
|
fontWeight: FontWeight.w700,
|
|
90
|
-
height: 1.
|
|
91
|
-
letterSpacing: -0.
|
|
90
|
+
height: 1.08,
|
|
91
|
+
letterSpacing: -0.8,
|
|
92
92
|
color: _textPrimary,
|
|
93
93
|
);
|
|
94
94
|
|
|
95
|
-
TextStyle _sectionEyebrowStyle() =>
|
|
96
|
-
fontSize:
|
|
95
|
+
TextStyle _sectionEyebrowStyle() => TextStyle(
|
|
96
|
+
fontSize: 12,
|
|
97
97
|
fontWeight: FontWeight.w700,
|
|
98
|
-
letterSpacing: 1.
|
|
98
|
+
letterSpacing: 1.0,
|
|
99
99
|
color: _accentHover,
|
|
100
100
|
);
|
|
101
101
|
|
|
@@ -117,24 +117,25 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
117
117
|
onSurface: palette.textPrimary,
|
|
118
118
|
error: palette.danger,
|
|
119
119
|
),
|
|
120
|
-
textTheme:
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
textTheme: base.textTheme.apply(
|
|
121
|
+
bodyColor: palette.textPrimary,
|
|
122
|
+
displayColor: palette.textPrimary,
|
|
123
|
+
),
|
|
123
124
|
cardTheme: CardThemeData(
|
|
124
125
|
color: palette.bgCard.withValues(
|
|
125
|
-
alpha: brightness == Brightness.dark ? 0.
|
|
126
|
+
alpha: brightness == Brightness.dark ? 0.86 : 0.96,
|
|
126
127
|
),
|
|
127
128
|
shadowColor: Colors.black.withValues(
|
|
128
129
|
alpha: brightness == Brightness.dark ? 0.24 : 0.12,
|
|
129
130
|
),
|
|
130
131
|
surfaceTintColor: Colors.transparent,
|
|
131
|
-
elevation: brightness == Brightness.dark ?
|
|
132
|
+
elevation: brightness == Brightness.dark ? 8 : 3,
|
|
132
133
|
margin: EdgeInsets.zero,
|
|
133
134
|
shape: RoundedRectangleBorder(
|
|
134
135
|
borderRadius: BorderRadius.circular(28),
|
|
135
136
|
side: BorderSide(
|
|
136
137
|
color: Colors.white.withValues(
|
|
137
|
-
alpha: brightness == Brightness.dark ? 0.
|
|
138
|
+
alpha: brightness == Brightness.dark ? 0.08 : 0.22,
|
|
138
139
|
),
|
|
139
140
|
),
|
|
140
141
|
),
|
|
@@ -142,7 +143,7 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
142
143
|
inputDecorationTheme: InputDecorationTheme(
|
|
143
144
|
filled: true,
|
|
144
145
|
fillColor: palette.bgSecondary.withValues(
|
|
145
|
-
alpha: brightness == Brightness.dark ? 0.
|
|
146
|
+
alpha: brightness == Brightness.dark ? 0.82 : 0.84,
|
|
146
147
|
),
|
|
147
148
|
border: OutlineInputBorder(
|
|
148
149
|
borderRadius: BorderRadius.circular(18),
|
|
@@ -186,10 +187,10 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
186
187
|
),
|
|
187
188
|
),
|
|
188
189
|
),
|
|
189
|
-
textStyle:
|
|
190
|
-
fontSize:
|
|
190
|
+
textStyle: const TextStyle(
|
|
191
|
+
fontSize: 15,
|
|
191
192
|
fontWeight: FontWeight.w700,
|
|
192
|
-
letterSpacing: 0.
|
|
193
|
+
letterSpacing: -0.1,
|
|
193
194
|
),
|
|
194
195
|
),
|
|
195
196
|
),
|
|
@@ -206,10 +207,7 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
206
207
|
),
|
|
207
208
|
padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 16),
|
|
208
209
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(18)),
|
|
209
|
-
textStyle:
|
|
210
|
-
fontSize: 14,
|
|
211
|
-
fontWeight: FontWeight.w700,
|
|
212
|
-
),
|
|
210
|
+
textStyle: const TextStyle(fontSize: 15, fontWeight: FontWeight.w700),
|
|
213
211
|
),
|
|
214
212
|
),
|
|
215
213
|
pageTransitionsTheme: const PageTransitionsTheme(
|
|
@@ -224,10 +222,10 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
224
222
|
textButtonTheme: TextButtonThemeData(
|
|
225
223
|
style: TextButton.styleFrom(
|
|
226
224
|
foregroundColor: palette.accentHover,
|
|
227
|
-
textStyle:
|
|
228
|
-
fontSize:
|
|
225
|
+
textStyle: const TextStyle(
|
|
226
|
+
fontSize: 14,
|
|
229
227
|
fontWeight: FontWeight.w700,
|
|
230
|
-
letterSpacing: 0.
|
|
228
|
+
letterSpacing: -0.05,
|
|
231
229
|
),
|
|
232
230
|
),
|
|
233
231
|
),
|
|
@@ -236,11 +234,11 @@ ThemeData _buildNeoAgentTheme(NeoAgentPalette palette, Brightness brightness) {
|
|
|
236
234
|
surfaceTintColor: Colors.transparent,
|
|
237
235
|
foregroundColor: palette.textPrimary,
|
|
238
236
|
elevation: 0,
|
|
239
|
-
titleTextStyle:
|
|
237
|
+
titleTextStyle: TextStyle(
|
|
240
238
|
color: palette.textPrimary,
|
|
241
239
|
fontSize: 18,
|
|
242
|
-
fontWeight: FontWeight.
|
|
243
|
-
letterSpacing: -0.
|
|
240
|
+
fontWeight: FontWeight.w600,
|
|
241
|
+
letterSpacing: -0.3,
|
|
244
242
|
),
|
|
245
243
|
),
|
|
246
244
|
dialogTheme: DialogThemeData(
|
|
@@ -44,16 +44,16 @@ const NeoAgentPalette darkPalette = NeoAgentPalette(
|
|
|
44
44
|
bgPrimary: Color(0xFF071015),
|
|
45
45
|
bgSecondary: Color(0xFF0E171E),
|
|
46
46
|
bgTertiary: Color(0xFF15232B),
|
|
47
|
-
bgCard: Color(
|
|
47
|
+
bgCard: Color(0xFF16212A),
|
|
48
48
|
textPrimary: Color(0xFFF5EFE4),
|
|
49
|
-
textSecondary: Color(
|
|
50
|
-
textMuted: Color(
|
|
49
|
+
textSecondary: Color(0xFFD2D7DC),
|
|
50
|
+
textMuted: Color(0xFF95A0A8),
|
|
51
51
|
accent: Color(0xFFC7A36A),
|
|
52
52
|
accentHover: Color(0xFFE4C58D),
|
|
53
53
|
accentAlt: Color(0xFF5FA897),
|
|
54
54
|
accentMuted: Color(0x24C7A36A),
|
|
55
|
-
border: Color(
|
|
56
|
-
borderLight: Color(
|
|
55
|
+
border: Color(0x30576875),
|
|
56
|
+
borderLight: Color(0x4A7B8D99),
|
|
57
57
|
success: Color(0xFF37B67E),
|
|
58
58
|
warning: Color(0xFFD49A43),
|
|
59
59
|
danger: Color(0xFFE26E61),
|
|
@@ -61,19 +61,19 @@ const NeoAgentPalette darkPalette = NeoAgentPalette(
|
|
|
61
61
|
);
|
|
62
62
|
|
|
63
63
|
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(
|
|
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
71
|
accent: Color(0xFF8F6D3E),
|
|
72
72
|
accentHover: Color(0xFFAF8750),
|
|
73
73
|
accentAlt: Color(0xFF2F7D6E),
|
|
74
74
|
accentMuted: Color(0x1F8F6D3E),
|
|
75
|
-
border: Color(
|
|
76
|
-
borderLight: Color(
|
|
75
|
+
border: Color(0x223F4652),
|
|
76
|
+
borderLight: Color(0x3847505D),
|
|
77
77
|
success: Color(0xFF1F8C58),
|
|
78
78
|
warning: Color(0xFFB87322),
|
|
79
79
|
danger: Color(0xFFD25B4D),
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4c06defd54f49c9d84625740934d71be
|
|
@@ -37,6 +37,6 @@ _flutter.buildConfig = {"engineRevision":"42d3d75a56efe1a2e9902f52dc8006099c45d9
|
|
|
37
37
|
|
|
38
38
|
_flutter.loader.load({
|
|
39
39
|
serviceWorkerSettings: {
|
|
40
|
-
serviceWorkerVersion: "
|
|
40
|
+
serviceWorkerVersion: "1045065206" /* Flutter's service worker is deprecated and will be removed in a future Flutter release. */
|
|
41
41
|
}
|
|
42
42
|
});
|