11.3.1-dev
- Encode extension url asynchronously.
- Use default constant port for debug service.
- If we fail binding to the port, fall back to previous strategy of finding unbound ports.
- Add metrics measuring DevTools Initial Page Load time.
- Add
ext.dwds.sendEvent
service extension to dwds so other tools can send events to the debugger. Event format:{
'type': '<event type>',
'payload': {
'screen: '<screen name>',
'action: '<action name>'
}
}
Currently supported event values:{
'type: 'DevtoolsEvent',
'payload': {
'screen': 'debugger',
'action': 'pageReady'
}
}
11.3.0
- Update SDK constraint to
>=2.14.0 <3.0.0
- Depend on
vm_service
version 7.3.0
.
11.2.3
- Fix race causing intermittent
Aww, snap
errors on starting debugger with multiple breakpoints in source. - Fix needing chrome to be focus in order to wait for the isolate to exit on hot restart.
11.2.2
- Depend on
dds
version 2.1.1
. - Depend on
vm_service
version 7.2.0
.
11.2.1
- Recover from used port errors when starting debug service.
- Update min SDK constraint to
2.13.0
.
11.2.0
- Throw
SentinelException
instead of RPCError
on vm service API on unrecognized isolate. - Throw
RPCError
in getStack
if the application is not paused. - Recognize
dart:ui
library when debugging flutter apps. - Fix hang on hot restart when the application has a breakpoint.
- Fix out of memory issue during sending debug event notifications.
11.1.2
- Return empty library from
ChromeProxyService.getObject
for libraries present in medatata but not loaded at runtime. - Log failures to load kernel during expression evaluation.
- Show lowered final fields using their original dart names.
- Limit simultaneous connections to asset server to prevent broken sockets.
- Fix hangs in hot restart.
- Initial support for passing scope to
ChromeProxyService.evaluate
. - Require
build_web_compilers
version 3.0.0
so current version of dwds could be used with SDK stable 2.13.x
versions.
11.1.1
- Update versions of
package:sse
, package:vm_service
, package:dds
.
11.1.0
- Add global functions to the injected client for
dart.developer.postEvent
and dart.developer.registerExtension
. - Register new service extension
ext.dwds.emitEvent
so clients can emit events. This is intended to be used for analytics.
11.0.2
- Implement
_flutter.listViews
extension method in dwds vm client.
11.0.1
- Make adding and removing breakpoints match VM behavior:
- Allow adding existing breakpoints.
- Throw
RPCError
when removing non-existent breakpoints.
11.0.0
- Do not send
kServiceExtensionAdded
events to subscribers on the terminating isolate during hot restart. - Support
vm_service
version 6.2.0
. - Fix missing sdk libraries in
getObject()
calls. - Fix incorrect
rootLib
returned by ChromeProxyService
. - Fix not working breakpoints in library part files.
- Fix data race in calculating locations for a module.
- Fix uninitialized isolate after hot restart.
- Fix intermittent failure caused by evaluation not waiting for dependencies to be updated.
- The injected client now posts a top level event when the Dart application is loaded. This event is intended to be consumed by the Dart Debug Extension.
Breaking changes:
Dwds.start
no longer supports automatically injecting a devtools server. A devtoolsLauncher
callback must be provided to support launching devtools.
10.0.1
- Support
webkit_inspection_protocol
version ^1.0.0
.
10.0.0
- Support
VMService.evaluate
using expression compiler. - Update min sdk constraint to
>=2.13.0-144.0.dev
. - Throw
RPCError
on evaluation if the program is not paused. - Record
ErrorRef
returned by evaluation in analytics.
Breaking changes:
- Change
ExpressionCompiler.initialize
method to include module format. - Add
LoadStrategy.moduleFormat
to be used for communicating current module format to the expression compiler.
9.1.0
- Support authentication endpoint for the Dart Debug Extension.
- Support using WebSockets for the injected client by passing
useSseForInjectedClient: false
to Dwds.start()
. Unlike SSE, WebSockets do not currently support keepAlives here (beyond the standard WebSocket pings to keep the socket alive).
9.0.0
- Fix an issue where relative worker paths provided to the
ExpressionCompilerService
would cause a crash. - Fix an issue where the injected client connection could be lost while the application is paused.
- Support keep-alive for debug service connections.
- Depend on the latest
package:sse
. - Filter out DDC temporary variables from the variable inspection view.
- Add
DwdsEvent
s around stepping and evaluation. - Send an event to the Dart Debug Extension that contains VM service protocol URI.
- Depend on
package:vm_service
version 6.1.0+1
. - Update the
keepAlive
configs to prevent accidental reuse of a connection after stopping a debug session. - Support disabling the launching of Dart DevTools through
Alt + d
with enableDevtoolsLaunch
. - Opt all dart files out of null safety for min SDK constraint update.
Breaking changes:
LoadStrategy
s now require a moduleInfoForEntrypoint
.
8.0.3
- Fix an issue where failed hot restarts would hang indefinitely.
8.0.2
- Change
ExpressionCompiler
to accept FutureOr<int>
port configuration. - Depend on
package:vm_service
version 6.0.1-nullsafety.1
.
8.0.1
- Support null safe versions of
package:crypto
, package:uuid
and package:webdriver
.
8.0.0
- Improve logging around execution contexts.
- Remove the expression compilation dependency update from the create isolate critical path.
- Expose new event stream for future use with analytics.
- Update
ExpressionCompiler
to include new initialize
method which has a parameter for the null safety mode. - Update
ExpressionCompilerService
to change how it is instantiated and implement the new initialize
method. - Provide summary module paths to the expression compiler
- Depend on
package:vm_service
version 6.0.1-nullsafety.0
.
Breaking changes:
- Change
ExpressionCompiler.updateDependencies
method to include module summary paths
7.1.1
- Properly handle
requireJS
errors during hot restarts. - Fix an issue where Dart frame computation could result in a stack overflow for highly nested calls.
- Fix an issue where calling add breakpoint in quick succession would corrupt the internal state.
- Fix expression evaluation failure inside blocks.
- Now log the encoded URI of the debug service to both the terminal and application console.
- No longer blacklist the Dart SDK as the
skipLists
support serves the same purpose. - Fix an issue where running webdev with expression evaluation enabled would fail to find
libraries.json
file and emit severe error.
7.1.0
- Fix a potential null issue while resuming.
- Depend on the latest
package:vm_service
. - Fix crash in expression evaluation on null isolate.
- Fix incorrect file name detection for full kernel files.
- Add
ExpressionCompilerService.startWithPlatform
API to enable running expression compiler worker from a given location. - Support Chrome
skipLists
to improve stepping performance. - Export
AbsoluteImportUriException
. - Depend on the latest
package:vm_service
which supports a new limit
parameter to getStack
.
7.0.2
- Depend on the latest
pacakge:sse
. - Add more verbose logging around
hotRestart
, fullReload
and entrypoint injection.
7.0.1
- Fix an issue where we attempted to find locations for the special
dart_library
module.
7.0.0
- Add support for the Dart Development Service (DDS). Introduces ‘single client mode’, which prevents additional direct connections to DWDS when DDS is connected.
- Update metadata reader version to
2.0.0
. Support reading metadata versions 2.0.0
and 1.0.0
. - Support custom hosts and HTTPs traffic in a
ProxyServerAssetReader
. - Remove heuristics from require strategies and use metadata to look up module paths.
- Fix issue where upgrading
build_web_compilers
would cause missing module assets (JavaScript code and source maps).
- Fix issue where open http connections prevent the process for exiting.
- Add
ExpressionCompilationService
class that runs ddc in worker mode to support expression evaluation for clients that use build systems to build the code. - Require at least
devtools
and devtools_server
version 0.9.2
. - Require at least
dds
version 1.4.1
. - Require at least
build_web_compilers
version 2.12.0
. - Update min sdk constraint to
>=2.10.0
. - Update
MetadataProvider
to throw an AbsoluteImportUriException
when absolute file paths are used in an import uri.
Breaking changes:
- Change
ExpressionCompiler
to require a new updateDependencies
method. - Update a number of
LoadStrategy
APIs to remove heuristics and rely on the MetadataProvider
. - No longer require a
LogWriter
and corresponding verbose
arguement but instead properly use package:logger
. FrontendServerRequireStrategyProvider
now requires a digestProvider
.
6.0.0
- Depend on the latest
package:devtools
and package:devtools_server
. - Support using WebSockets for the debug backend by passing
useSseForDebugBackend: false
to Dwds.start()
- Ensure we run main on a hot restart request even if no modules were updated.
- Allow reading metadata generated by
dev_compiler
from file to supply module information to Dwds
. - Hide JavaScript type errors when hovering over text in the debugger.
- Fix an issue where reusing a connection could cause a null error.
- Improve the heuristic which filters JS scopes for debugging needs.
Breaking Changes:
- Require access to the
.ddc_merged_metadata
file. - Remove deprecated parameter
restoreBreakpoints
as breakpoints are now set by regex URL and Chrome automatically reestablishes them.
5.0.0
- Have unimplemented VM service protocol methods return the RPC error ‘MethodNotFound’ /
-32601
. - Fix an issue where the application main function was called before a hot restart completed.
- Breaking change
AssetReader
now requires a metadataContents
implementation.
4.0.1
- Fixed issue where
getSupportedProtocols
would return the wrong protocol.
4.0.0
- Pin the
package:vm_service
version to prevent unintended breaks.
3.1.3
- Fix an issue where the injected client served under
https
assumed the corresponding SSE handler was also under https
.
3.1.2
- Gracefully handle multiple injected clients on a single page.
- Update to the latest
package:vm_service
and use more RPCError error codes on call failures. - Update the
require_restarter
to rerun main after a hot restart to align with the legacy strategy. We therefore no longer send a RunRequest
after a hot restart. - Compute only the required top frame for a paused event.
- Change
streamListen
to return an RPCError
/ error code -32601
for streams that are not handled. - Populate information about async Dart frames.
- Populate the
exception
field in debugger pause event when we break as a result of an exception. - Prompt users to install the Dart Debug Extension if local debugging does not work.
- Allow for the injected client to run with CSP enforced.
- Implement the
getMemoryUsage()
call. - Fix an issue where the injected client could cause a mixed content error.
3.1.1
- Change the reported names for isolates to be more terse.
- Implemented the ‘PossibleBreakpoints’ report kind for
getSourceReport()
. - Change the returned errors for the unimplemented
getClassList
and reloadSources
methods to -32601 (‘method does not exist / is not available’). - Do not include native JavaScipt objects on stack returned from the debugger.
3.1.0
- Support Chromium based Edge.
- Depend on latest
package:sse
version 3.5.0
. - Bypass connection keep-alives when shutting down to avoid delaying process shutdown.
- Fix an issue where the isolate would incorrectly be destroyed after connection reuse.
3.0.3
- Support the latest version of
package:shelf_packages_handler
. - Throw a more useful error if during a hot restart there is no active isolate.
- Fix a race condition in which loading module metadata could cause a crash.
- Correct scope detection for expression evaluation
- Silence verbose and recoverable exceptions during expression evaluation
- Return errors from ChromeProxyService.evaluateInFrame as ErrorRef so they are not shown when hovering over source in the IDE
3.0.2
- Fix an issue in JS to Dart location translation in
ExpressionEvaluator
. JS location returned from Chrome is 0-based, adjusted to 1-based.
3.0.1
- Drop dependency on
package_resolver
and use package_config
instead. - Bump min sdk constraint to
>=2.7.0
.
3.0.0
- Depend on the latest
package:vm_service
version 4.0.0
.
Breaking Changes:
- Delegate to the
LoadStrategy
for module information:- moduleId -> serverPath
- serverPath -> moduleId
2.0.1
- Fix an issue where we would return prematurely during a
hotRestart
. - Fix an issue where we would incorrectly fail if a
hotRestart
had to fall back to a full reload.
2.0.0
- Depend on the latest
package:vm_service
version 3.0.0+1
.
Breaking Changes:
- Now require a
LoadStrategy
to Dwds.start
. This package defines two compatible load strategies, RequireStrategy
and `LegacyStrategy. Dwds.start
function signature has been changed to accept one more parameter of new interface type ExpressionCompiler
to support expression evaluation- Provide an implementation of the
RequireStrategy
suitable for use with package:build_runner
. - Simplify hot reload logic and no longer provide module level hooks.
1.0.1
- Make the
root
optional for the ProxyServerAssetReader
.
1.0.0
- Fix an issue where files imported with relative paths containing
../
may fail to resolve breakpoint locations. - Remove dependency on
package:build_daemon
. - Add
FrontendServerAssetReader
for use with Frontend Server builds. - Depend on latest
package:sse
for handling client reconnects transparently on the server. - Fix an issue where a failure to initiate debugging through the Dart Debug Extension would cause your development server to crash.
- Fix an issue where trying to launch DevTools in a non-debug enabled Chrome instance could crash your development server.
Breaking Changes:
- No longer use the
BuildResult
abstraction from package:build_daemon
but require a similar abstraction provided by this package. AssetHandler
has been renamed to AssetReader
and no longer provides a generic resource handler. Specific methods for the required resources are now clearly defined. The new abstraction is now consumed through dwds.dart
.BuildRunnerAssetHandler
has been renamed to ProxyServerAssetReader
and is now consumed through dwds.dart
.
0.9.0
- Expose
middleware
and handler
.
Breaking Change: The AssetHandler
will not automatically be added the DWDS handler cascade. You must now also add the middelware
to your server's pipeline.
0.8.5
- Always bind to
localhost
for the local debug workflow. - Fix an issue where breakpoints could cause DevTools to hang.
0.8.4
- Support using WebSockets for the debug (VM Service) proxy by passing
useSseForDebugProxy: false
to Dwds.start()
0.8.3
- Support nesting Dart applications in iframes.
0.8.2
- Add the ability to receive events from the extension in batches.
0.8.1
- Depend on the latest
package:built_value
.
0.8.0
- Add temporary support for restoring breakpoints. Eventually the Dart VM protocol will clearly define how breakpoints should be restored.
- Depend on latest
package:sse
to get retry logic. - Don't spawn DevTools if
serveDevTools
is false. UrlEncoder
will also encode the base URI used by the injected client / Dart Debug Extension. ** Breaking Change ** serveDevTools
is not automatically considered true if enableDebugExtension
is true.
0.7.9
- Properly wait for hot reload to complete with the legacy module system.
- Fix issue with
getObject
for a class with a generic type.
0.7.8
- Support optional argument
urlEncoder
that is used to encode remote URLs for use with the Dart Debug Extension.
0.7.7
- Handle getObject for primitives properly.
- Properly black box scripts if query parameters are provided.
0.7.6
- Fix issue with source map logic for the legacy module system.
- Allow setting breakpoints multiple times and just return the old breakpoint.
- Fix a bug with Maps that contain lists of simple types.
0.7.5
- The injected client's connection is now based off the request URI.
- Fix an issue where resuming while paused at the start would cause an error.
- Expose the
ChromeDebugException
class for error handling purposes. - Expose the
AppConnectionException
class for error handling purposes. - DevTools will now launch immediately and lazily sets up necessary state.
- Properly set
pauseBreakpoints
on kPauseBreakpoint
events. - Greatly improves handling of List, Map and IdentityMap instances.
- Lazily parse source maps to improve performance for large applications.
0.7.4
- Deobfuscate DDC extension method stack traces.
- Properly get all libraries with the
legacy
module system.
0.7.3
- Correctly set
Isolate
state if debugging is initiated after the application has already started.
0.7.2
- Account for root directory path when using
package:
URIs with DartUri
.
0.7.1
- Fix a bug where we would try to create a new isolate even for a failed hot restart. This created a race condition that would lead to a crash.
- Don't attempt to write a vm service request to a closed connection.
- Instead we log a warning with the attempted request message and return.
- Make all
close
methods more robust by allowing them to be called more than once and returning the cached future from previous calls. - Add explicit handling of app not loaded errors when handling chrome pause events.
0.7.0
DWDS.start
now requires an AssetHandler
instead of applicationPort
, assetServerPort
and applicationTarget
.- Expose a
BuildRunnerAssetHandler
which proxies request to the asset server running within build runner. - Support the Legacy Module strategy through the injected client.
- Support DDK sourcemap URIs.
- Update SDK dependency to minimum of 2.5.0.
Bug Fixes:
- Fix handling of chrome pause events when we have no isolate loaded yet.
0.6.2
- Capture any errors that happen when handling SSE requests in the DevHandler and return an error response to the client code.
- Log error responses in the client to the console.
- Handle empty Chrome exception descriptions.
0.6.1
- Add
isolateRef
to Isolate
s pauseEvent
s. - Depend on the latest
package:vm_service
. - Implements
invoke
. - Adds support for VM object IDs for things that don't have Chrome object Ids (e.g. int, double, bool, null).
0.6.0
- Add new required parameter
enableDebugging
to Dwds.start
. If false
is provided, debug services will not run. However, reload logic will continue to work with the injected client. - Handle injected client SSE errors.
- Handle a race condition when the browser is refreshed in the middle of setting up the debug services.
0.5.5
- Properly set the
pauseEvent
on the Isolate
. - Fix a race condition with Hot Restarts where the Isolate was not created in time for pause events.
0.5.4
- Fix issue where certain required fields of VM service protocol objects were null.
- Properly set the
exceptionPauseMode
on the Isolate
. - Depend on the latest
DevTools
.
0.5.3
- Fix issue where certain required fields of VM service protocol objects were null.
0.5.2
- Fix issue where certain required fields of VM service protocol objects were null.
- Properly display
Closure
names in the debug view.
0.5.1
- Fix an issue where missing source maps would cause a crash. A warning will now be logged to the console instead.
- Depend on the latest
package:webkit_inspection_protocol
.
0.5.0
- Fix an issue where we source map paths were not normalized.
- Added a check to tests for the variable DWDS_DEBUG_CHROME to run Chrome with a UI rather than headless.
- Catch unhandled errors in
client.js
and recommend using the --no-injected-client
flag for webdev users. - Add support for an SSE connection with Dart DevTools.
- Rename
wsUri
to uri
on DebugConnection
to reflect that the uri may not be a websocket. - Depend on latest
package:vm_service
.
0.4.0
- Move
data
abstractions from package:webdev
into package:dwds
. - Move debugging related handlers from
package:webdev
into package:dwds
. - Move injected client from
package:webdev
into package:dwds
. - Create new public entrypoint
dwds.dart
. Existing public API services.dart
is now private.
0.3.3
- Add support for
getScript
for paused isolates. - Add support for
onRequest
and onResponse
listeners for the vm service.
0.3.2
- Add support for
scope
in evaluate
calls.
0.3.1
- Improve error reporting for evals, give the full JS eval in the error message so it can be more easily reproduced.
0.3.0
- Change the exposed type on DebugService to VmServiceInterface
0.2.1
- Support
setExceptionPauseMode
.
0.2.0
- Added custom tokens to the
wsUri
for increased security.- Treating this as a breaking change because you now must use the
wsUri
getter to get a valid uri for connecting to the service, when previously combining the port and host was sufficient.
0.1.0