Skip to content

feat: encrypted-file vault, sandbox-safe IO, share links, folder upload - #19

Merged
huhn511 merged 1 commit into
mainfrom
feat/encrypted-vault-and-sandbox-safe-io
Jun 23, 2026
Merged

feat: encrypted-file vault, sandbox-safe IO, share links, folder upload#19
huhn511 merged 1 commit into
mainfrom
feat/encrypted-vault-and-sandbox-safe-io

Conversation

@huhn511

@huhn511 huhn511 commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Summary

A cohesive batch of Drive improvements centered on encrypted files and the Mind-shell iframe, plus a couple of UX refinements.

  • Passphrase vault — a per-user, in-pod encrypted index mapping each encrypted file to the passphrase that opens it, searchable behind a new Vault dialog. Stored as .vault.enc + sidecar (AES-GCM under the session passphrase), hidden from the listing. Honors the privacy invariants: never leaves the pod in plaintext, no central DB.
  • Sandbox-safe download & clipboard — new saveBlob() / copyText() helpers. Inside the shell's sandboxed iframe, <a download> and the async Clipboard API are silently blocked; these fall back (open-in-new-tab / execCommand + manual-select) so download and "copy link/passphrase" work embedded too.
  • Share encrypted files — grants/revocations apply to the ciphertext and its sidecar together, and the shareable link is the in-app viewer link (?src=) that prompts the recipient for the passphrase. FilePreview can now render any pod URL read-only and anonymously (owner-only actions hidden).
  • Extension-locked rename — renames edit the base name only; the extension is locked so a rename can't change the file format. Encrypted renames move the .enc.json sidecar alongside and update originalName.
  • Upload into a folder — drop files onto a folder row/tile to upload into it (page-level dropzone still handles the current folder).
  • Polish — breadcrumb icon + heading redesign; image thumbnails in list view.

Review notes

  • typecheck: clean for all touched files. (The 3 pre-existing layout.tsx / opengraph-image.tsx errors are a stale @mind-studio/ui in node_modules, present on main and unrelated.)
  • biome check: clean on all changed files.
  • Known follow-ups (non-blocking): removeVaultEntry exists but isn't wired into delete yet, so the vault keeps a stale entry after an encrypted file is deleted.

🤖 Generated with Claude Code

- vault: per-user, in-pod encrypted index mapping each encrypted file to the
  passphrase that opens it, searchable behind a new Vault dialog. Stored as
  .vault.enc + sidecar (AES-GCM under the session passphrase); never leaves the
  pod in plaintext and there is no central DB.
- download/clipboard: route through saveBlob()/copyText() helpers that fall
  back for the Mind shell's sandboxed iframe, where a[download] and the async
  Clipboard API are blocked.
- share: encrypted files grant/revoke the ciphertext + sidecar together and
  surface an in-app viewer link (?src=) that prompts for the passphrase;
  FilePreview can now render any pod URL read-only and anonymously.
- rename: lock the file extension (edit the base name only) so a rename can't
  change the format; move the .enc.json sidecar alongside encrypted renames.
- upload: drop files onto a folder row/tile to upload into that folder.
- crumbs: icon + heading redesign; image thumbnails in list view.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@huhn511
huhn511 force-pushed the feat/encrypted-vault-and-sandbox-safe-io branch from 6d1a375 to e869be7 Compare June 23, 2026 17:06
@huhn511
huhn511 merged commit afeb5e8 into main Jun 23, 2026
1 check passed
@huhn511
huhn511 deleted the feat/encrypted-vault-and-sandbox-safe-io branch June 23, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant