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.
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.ronin the platform's app-data folder underio.social.desktopon the desktop,localStoragein 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
rustfmtandclippy. - For the web build:
rustup target add wasm32-unknown-unknownand 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-0package (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.
License and Legal Information
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.