jkunz 3fa4ec667d docs: record the data layer, the server view and the sample rule
AGENTS.md records lane R2: socialio-data in the layout, its bounds and
sync rules, the coverage and stream-row rules, the data marker and
READ_ONLY explanations, the repaint pitfall, and the programme decision
that the sample data leaves the release path with sign-in and never
stands in for "not signed in" or "offline". The deferred list names the
HTML-only mail bodies and the 3.1.0 server gaps.

readme.md and the wasm32 clippy line list socialio-data; changelog.md
lists the core model, the data layer and the shell over the store.
2026-10-21 15:29:40 +00:00
…

social.io rustapp

social.io as a native app in Rust: one egui codebase that runs on the desktop (macOS, Linux, Windows) through eframe's native runner and in the browser as a WebAssembly build. It follows the v10 design of social.io, in light and dark, in the idiom of the Craft apps.

Status: lane R2. The apps run the shell, the theme and both layouts on sample data. The server contracts, the client (TypedRequest calls and the live /ws socket, natively and in the browser) and the data layer that keeps the server's workspace in step are built and tested, and the shell shows the server's unified stream, mail and chats from that data layer in tests; the apps switch to it with sign-in. Sign-in and running inside the workspace as an App Store app (R4) are not built; actions that need them say so (on hover, or in a toast on a tap) instead of acting, and every layout marks where its data comes from.

Issue Reporting and Security

For reporting bugs, issues, or security vulnerabilities, please visit community.foss.global/. This is the central community hub for all issue reporting. Developers who sign and comply with our contribution agreement and go through identification can also get a code.foss.global/ account to submit Pull Requests directly.

What is in it

  • Desktop layout: top bar with workspace tabs, search and the assistant button; the rail with the eight channels (All, Mail, Chats, Calls, Letters, Tasks, People, Calendar); each channel's sidebar, list and detail; the inspector column; a status bar.
  • Phone layout below 640 points: a large-title screen per tab with filter chips and grouped cards, a floating tab bar, and a pushed screen for the item tapped.
  • ⌘K opens the command palette (channels, actions, threads, chats and people by name); ⌘J toggles the assistant panel, a stub until the assistant is connected.
  • No application data on disk. The apps keep only the UI preferences (appearance, last channel, inspector, assistant) through eframe's storage: app.ron in the platform's app-data folder under io.social.desktop on the desktop, localStorage in the browser. Everything else will come from the server.
  • No imitation window controls or menus: the operating system draws those on the desktop, and the web build has none.

Layout

Path What it holds
crates/socialio-core Domain types (channels, lanes, threads, chats, calls, letters, tasks, people) and the sample workspace. No UI, no I/O.
crates/socialio-ui The egui front end: the v10 tokens and fonts, the icon set, the shell and both layouts. The only crate that depends on egui.
crates/socialio-contracts The social.io wire types, generated with typify from the @social.io/interfaces schema pinned in schema/pin.json. Generated code is checked in and never edited.
crates/socialio-contractgen Regenerates the contracts, refreshes the pinned schema from an exact published version, and gates the checked-in code against a fresh generation.
crates/socialio-data The data layer: a bounded store of the server's workspace, kept in step by a sync driver (a snapshot after every reconnect, /ws pushes in between), mapped onto the core types. No egui.
crates/socialio-client Server access: typed TypedRequest calls and the authenticated /ws socket with reconnects, on tokio natively and on gloo in the browser. The access token is an input; there is no sign-in yet.
crates/socialio-host The workspace host bridge (frame protocol 2) for the web build. Empty until R4.
apps/desktop The socialio desktop binary (eframe, wgpu).
apps/web The web app (eframe web runner, WebGPU with a WebGL2 fallback), built with Trunk into dist/web/.

Requirements

  • Rust 1.95 or newer with rustfmt and clippy.
  • For the web build: rustup target add wasm32-unknown-unknown and Trunk 0.21.14 (cargo install --locked trunk@0.21.14; Trunk 0.22 needs Rust 1.96.1).
  • On Linux the desktop app needs a Vulkan or OpenGL driver, and on X11 the libxkbcommon-x11-0 package (Debian/Ubuntu name), which winit loads at start.

Development

From the repository root:

cargo run -p socialio-desktop               # the desktop app
trunk serve --config apps/web/Trunk.toml    # the web app on http://127.0.0.1:8783

Checks:

cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo clippy --target wasm32-unknown-unknown -p socialio-web -p socialio-ui -p socialio-core -p socialio-contracts -p socialio-client -p socialio-data -- -D warnings
cargo test --workspace
RUSTDOCFLAGS=-Dwarnings cargo doc --workspace --no-deps
trunk build --release --config apps/web/Trunk.toml

@git.zone/rsrepo runs the first, second, fourth and fifth of these as rsrepo check. Cargo.lock is committed.

Contracts:

cargo run -p socialio-contractgen -- generate            # regenerate crates/socialio-contracts/src/generated.rs
cargo run -p socialio-contractgen -- refresh 3.1.0       # vendor an exact @social.io/interfaces version, then regenerate

cargo test --workspace includes the gate that fails when the checked-in contracts are stale, and round trips of wire samples captured from the server. AGENTS.md lists the known typify limitations and the command for the client's live test against a running social.io.

This repository contains open-source code licensed under the MIT License. A copy of the license can be found in the repository license file. The bundled Inter typeface is licensed under the SIL Open Font License 1.1 (crates/socialio-ui/assets/fonts/inter-ofl.txt).

Please note: The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.

Trademarks

This project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH or third parties, and are not included within the scope of the MIT license granted herein.

Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines or the guidelines of the respective third-party owners, and any usage must be approved in writing. Third-party trademarks used herein are the property of their respective owners and used only in a descriptive manner, e.g. for an implementation of an API or similar.

Company Information

Task Venture Capital GmbH
Registered at District Court Bremen HRB 35230 HB, Germany

For any legal inquiries or further information, please contact us via email at hello@task.vc.

By using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.

S
Description
social.io native app in Rust (egui), for desktop and the web
Readme
1.2 MiB
Languages
Rust 99.6%
Shell 0.3%