Scratch Link is a helper application which allows Scratch 3.0 to communicate with hardware peripherals. Scratch Link replaces the Scratch Device Manager and Scratch Device Plug-in.
System Requirements:
Minimum | |
---|---|
macOS | 10.15 "Catalina" |
Windows | Windows 10 build 17763 |
The Windows version requires the Windows App Runtime version 1.2, and will install it automatically if possible.
Manual installation is available here (choose your platform):
To use Scratch Link with Scratch 3.0:
+
at the bottom of the block categories list)The general network protocol and all supported hardware protocols are documented in Markdown files in the
Documentation
subdirectory. Please note that network protocol stability and compatibility are high priorities for
this project. Changes to the protocol are unlikely to be accepted without very strong justification combined with
thorough documentation.
Please use markdownlint to check documentation changes before submitting a pull request.
Scratch Link 2.0 uses semantic-release to control its version
number. The develop
branch is treated as a pre-release branch, and main
is treated as a release branch. Each time
a change is merged to either of those branches, semantic-release
will calculate a new version number.
Apple requires that CFBundleShortVersionString
is unique for published releases. The App Store will also reject an
upload unless the CFBundleVersion
tuple is greater than that of previously uploaded builds. To make this easy, we
set CFBundleShortVersionString
to the version calculated by semantic-release
, and CFBundleVersion
is calculated
from the date and time of the build commit.
Extended version information is available within the application. This extended information is similar to git describe
.
Some previous versions of Scratch Link used Secure WebSockets (wss://
) to communicate with Scratch. This is no
longer the case: new versions of Scratch Link use regular WebSockets (ws://
). It is no longer necessary to prepare
an SSL certificate for Scratch Link.
This change caused an incompatibility with some browsers, including Safari. The macOS version of Scratch Link 2.0 includes a Safari extension to resolve this incompatibility.
The PublishReadyToRun
(R2R) setting enables ahead-of-time (AOT) compilation, as opposed to just-in-time (JIT)
compilation. This can improve performance, especially at startup. The drawback is R2R binaries are larger because
they contain both intermediate language (IL) code, which is still needed for some scenarios, and the native version
of the same code.
Recent versions of .NET (5.0 and above) can build a "Framework-Dependent Application" or a "Self-Contained Application" depending on settings.
dotnet.exe
to host the application.
<WindowsPackageType>None</WindowsPackageType>
in the project file.When packaging an application:
*.msix
) can contain exactly one platform (x86, x64, ARM64).*.msixbundle
) can contain more than one MSIX -- one for each platform, for example.Ideally, it would be possible to package a single "AnyCPU" build of the app with stub MSIX files to install each platform-specific copy of the framework, resulting in a Bundle that's only a little larger than a single copy of the app. More investigation needed.
However, it is possible to build a platform-specific MSIX containing an AnyCPU build of the app. That's much smaller than a platform-specific build of the app, so even with 3 full copies of the AnyCPU app -- one each packaged for x86, x64, and ARM64 -- the resulting bundle is significantly smaller.
Disabling R2R and bundling AnyCPU builds of the app generated a bundle roughly 12% of the size of a bundle of self-contained apps for the same set of platforms.