push-project: v1 SQLite → v2 Automerge via URL fragment
The v1 push-project pointed at a server endpoint that no longer
exists. The v2 path can't send content to the server, but it can
ship content to a logged-in browser via a URL fragment, same trust
model as invite links: K_proj plaintext + Automerge doc bytes ride
in `#import-project=`. The fragment never leaves the local
browser, gets scrubbed on load, gets wrapped and POST'd to
/api/projects after auth.
- scripts/push-project.mjs: rewritten to build an Automerge doc
from a local v1 SQLite (conversations + turns + text files;
binary files skipped — v2 hasn't wired blob transport yet) and
open the import URL.
- src/main.tsx: handle `#import-project=` by stashing the raw
payload in sessionStorage and scrubbing the hash, then mount.
- src/App.tsx: after auth, consume the stash. Derive wrap key from
PRF, wrap K_proj, POST /api/projects to mint the row, persist
the Automerge doc bytes under the server-assigned project id.
Cleared on success or alert-and-clear on failure.