this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Changelog#

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

[Unreleased]#

Added#

  • Add workspace invitation flow with shareable links #394
  • Add workspace member list, role management, and member removal UI #387
  • Add web markdown editor #153
  • Add Zod validation at WASM, IndexedDB, and appview API boundaries #369
  • Add web e2e tests with Playwright against fake-pds #360
  • Add e2e test suite for CLI against fake-pds #358
  • Add DID document resolution to fake-pds and CLI PLC directory override #359
  • Add fake-pds: in-memory AT Protocol PDS for integration testing #349
  • Move appview URL from local config to PDS-synced account config #346
  • Add PDS-synced account config with telemetry preference #344
  • CLI ergonomics: command structure and completion #305
  • Add BIP-39 seed phrase recovery for account identity (24 words) #211

Fixed#

  • Fix service worker cacheGetCollection crash in syncOwnedWorkspaces #397
  • Add 'start fresh' option to identity recovery screen #383

Changed#

  • Add retry queue for uploads to previously-unresolvable DIDs #240
  • Add stale grant detection for rotated or removed public keys #241
  • Add pair request expiry enforcement with automatic cleanup #243
  • Add proactive session token rotation before expiry #242
  • Installation guide: direct users to package managers (brew, flatpak, AUR, crates.io) #320
  • Document AGPLv3 implications for self-hosters and plugin developers #312
  • Audit and improve command hierarchy for clarity #306
  • Improve help text and examples for all commands #307
  • Refactor stdin prompt handling: consolidate 4+ duplicated implementations #334
  • Generate man page for opake CLI #339
  • Update docs: seed phrase derivation, CLI flows, and recovery procedures #338
  • Add web UI for seed phrase recovery and generation #216
  • Add WASM exports for mnemonic and derivation functions #215
  • Add CLI seed phrase flows (init, login, recover) #214
  • Add seed-to-keypair derivation (PBKDF2 + HKDF dual-path) to opake-core #213

[0.1.0-alpha] - 2026-03-13#

Security#

  • Add owner authorization check to keyring membership operations #44
  • Add SECURITY.md with responsible disclosure policy #309
  • Fix ContentKey Debug impl to redact secret bytes #49
  • Add file permission hardening for sensitive config and key files #8
  • Remove bearer token authentication fallback from AppView #26s

Added#

  • Add MDX content components and public documentation routes #303
  • Add MDX content components and public documentation routes #303
  • DNS: Add opake.app and appview.opake.app records #284
  • Containerfiles for appview and web #283
  • CI/CD: Spindle deploy pipeline #282
  • CI/CD: Spindle validation pipeline #280
  • k8s: Web frontend deployment (TanStack Start SSR) #279
  • k8s: AppView deployment with SQLite persistence #278
  • Add TanStack Start with MDX rendering and SEO meta tags #275
  • Add Coming Soon placeholder component #272
  • Add favicon and app branding #269
  • Add SEO audit for web application #263
  • Add web and AppView hosting #262
  • Add web UI with AppView and SPA #113
  • Add mobile responsive layout for cabinet #268
  • Rewrite sharing page to reuse cabinet file browser components #289
  • Add web inbox for incoming grants #150
  • Rewrite opake-appview in Elixir/Phoenix with PostgreSQL #290
  • Add web sharing UI with grant management #149
  • Add user banner to profile dropdown and cache profile images in IndexedDB #288
  • Add split-panel preview, UI cleanup, and fix document name flicker #286
  • Add markdown renderer for document preview #206
  • Add encrypted image viewer with client-side decryption #204
  • Add README.md header sections for all crates #264
  • Add web onboarding flow for first-time identity setup #265
  • Add MDX rendering for docs and front page #256
  • Add web sharing UI with grant management #149
  • Add settings page with AppView URL configuration #277
  • Add device settings link in sidebar with account info #276
  • Add web file and directory moving #253
  • Add web metadata management for documents #252
  • Add error toast notifications for user feedback #266
  • Add distinct icons for image file types #258
  • Add web directory creation and deletion #254
  • Add web file deletion #148
  • Add web file upload with client-side encryption #146
  • Integrate app store loading tracker into document fetching and downloads #251
  • Add web file download with client-side decryption #147
  • Add web file browser with tag filtering #145
  • Add URL-based routing for cabinet directory navigation #247
  • Add ESLint, Prettier, and Immer to web frontend #207
  • Refactor auth store into session + identity state, non-blocking boot #209
  • Add destructive action confirmation component with ghost-text typing #218
  • Add loading state tracking to device pairing pages #225
  • Add ESLint, Prettier, and Immer to web frontend #207
  • Refactor auth store into session + identity state, non-blocking boot #209
  • Add destructive action confirmation component with ghost-text typing #218
  • Add loading state tracking to device pairing pages #225
  • Move device pairing into devices route folder as pair.request and pair.accept #220
  • Add --dir flag to mkdir for nested directory creation #198
  • Add purge command to delete all Opake data from PDS #196
  • Add metadata CLI command for rename, tag, and description management #190
  • Consolidate DNS and transport into opake-core, unify handle resolution #185
  • Build web login, callback, setup, and recover routes #173
  • Add device-to-device key pairing via PDS #183
  • Wire authenticated API layer for PDS and AppView #174
  • Rewrite web auth store as discriminated union state machine #172
  • Add OAuth client infrastructure to web frontend #171
  • Refactor cabinet components to use daisyUI semantic classes #166
  • Add web identity resolution #152
  • Add web login and account switching #144
  • Cache URI → name mappings for DirectoryTree resolution #155
  • Add tree command to display document hierarchy #90
  • Add handle-based login with automatic PDS resolution #182
  • Implement web login flow with AT Protocol OAuth #167
  • Add AT Protocol OAuth (DPoP) for CLI authentication #175
  • Wire opake-core WASM into web frontend #163
  • Add cat command to read and display file contents #154
  • Add directory record type and mkdir command #98
  • Add issue tracker link to README #142
  • Add crosslink-issue-renderer submodule and CI/CD pipeline #141
  • Migrate from chainlink to crosslink and slim project docs #137
  • Update docs for security hardening and opake-derive crate #4
  • Add inbox CLI command for discovering shared grants via appview #7
  • Audit workspace dependencies for consolidation and upgrades #25
  • Add AppView production readiness: clap, DID auth, XDG, health, docs #34
  • Update docs to reflect module directory restructuring #40
  • Add verbose flags for CLI debug output #43
  • Add keyring rotation history to preserve member access to pre-rotation documents #48
  • Add cross-PDS download for keyring members #51
  • Add keyring-based group sharing #119
  • Add keyring-based group sharing for multi-user access control #60
  • Add shared command to list outgoing grants #121
  • Add MermaidJS flow diagrams and restructure documentation #63
  • Improve naming consistency and split documents/download.rs #64
  • Black-box test the full sharing workflow across accounts #67
  • Add grant-based cross-PDS download for shared files #66
  • Auto-publish encryption public key on login #69
  • Add resolve command for DID resolution and public key discovery #124
  • Add share command to grant document access to another DID #123
  • Add revoke command to delete grant records #122
  • Add account management commands and --as flag #75
  • Improve README with pronunciation guide and formatting polish #87
  • Add automatic token refresh using refresh_jwt on expired sessions #101
  • Add filename resolution for rm command #93
  • Add filename resolution for download command #94
  • Add MockTransport test infrastructure with FIFO response queue
  • Add download command tests with full crypto roundtrip verification
  • Update login command to read password from stdin #112

Fixed#

  • Fix tag filter bar showing tags from all directories instead of current view #250
  • Fix application startup to check account status #194
  • Fix web login on new account creating publicKey record without $bytes #195
  • Fix Identity type casing mismatch across WASM boundary #203
  • Fix application startup to check account status #194
  • Fix web login on new account creating publicKey record without $bytes #195
  • Fix session restore on page reload by deferring router until boot completes #210
  • Fix Identity type casing mismatch across WASM boundary #203
  • Fix OpakeLogo loading animation not completing at least one full cycle #226
  • Fix review findings from web frontend restructure #227
  • Fix session restore on page reload by deferring router until boot completes #210
  • Fix OpakeLogo loading animation not completing at least one full cycle #226
  • Fix review findings from web frontend restructure #227
  • Fix identity conflict false positive caused by AT Protocol bytes encoding #224
  • Fix rm -yr / failing with empty path error on root directory #202
  • Fix mkdir creating duplicate directories with the same name #201
  • Fix token refresh not triggering on HTTP 401 ExpiredToken responses #197
  • Require directory on upload, default to root when --dir is omitted #192
  • Fix bugs found during black-box integration testing of sharing workflow #70
  • Fix base64 padding mismatch when decoding PDS $bytes fields #68
  • Fix missing HTTP status checks in XRPC client #104

Changed#

  • Add web file deletion with confirmation dialog #255
  • Add cn() utility (clsx + tailwind-merge) #208
  • Add cn() utility (clsx + tailwind-merge) #208
  • Add metadata CLI command with tag and description subcommands #190
  • Encrypt directory metadata (add encryption envelope to directory records) #189
  • Encrypt keyring and grant metadata #188
  • Encrypt document metadata (name, mimeType, tags, description) #187
  • Rename collection NSIDs from app.opake.cloud.* to app.opake.* and version to opakeVersion #186
  • Add browser key storage with IndexedDB and Web Crypto API #160
  • Add inbox command for grant discovery via AppView #162
  • Port Figma Make cabinet design into web frontend #165
  • Amend web scaffold into WASM commit #164
  • Update blackbox tests and docs for new commands #159
  • Add path-aware mv command #157
  • Add path-aware upload with directory placement #158
  • Add path-aware rm with recursive directory deletion #156
  • Update docs to reflect keyring rotation history #46
  • Add keyring member management (add-member, remove-member) #56
  • Add CLI keyring commands and local group key store #57
  • Add keyrings core module with create and list operations #58
  • Implement symmetric key wrapping primitives in crypto.rs #59
  • Add automatic public key publishing on login #77
  • Replace raw [u8; 32] with X25519PublicKey/X25519PrivateKey type aliases #72
  • Split client.rs into module directory for transport, xrpc, and DID resolution #71
  • Remove --permissions flag from share command #73
  • Add per-account session and identity persistence #84
  • Add multi-account config struct and per-account storage layout #85
  • Add publicKey lexicon and PublicKeyRecord struct #80
  • Add document deletion via com.atproto.repo.deleteRecord #127
  • Add document listing via com.atproto.repo.listRecords #128
  • Extract AT Protocol primitives into dedicated atproto module
  • Consolidate XRPC response checking into send_checked method
  • Add file download with client-side decryption #129
  • Update outdated dependencies (reqwest 0.13, toml) #106
  • Test upload command against real PDS #107
  • Add file upload with client-side encryption #130
  • Add local keystore for session and key persistence #126
  • Add asymmetric key wrapping (ECDH-ES+A256KW) #131
  • Add AES-256-GCM content encryption and decryption #132
  • Fix WASM compilation for opake-core by enabling getrandom js feature #108
  • Add PDS authentication via com.atproto.server.createSession #133