Something went wrong. Try again.
[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
Something went wrong. Try again.
title: Tangled Strings integration updated: 2026-03-20 #
Publish documents as Tangled strings (AT Protocol gists) and import strings as documents.
✅ Part 1 — Auth #
- OAuth loopback flow -
crates/core/src/atproto/auth.rs - Session persistence - token + DPoP key storage in app data dir
- Tauri commands -
src-tauri/src/commands/atproto.rsatproto_login,atproto_logout,atproto_session_status
- 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
- User clicks
✅ Part 2 — Pull #
- Shared backend helpers -
crates/core/src/atproto/strings.rsstring_list,string_get
- Tauri commands -
src-tauri/src/commands/strings.rsstring_list,string_get
- 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-filledfor fallback
- Fluent Icons (
Part 3 — Push #
- Shared backend helpers -
crates/core/src/atproto/strings.rsstring_create,string_update,string_delete
- Tauri commands -
src-tauri/src/commands/strings.rsstring_create,string_update,string_delete
- Publish UI - "Publish as String" action in export menu with filename, description, preview
Part 4 — Sync & metadata #
- Origin tracking - AT URI, TID, source DID in SQLite
- Change detection - local re-publish offers, remote drift on re-pull