Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
8b3e42b
Upgrade flutter candidate and DCM version
kenzieschmoll Oct 20, 2026
ca661db
Fix test for new SDK version
kenzieschmoll Oct 20, 2026
14080a0
Update packages/devtools_app_shared/CHANGELOG.md
kenzieschmoll Oct 20, 2026
2c93daa
Update packages/devtools_app/lib/src/shared/diagnostics/variable_fact…
kenzieschmoll Oct 20, 2026
7130fb2
increase bundle size
kenzieschmoll Oct 20, 2026
ec4d2b3
Merge branch 'upgrades' of github.com:kenzieschmoll/devtools into upg…
kenzieschmoll Oct 20, 2026
468387e
increase zip size too
kenzieschmoll Oct 20, 2026
4fe9260
Merge branch 'master' of github.com:flutter/devtools into upgrades
kenzieschmoll Oct 26, 2026
b62df22
upgrade flutter
kenzieschmoll Oct 26, 2026
82f52c3
Work around macOS dart:io posix_spawn hang in dt
kenzieschmoll Oct 27, 2026
f33df2f
Fall back when DDS does not collect history for a stream
kenzieschmoll Oct 28, 2026
574a18a
change rpc order
kenzieschmoll Oct 28, 2026
0c8aebe
Upgrade to latest flutter sha
kenzieschmoll Nov 5, 2026
a0792d3
Revert "Fall back when DDS does not collect history for a stream"
kenzieschmoll Nov 5, 2026
def8c84
Revert "Work around macOS dart:io posix_spawn hang in dt"
kenzieschmoll Nov 5, 2026
3aa48f3
Merge branch 'master' into upgrades
kenzieschmoll Nov 5, 2026
dbbf831
Update pubspec.lock for new flutter candidate
kenzieschmoll Nov 5, 2026
7c4e908
Merge remote-tracking branch 'upstream/master' into upgrades
kenzieschmoll Nov 5, 2026
47e23ad
Revert "change rpc order"
kenzieschmoll Nov 6, 2026
e9874cf
Upgrade to latest dcm version
kenzieschmoll Nov 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ jobs:
wget -qO- https://dcm.dev/pgp-key.public | sudo gpg --dearmor -o /usr/share/keyrings/dcm.gpg
echo 'deb [signed-by=/usr/share/keyrings/dcm.gpg arch=amd64] https://dcm.dev/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list
sudo apt-get update
sudo apt-get install dcm=1.39.1-1 # To avoid errors add `-1` (build number) to the version
sudo apt-get install dcm=1.40.4-1 # To avoid errors add `-1` (build number) to the version
sudo chmod +x /usr/bin/dcm
echo "$(dcm --version)"
- name: Setup Dart SDK
Expand Down
2 changes: 1 addition & 1 deletion flutter-candidate.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d26bc92262c09e1f60330a643e25b1aebd69a223
de37392db476791bb9570b5c910cb309bf5845a0
4 changes: 2 additions & 2 deletions packages/devtools_app/benchmark/web_bundle_size_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ import 'package:path/path.dart' as path;
import 'package:test/test.dart';

// Benchmark size in kB.
const bundleSizeBenchmark = 6000;
const gzipBundleSizeBenchmark = 1750;
const bundleSizeBenchmark = 6200;
const gzipBundleSizeBenchmark = 1900;

void main() {
group('Web Compile', () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class FlexLayoutExplorerWidgetState
alignmentEnumEntries = MainAxisAlignment.values;
selected = propertiesLocal.mainAxisAlignment;
} else {
alignmentEnumEntries = CrossAxisAlignment.values.toList(growable: true);
alignmentEnumEntries = CrossAxisAlignment.values.toList();
if (propertiesLocal.textBaseline == null) {
// TODO(albertusangga): Look for ways to visualize baseline when it is null
alignmentEnumEntries.remove(CrossAxisAlignment.baseline);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,7 @@ class FlutterFramesChartItem extends StatelessWidget {
child: Column(
children: [
// Dummy child so that the InkWell does not take up the entire column.
const Expanded(child: SizedBox()),
const Spacer(),
Row(
crossAxisAlignment: CrossAxisAlignment.end,
children: [ui, raster],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1270,7 +1270,7 @@ class InspectorObjectGroupManager {
void _setNextNull() {
_next = null;
if (_pendingNext != null) {
_pendingNext!.complete(null);
_pendingNext!.complete();
_pendingNext = null;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -455,7 +455,7 @@ List<DartObjectNode> createVariablesForBytes(
variables.add(
DartObjectNode.fromValue(
name: '[$name]',
value: result[i],
value: _formatSimdValue(result[i]) ?? result[i],
isolateRef: isolateRef,
artificialName: true,
),
Expand All @@ -464,6 +464,38 @@ List<DartObjectNode> createVariablesForBytes(
return variables;
}

/// The number of decimal places used to display the lanes of a [Float32x4] or
/// [Float64x2] value.
const _simdFloatFractionDigits = 6;

/// The number of hex digits used to display a 32-bit lane of an [Int32x4]
/// value.
const _simdInt32HexDigits = 8;

/// Returns a display string for [value] if it is a SIMD value ([Int32x4],
/// [Float32x4], or [Float64x2]), or null otherwise.
///
/// We format these values manually instead of relying on `toString()` because
/// the output of `toString()` for SIMD types is platform dependent (the Dart
/// VM returns the opaque string 'V128', and the web returns a different format
/// than the VM historically did). Formatting the lanes ourselves ensures that
/// users see the actual values on every platform.
String? _formatSimdValue(Object? value) {
String formatFloat(double lane) =>
lane.toStringAsFixed(_simdFloatFractionDigits);
String formatInt32(int lane) =>
lane.toUnsigned(32).toRadixString(16).padLeft(_simdInt32HexDigits, '0');

return switch (value) {
Int32x4(:final x, :final y, :final z, :final w) =>
'[${[x, y, z, w].map(formatInt32).join(', ')}]',
Float32x4(:final x, :final y, :final z, :final w) =>
'[${[x, y, z, w].map(formatFloat).join(', ')}]',
Float64x2(:final x, :final y) => '[${[x, y].map(formatFloat).join(', ')}]',
_ => null,
};
}

List<DartObjectNode> createVariablesForSets(
Instance instance,
IsolateRef? isolateRef,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ class RateLimiter {
_pendingRequest = Completer();
await callback();
} finally {
_pendingRequest!.complete(null);
_pendingRequest!.complete();
}
}

Expand Down
2 changes: 1 addition & 1 deletion packages/devtools_app/lib/src/shared/ui/hover.dart
Original file line number Diff line number Diff line change
Expand Up @@ -583,7 +583,7 @@ class _HoverCardTooltipState extends State<HoverCardTooltip> {
unawaited(
hoverCardDataFuture.then(
(data) => completer.complete(data),
onError: (_) => completer.complete(null),
onError: (_) => completer.complete(),
),
);
return completer;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -372,13 +372,6 @@ void main() {
expect(
variable.children.first.displayValue,
'[ffffffff, 00000000, ffffffff, 00000000]',
skip: kIsWeb,
);
// Formatting is different on the web.
expect(
variable.children.first.displayValue,
'[-1, 0, -1, 0]',
skip: !kIsWeb,
);
});

Expand Down Expand Up @@ -408,12 +401,6 @@ void main() {
expect(
variable.children.first.displayValue,
'[0.000000, -232.199997, 2.330000, 9.000000]',
skip: kIsWeb,
);
expect(
variable.children.first.displayValue,
'[0, -232.1999969482422, 2.3299999237060547, 9]',
skip: !kIsWeb,
);
});

Expand All @@ -438,16 +425,7 @@ void main() {

await buildVariablesTree(variable);

expect(
variable.children.first.displayValue,
'[0.000000, -1232.222000]',
skip: kIsWeb,
);
expect(
variable.children.first.displayValue,
'[0, -1232.222]',
skip: !kIsWeb,
);
expect(variable.children.first.displayValue, '[0.000000, -1232.222000]');
});

test(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ void main() {
advanceClock(async);
expect(tracker.active.value, isTrue);

completer1.complete(null);
completer1.complete();
unawaited(completer1.future);
advanceClock(async);
expect(tracker.active.value, isTrue);

completer2.complete(null);
completer2.complete();
unawaited(completer2.future);
advanceClock(async);
expect(tracker.active.value, isFalse);
Expand All @@ -66,7 +66,7 @@ void main() {
advanceClock(async);
expect(tracker.active.value, isTrue);

completer2.complete(null);
completer2.complete();
unawaited(completer2.future);
advanceClock(async);
expect(tracker.active.value, isFalse);
Expand Down
1 change: 1 addition & 0 deletions packages/devtools_app_shared/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file or at https://developers.google.com/open-source/licenses/bsd.
-->
## 0.5.2-wip
* Removed redundant argument values.
* Fix `forEachIsolateHelper` to rethrow isolate callback exceptions directly
using `Future.wait` instead of wrapping them in a `ParallelWaitError`.
* Fix a `RangeError` thrown by `SplitPane` when the number of children
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -605,19 +605,19 @@ class EvalOnDartLibrary extends DisposableController
// This is an optimization to avoid sending stale requests across the wire.
void wrappedRequest() async {
if (isAlive != null && isAlive.disposed || disposed) {
response.complete(null);
response.complete();
return;
}
try {
final value = await request();
if (!disposed && value is! Sentinel) {
response.complete(value);
} else {
response.complete(null);
response.complete();
}
} catch (e) {
if (disposed || isAlive?.disposed == true) {
response.complete(null);
response.complete();
} else {
response.completeError(e);
}
Expand All @@ -629,7 +629,7 @@ class EvalOnDartLibrary extends DisposableController
wrappedRequest();
} else {
if (isAlive != null && isAlive.disposed || disposed) {
response.complete(null);
response.complete();
return response.future;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ class IsolateState {
_isolateNow = null;
_isolateLoadCompleter.safeComplete(
null,
() => _isolateLoadCompleter = Completer()..complete(null),
() => _isolateLoadCompleter = Completer()..complete(),
);
_isPaused.dispose();
}
Expand Down
Loading
Loading