tomdebone
|
c586fd39c9
|
maarcadetweet: initial commit
AT Protocol PDS + AppView + Tauri Desktop Client, 160-char post limit.
- PDS (Rust + axum + sqlx)
- Auth: createAccount, createSession, refreshSession
- Records: createRecord, deleteRecord (race-safe via SELECT FOR UPDATE)
- Feed: feed.like.create, feed.repost.create
- Sync: getRepo, getBlocks, getLatestCommit, getRecord (with MST proof), listRepos
- Identity: resolveHandle
- MST: spec-conformant (at-mst crate, 27 tests)
- Repo: signed commits, TID counter (monotonic, 4096 wrap safe)
- AppView (Rust + axum + sqlx)
- Jetstream consumer (WebSocket, exponential backoff, 38k+ events indexed)
- REST API: timeline/home (graph-aware), profile, search, post (with thread hydration)
- Handle-sync worker (did:plc + did:web)
- JSONB embed storage + thread columns (migration 0003)
- Like/repost counter cache (migration 0004)
- Tauri 2 + Svelte 5 Desktop Client
- System tray (Show/Compose/Quit menu)
- OS notifications (tauri-plugin-notification)
- Auto-update (tauri-plugin-updater, placeholder endpoint)
- Window-state (tauri-plugin-window-state)
- 160-char compose with live counter
- Image/Link embed rendering
- LocalStorage-persisted like state
- Timeline with poll (prepend new posts)
- Custom TitleBar (transparent, no decorations)
- Orange/IBM Plex Mono maarcade design
Tests: 231 Rust + 9 vitest = 240 passed.
|
2026-07-05 20:01:31 +02:00 |
|