40 lines
2.1 KiB
Markdown
40 lines
2.1 KiB
Markdown
# FileLink-PsiTransfer
|
|
|
|
Thunderbird Manifest V3 Filelink/cloudFile provider for PsiTransfer.
|
|
|
|
Current status: minimal v1 upload path implemented. The extension now performs a source-informed tus upload, locks the PsiTransfer bucket, and returns the bucket share URL to Thunderbird. Delete, rename, and upload reuse remain intentionally unimplemented until the PsiTransfer source proves a stable provider-facing contract.
|
|
|
|
The real integration contract must be derived from:
|
|
|
|
- `/tmp/psitransfer`
|
|
- https://webextension-api.thunderbird.net/en/mv3/cloudFile.html
|
|
|
|
This repository already includes:
|
|
|
|
- `manifest.json` for a Thunderbird MV3 `cloud_file` provider
|
|
- background and provider scaffolding under `src/`
|
|
- a minimal account management UI under `ui/`
|
|
- a vendored local copy of `tus-js-client` at `vendor/tus.js`
|
|
- implementation notes in `docs/psitransfer-notes.md`
|
|
- agent workflow guidance in `AGENTS.md`
|
|
|
|
Current provider behavior:
|
|
|
|
1. Read `GET /config.json` from the configured base URL with the optional `x-passwd` header.
|
|
2. Upload one Thunderbird attachment to one PsiTransfer bucket using the vendored tus client.
|
|
3. Lock the bucket with `PATCH /files/:sid?lock=yes`.
|
|
4. Return the bucket share URL `/<sid>` to Thunderbird.
|
|
|
|
Configuration notes:
|
|
|
|
- `baseUrl` should point at the PsiTransfer download/share root.
|
|
- `uploadAppPath` is optional and defaults to `/`. Use it only when the server mounts uploads under a subpath relative to `baseUrl`, because `config.json` does not expose `uploadAppPath`.
|
|
- The provider validates retention values and max file size against `config.json`.
|
|
- If the PsiTransfer server requires bucket passwords, the provider currently stops with an explicit error because bucket-password UI is not implemented yet.
|
|
|
|
Building:
|
|
|
|
- Run `./build-xpi.sh` on Unix-like systems or `powershell ./build-xpi.ps1` on Windows.
|
|
- The scripts read the version from `manifest.json` and write `release/psitransfer-filelink-<version>.xpi`.
|
|
|
|
Do not assume PsiTransfer exposes a polished external API. This scaffold is intentionally conservative and keeps unresolved behavior as explicit TODOs.
|