this repo has no description
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