If this is not done, asynchronous decoding of the keyframe via text()
may complete AFTER replay continues, effectively ignoring the keyframe,
leaving currentFrame untouched, and unnecessarily replaying
instructions.
Previously, the state of the tunnel implementations was initialized to
"CONNECTING", which is incorrect and may result in (1) initial state
changes to "CONNECTING" not firing "onstatechange" and (2) the state
change to "CLOSED" incorrectly firing when initially connecting,
despite there not being an established connection.
Besides restoring historically-provided functionality, the ID generated
by the database for connection history records is needed to generate a
deterministic UUID that can be injected into connection configurations
with ${HISTORY_UUID}. Having such a token allows session recordings to
be given names that can be reliably matched with history records.
GUACAMOLE-1495: add pl_pl_qwerty to ca translation
GUACAMOLE-1495: add pl_pl_qwerty to cs translation
GUACAMOLE-1495: add pl_pl_qwerty to de translation
GUACAMOLE-1495: add pl_pl_qwerty to es translation
GUACAMOLE-1495: add pl_pl_qwerty to fr translation
GUACAMOLE-1495: add pl_pl_qwerty to it translation
GUACAMOLE-1495: add pl_pl_qwerty to ko translation
GUACAMOLE-1495: add pl_pl_qwerty to nl translation
GUACAMOLE-1495: add pl_pl_qwerty to no translation
GUACAMOLE-1495: add pl_pl_qwerty to pt translation
GUACAMOLE-1495: add pl_pl_qwerty to zh translation
GUACAMOLE-1495: correct typo in no.json
The Fetch API allows us to read HTTP responses as true streams, without
building an in-memory string. We can the buffer things ourselves as we
see fit, including as a Blob that can dynamically leverage disk storage
for larger data.
An SSH server record in KSM has an associated "KeyPair" field, but this
field need not be set. If unset, the current logic ignores the rest of
the record and assumes there is no private key at all. Instead, the
standard fallbacks of locating an attached PEM file, locating an
alternative password field, etc. should be used.
The clipboard service previously and incorrectly resynced the internal
clipboard with itself. This had the effect of forcing a resync of the
internal clipboard contents to the external, local clipboard, clearing
that clipboard of whatever was copied before.