[mirror] A local-first desktop markdown writer with grammar checking, at proto integration, and more github.com/stormlightlabs/writer/releases
atproto codemirror markdown tauri rust react
writer docs tasks tangled.md
1.8 kB · 42 lines
Markdown
at main


title: Tangled Strings integration updated: 2026-03-20 #

Publish documents as Tangled strings (AT Protocol gists) and import strings as documents.

✅ Part 1 — Auth #

  1. OAuth loopback flow - crates/core/src/atproto/auth.rs
  2. Session persistence - token + DPoP key storage in app data dir
  3. Tauri commands - src-tauri/src/commands/atproto.rs
    • atproto_login, atproto_logout, atproto_session_status
  4. Frontend auth UI - login sheet, session indicator, logout
    • User clicks @ button in toolbar
    • If not logged in, show login sheet
    • If logged in, show session indicator (Dolly from icons.tsx)
    • Logout button in session indicator or in the settings menu

✅ Part 2 — Pull #

  1. Shared backend helpers - crates/core/src/atproto/strings.rs
    • string_list, string_get
  2. Tauri commands - src-tauri/src/commands/strings.rs
    • string_list, string_get
  3. Import UI - "Import from Tangled" sheet with handle input, string browser, preview, import to location
    • Fluent Icons (i-fluent-document-*-16-filled)
    • Extensions covered: py, md, js, ts, yaml, java, sass, css, csv, fs, cs
    • i-fluent-document-16-filled for fallback

Part 3 — Push #

  1. Shared backend helpers - crates/core/src/atproto/strings.rs
    • string_create, string_update, string_delete
  2. Tauri commands - src-tauri/src/commands/strings.rs
    • string_create, string_update, string_delete
  3. Publish UI - "Publish as String" action in export menu with filename, description, preview

Part 4 — Sync & metadata #

  1. Origin tracking - AT URI, TID, source DID in SQLite
  2. Change detection - local re-publish offers, remote drift on re-pull