`cargo upgrade --incompatible` in each of the nine workspaces here, then `cargo update`. Most of it is version numbers only -- log, winit, bytemuck, image, tokio, libc, android_logger, proc-macro2/quote, and syn 2 -> 3 with no source change. The wg-app-link submodule's twelve dependencies were already at their latest majors, so that shared repository needs no commit. wgpu 28 -> 30 (and pollster 0.4 -> 1.0) is the part with API in it: bind-group and vertex-buffer slots are optional now, `Instance::new` takes an owned `InstanceDescriptor` carrying the platform's display handle (the desktop passes winit's, since wgpu wants it for a GLES surface presented on Wayland -- which is what this machine's fallback produces; Android passes none), `RequestAdapterOptions` and `SurfaceConfiguration` each gained a field kept at its historical value, `get_current_texture` answers with an enum instead of a Result, and `present` moved onto the queue. The one that would not have failed at compile time: naga now requires `@interpolate(flat)` on integer varyings, so `shader.wgsl`'s three u32 outputs were rejected at `create_shader_module` -- an abort on the device rather than a build error. Flat is the only interpolation an integer can have, so this states what the hardware already did. Checked: build, clippy, fmt and tests in all nine workspaces (iris 196, server 160); layer 2 screenshots on Vulkan and on force-gles, identical; the arm64 release APK builds and the x86_64 bench ran a full fling/stream/type/keyboard cycle on the emulator's GLES adapter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
53 lines
2.6 KiB
TOML
53 lines
2.6 KiB
TOML
[package]
|
|
name = "client-core"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
# The app's pure logic, held once instead of twice: the event model (shared
|
|
# with `server/` via `event-model`), the REST + SSE clients for its HTTP
|
|
# surface (see `server/src/routes.rs`'s module doc for the table), the
|
|
# transcript fold and cache, the markdown block model, the syntax
|
|
# highlighter and the ANSI parser. See `docs/CLIENT_CORE.md` for
|
|
# what this holds today, what it does not yet, and how it corresponds to
|
|
# the Kotlin it replaces.
|
|
#
|
|
# No UI framework dependency of any kind -- this crate is meant to outlive
|
|
# whichever one the app ends up drawing with (see RUST.md).
|
|
|
|
[dependencies]
|
|
event-model = { path = "../event-model" }
|
|
serde = { version = "1", features = ["derive"] }
|
|
# "raw_value" is `fetch_transcript_lines`'s reason -- it needs the exact
|
|
# bytes the server sent, not this crate's own re-serialization of a parsed
|
|
# `Value`, so a cached line and a live SSE frame for the same event agree
|
|
# byte-for-byte (see that method's doc). "float_roundtrip" is why they
|
|
# agree on a `ts` at all -- see server/Cargo.toml's identical comment.
|
|
serde_json = { version = "1", features = ["float_roundtrip", "raw_value"] }
|
|
# The blocking HTTP client for the REST calls and the long-lived SSE GETs.
|
|
# `server/` already depends on ureq for its own outbound HTTPS (the usage
|
|
# poll in usage.rs) and it is rustls-backed like the rest of this project's
|
|
# TLS, so this reuses that choice rather than pulling in reqwest's async
|
|
# stack -- a client that runs one blocking request at a time, the way
|
|
# Api.kt's `HttpURLConnection` calls and Sse.kt's blocking read loop do, has
|
|
# no need of an async runtime, and RUST.md's brief for this port is
|
|
# "lightweight" throughout.
|
|
ureq = { version = "3", features = ["json"] }
|
|
# The markdown block split (`markdown_blocks`), which has to agree with the
|
|
# renderer in `iris/transcript-ui` about where a block begins -- so it is
|
|
# the same parser at the same version, rather than a hand-written splitter
|
|
# that would drift from it.
|
|
pulldown-cmark = "0.13.4"
|
|
# The enrollment link's `ca` parameter is base64url of the CA's DER
|
|
# (`config::parse_link`). Same version `wg-app-link` already pins for the
|
|
# minting half, so a workspace that has both resolves one copy.
|
|
base64 = "0.23"
|
|
# The logging facade only -- `log_ring` implements a `log::Log` backend and
|
|
# wraps whichever real one the platform installed (`android_logger` on the
|
|
# phone, `env_logger` on the desktop), which is why neither of those is a
|
|
# dependency here. See `log_ring`'s module doc.
|
|
log = { version = "0.4.34", features = ["std"] }
|
|
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|