Files
teleport/rust-toolchain.toml
T
Ryan ClarkandZac Bergquist d60277cdc8 [v18] Desktop Summaries (#67438)
* Add Rust RDP decoder library (#61858)

This library makes the IronRDP fast path decoder available to Go code
via CGo. There are three build options:

1. A standalone library (for use by tsh), enabled with the rust_rdp_decoder
   build tag.
2. All functionality included in the existing RDP client library,
   enabled with the desktop_access_rdp build tag.
3. A no-op implementation which avoids any Rust dependencies.

The decoder also respects the RDPCLIENT_SKIP_BUILD=1 flag from the makefile,
under the assumption that if you don't have Rust tooling and don't want
to build the RDP client that you also don't want the decoder.

(cherry picked from commit 07aa756126)

* Refactor recordingmetadata service to be able to support different session types (#64260)

* Refactor recordingmetadata service to be able to support different session types

* Do not capture thumbnails on resize, correctly set thumbnail time/interval

* Fix inactivity offsets, improve the test

* Improve the session join event test

* Update ProcessSessionRecording in test

* Fix test

* Satisfy sloglint

* Fix tests

(cherry picked from commit da0503c4d8)

* Add support for nested lists and tables in the markdown component (#64843)

* Add support for nested markdown lists

* Fix header content not parsing as markdown

* Add support for markdown tables

* Add max depth of 10 for parsing nested lists

* Only consume sibling list items with the same list marker

* Respect the start number on ordered lists

* Code review fixes

* Code review fixes

* Cap the max number of table columns to 100, rows to 1000

* Check max iterations before skipping blank lines

(cherry picked from commit 6105aebd81)

* Add RDP state tracker for processing desktop recordings (#65140)

* Add RDP state tracker for processing desktop recordings

* Guard against oversized screen dimensions

* Reset cursor state on resize

* Constrain screen dimensions to the same as we constrain RDP

* Move fastpath test helpers to separate package for reuse

* Remove mutex

* Do not use require in test module, fix linting issues

* Appease the linter

* Use DecodePermissive

* Avoid import cycle by inlining minimal message decoding in rdpstate

* Add length check to legacy fast path PDU

* t.Parallel()

(cherry picked from commit bfbbd7bcce)

* Add risk score, risk score reasons and short title to enhanced summaries (#65824)

(cherry picked from commit 5a24b6fd05)

* Add access request information to enhanced summaries (#65825)

* Add access request information to enhanced summaries

* Add access request snapshots, move to separate file

* Add unspecified to access request status enum

* Newline

(cherry picked from commit f38a9e3e4d)

* Add metadata/thumbnail generation for desktop recordings (#65381)

* Add metadata/thumbnail generation for desktop recordings

* Rename isPTYSession to metadataParamsForSessionEnd

* go mod tidy

* Disable the processor if RDP decoder is not available

* Reuse png.Encoder and buffer instead of creating new per screenshot

* Add clarifying comment about returning nil, nil when no decoder

* Add Windows desktop end events

* Set the session start time from end event if we don't already have it

* Break import cycle by extracting MFA JSON types to lib/client/mfatypes

* pnpm format

* go mod tidy all

* Remove flakey test that's covered through other paths

* Use a different interval for desktop sessions, make frames smaller than thumbnail

* Set correct flags when resuming mid-upload

* go.sum

* Handle desktop events in session post processor

* Add a semaphore to desktop recording processing

* Populate metadata from end event if start event not present

* Formatting

* Pass session start time to the metadata processor

* Reduce image sizes in tests

(cherry picked from commit 3c4f1617ec)

* Add channel IDs, dirty rect info to RDP decoder/state (#66157)

* Add channel IDs, dirty rect info to RDP decoder/state

* Cargo.lock update

* Use the correct bounds

* Linting fixes

* cargo fmt

* Clear pointer bitmap on default pointer event

* Code review fixes

* Formatting

(cherry picked from commit cdf76d1eea)

* Add session event to enhanced summaries for desktop + other recording type events (#66527)

* Add session event to enhanced summaries for desktop + other recording type events

* Add more comments to proto

* Fix proto numbers

* Handle deprecation in recording TUI

(cherry picked from commit 75d317b264)

* Add property-based testing for RDPState (#67317)

* Add property-based testing for RDPState

* Move max screen size to separate test to avoid 8192x8192 framebuffer allocation

* Be consistent with avoiding IronRDP OOB

* Move rapid draws to outside of the run

* Fix bug in test util WrapFastPathPDU

* Reduce allocations in CI, fix row byte calculatino

(cherry picked from commit 2405c6e786)

* Fix recordingmetadata test

* Resize RDP images in Rust instead of Go (#66696)

* Resize RDP images in Rust instead of Go

* go mod tidy all

* cargo fmt

* Add tests

* Remove unused Thumbnail()

* Change ResizeCrop() to return an error

* Avoid hard-coding the bytes per pixel

* Release resources in tests

* Clamp dimensions to at least 1x1

* Add x/image to e_imports

* Fix linting

* Fold resize options and crop bounds check into resize_crop_into

* Run cargo fetch

(cherry picked from commit c61782ed0e)

* Composite cursor in Rust (#66697)

* Composite the cursor in Rust during ResizeCrop

* Apply code review feedback

* Update test

* Move CursorBitmap to an enum, remove Cow, avoid cloning the bitmap

* Remove dereference

* Invalidate E2E Rust cache on decoder changes

(cherry picked from commit de6fd032d6)

* Add property-based testing for thumbnails/metadata generation (#67324)

* Add property-based testing for thumbnails/metadata generation

* Convert the resize test to a normal table test

* Increase the timeouts

* Reduce dimensions to avoid CI from dying

(cherry picked from commit aedcd1d851)

* Add output incomplete reason to summarizer proto (#67703)

(cherry picked from commit 467ec97484)

* Updates to the list session recordings page (#67752)

* Hide non-interactive sessions by default

* Add badge and decorator slots to list session recordings

* Update test assertion

* Flip the search params to the new hide non-interactive state

* Fixes for the non-interactive flip

* Remove duplicate BadgeComponent check

(cherry picked from commit 4b7ca851b1)

* Hook up desktop sessions to summarisation (#67714)

* Hook up desktop sessions to summarisation

* Match inference policies against desktop session end events

(cherry picked from commit 41a14f6a1f)

* Add a "no inference policy" state for session summaries (#67793)

(cherry picked from commit a021b81eb8)

* Add skip inactivity and timeline time updates to the desktop session player (#67724)

* Add skip inactivity and timeline time updates to the desktop session player

* rAF -> requestAnimationFrame

* Avoid redrawing the timeline/events whilst not playing

(cherry picked from commit caab74a7fb)

* Add new states for reporting summarisation status more granularly (#67883)

(cherry picked from commit 25835873cf)

* Adapt cursor compositing to branch/v18 IronRDP

#66697 (Composite cursor in Rust) was written against IronRDP v0.9.0 on
master, where UpdateKind::PointerBitmap carries Arc<DecodedPointer>.
branch/v18 pins IronRDP v0.2.1, which hands out Rc<DecodedPointer>, so
CursorState's set_bitmap and CursorBitmap::Server are switched to Rc to
match. The decode path is single-threaded, so Rc is sufficient.

* Regenerate protos for branch/v18 (hybrid API)

The desktop-summaries proto changes were rebased onto branch/v18, whose
buf-go.gen.yaml generates these protos with the HYBRID API. Regenerated
via 'make grpc/host' so the generated Go matches branch/v18's convention
(open field access still works, plus the *_protoopaque.pb.go variants).

* Capture inactivity periods when processing desktop sessions (#67721)

* Move the inactivity event helper to the base recording processor

* Expose per-frame activity signals from the desktop thumbnail generator

* Emit inactivity events for desktop session recordings

* Add a test for a fully inactive desktop session

* Change to defer

* Track changed pixels by region to differentiate between typing and clock

* Avoid marking typing as inactivity

* Add mouse button detection

* Only track inactivity if the decoder is available

(cherry picked from commit b19a4d2f0d)

* go mod tidy all

* Add github.com/santhosh-tekuri/jsonschema/v6 to e_imports (#68187)

Needed for https://github.com/gravitational/teleport.e/pull/8969 as `github.com/santhosh-tekuri/jsonschema/v6` becomes a direct dependency

---------

Co-authored-by: Zac Bergquist <[email protected]>
2026-06-29 14:49:59 +00:00

4 lines
95 B
TOML

[toolchain]
channel = "1.94.0"
targets = [ "wasm32-unknown-unknown", "x86_64-pc-windows-gnu" ]