Repository navigation
Conversation
… now covers Built against the release PR's pkg.pr.new build (vite-hub/vitehub#3160, 5e5dd32); switch to 0.2.0 from npm once it's published. - No ViteHub patches left: vite-hub, @vite-hub/database, schedule, kv and comments shipped every fix (#3173 #3174 #3175 #3177 #3178 #3179 #3222). - ViteHub 0.2.0 installs a feature's package only when the app asks for it, so Drop lists auth, comments, content, database, realtime, schedule and ui. comark-content comes with @vite-hub/content now. - The #code-image-png and #live-drafts host stubs are gone: isBrowserAvailable() and isRealtimeAvailable() (#3203) decide at runtime. - Live-editing rooms store drafts with ViteHub's blobDocument() (#3215) instead of Drop's own adapter. - The Console reads each account's role from DROP_ADMINS with console.roles.read (#3214), so the role sweep is gone. - console.authorize now guards Console pages (#3200): it answers 404 to anyone but an admin, and console.signInPage sends signed-out visits to /signin. The pages middleware is gone. - SQLite builds migrate with database.migrateOnStart (#3208) instead of Drop's Drizzle plugin. Same __drizzle_migrations ledger. - The console runtime test uses the Console's current RPC envelope ({ operation, input }).
Next step Verified HEAD; supplied CI passed. git diff --check and all eight preview-specifier lockfile checks passed. Fresh npm requests returned 404 for every 0.2.0 dependency; upstream #3160 remains draft. No changes pushed. Local tests were unavailable after the host install’s --ignore-pnpmfile checksum failure. Waiting for release completion and npm publication. Final answersSession Verified HEAD; supplied CI passed. git diff --check and all eight preview-specifier lockfile checks passed. Fresh npm requests returned 404 for every 0.2.0 dependency; upstream #3160 remains draft. No changes pushed. Local tests were unavailable after the host install’s --ignore-pnpmfile checksum failure. Waiting for release completion and npm publication. Session Verified HEAD; supplied CI passed. git diff --check and all eight preview-specifier lockfile checks passed. Fresh npm requests returned 404 for every 0.2.0 dependency; upstream #3160 remains draft. No changes pushed. Local tests were unavailable after the host install’s --ignore-pnpmfile checksum failure. Waiting for release completion and npm publication. Session Verified HEAD; supplied CI passed. git diff --check and all eight preview-specifier lockfile checks passed. Fresh npm requests returned 404 for every 0.2.0 dependency; upstream #3160 remains draft. No changes pushed. Local tests were unavailable after the host install’s --ignore-pnpmfile checksum failure. Waiting for release completion and npm publication. Session Verified HEAD; supplied CI passed. git diff --check and all eight preview-specifier lockfile checks passed. Fresh npm requests returned 404 for every 0.2.0 dependency; upstream #3160 remains draft. No changes pushed. Local tests were unavailable after the host install’s --ignore-pnpmfile checksum failure. Waiting for release completion and npm publication. Verified HEAD; supplied CI passed. git diff --check and all eight preview-specifier lockfile checks passed. Fresh npm requests returned 404 for every 0.2.0 dependency; upstream #3160 remains draft. No changes pushed. Local tests were unavailable after the host install’s --ignore-pnpmfile checksum failure. Waiting for release completion and npm publication. Session Pushed 04478cf resolving all four merge conflicts. Frozen install, focused lint, formatting and 62 focused tests passed. Host refresh failed from its --ignore-pnpmfile checksum mismatch; normal installation succeeded. Full typecheck/build remain for CI. Waiting for upstream #3160 and npm publication of ViteHub 0.2.0 before switching the eight preview dependencies. Pushed 04478cf resolving all four merge conflicts. Frozen install, focused lint, formatting and 62 focused tests passed. Host refresh failed from its --ignore-pnpmfile checksum mismatch; normal installation succeeded. Full typecheck/build remain for CI. Waiting for upstream #3160 and npm publication of ViteHub 0.2.0 before switching the eight preview dependencies. Session Waiting for running checks before the next pass. |
|
The release prerequisite is still unfulfilled: the npm registry currently returns HTTP 404 for |
Waits on vite-hub/vitehub#3160. This builds against that release PR's pkg.pr.new build (head
5e5dd32). Once ViteHub 0.2.0 is on npm, switch the eighthttps://pkg.pr.new/...@5e5dd32...specifiers inpackage.json(vite-hubplus the seven@vite-hub/*) to0.2.0, addvite-hub@0.2.0and the@vite-hub/*@0.2.0packages tominimumReleaseAgeExcludeif the release is still too new for pnpm's policy, and regenerate the lockfile withpnpm install.What goes
vite-hub,@vite-hub/database,schedule,kv,comments. 0.2.0 ships #3173 #3174 #3175 #3177 #3178 #3179 #3222.#code-image-pngand#live-draftsaliases and bothunavailable.tsstubs.isBrowserAvailable()andisRealtimeAvailable()(#3203) decide at runtime. The kept code moved toserver/utils/code-image-png.tsandserver/utils/live-drafts.ts.blobDocument(blob)(#3215).syncConsoleRoles():console.roles.read(#3214) computes each account's role fromDROP_ADMINS.syncRolefor the operator stays (Better Auth's admin endpoints read the stored role).server/middleware/0.19.console-pages.ts:console.authorizenow runs on page visits (#3200). It answers 404 to anyone but an admin, andconsole.signInPage: "/signin"sends a signed-out visit to/signin?redirect=....server/database-migrate.ts: SQLite builds usedatabase.migrateOnStart(#3208), with the same__drizzle_migrationsledger.comark-content:@vite-hub/contentdepends on it now.Breaking changes in 0.2.0 that hit Drop
@vite-hub/auth,comments,content,database,realtime,scheduleandui./_vitehub/**now get a 302 to/signininstead of the static shell.console.impersonation, the Console'simpersonateaction answers 404 instead of 403.test/auth/console-runtime.mjssent{ method: "vitehub:console:..." }, which 0.1.0 already rejected. It now sends{ operation, input }.What stays, and why
server/middleware/0.0.forwarded-proto.ts: #3188 fixes only Auth's origin. Drop builds about 20 URLs fromevent.url.origin.server/middleware/0.drop-access.ts: #3198's anonymousauthorizegets neither the H3 event nor a way to set response headers (its own PR says so).scripts/migrate-d1.mjs: Deno's predeploy and Docker's D1 start have no ViteHub CLI.scripts/deploy-cloudflare.mjs: #3204 gives Nitro the samewrangler deploy --configcommand, but the script also uploads.envas secrets.scripts/cloudflare-template.ts: a Cloudflare build without D1 name and id fails withDATABASE_MISSING_D1_RESOURCE, because ViteHub doesn't read them fromwrangler.jsonc.claimUploadin KV: #3207'ssetIfAbsentrefuses Workers KV.nitro,nuxt-security,@nuxt/ui,h3-mcppatches: not ViteHub's, unchanged.ViteHub 0.2.0 gaps found
Netlify's hourly cleanup can't run.
test/deploy/netlify-schedule.test.mjscovered the Drop-only schedule patch, so it's deleted here. Upstream's standalone function (packages/schedule/src/internal/provider-output.ts,renderNetlifyScheduleFunction/writeNetlifyScheduleFunctions) is bundled outside Nitro. Repro on this branch:DROP_HOST=netlify NETLIFY=true pnpm build, then runnode -e 'import("./.netlify/v1/functions/vitehub-schedule-cleanup.mjs").then(m => m.default(new Request("https://x/")))'.Cannot find module '@libsql/linux-x64-gnu': it bundled libsql's Node client, not the HTTP-onlynetlifybuild.NODE_PATH, it throwsDatabase is not configured in this runtime.node_modulessymlinks and local.wranglerstate included, into.netlify/v1/schedule/sources/0and ships it viaincludedFiles: ["../schedule/sources/**"].Netlify isn't a production host for Drop, so this PR doesn't carry a patch for it.
@vite-hub/uiis missing fromoptionalFeaturePackages(packages/vite-hub/src/internal/optional-owners.ts). Without it,vite-hub/ui/*re-exports a missing package, and nothing points to it besidesTS2305in typecheck (noVITE_HUB_R0136).presetsandshellhave the same gap.migrateOnStart's data-loss check also fires on a fresh database. It flagsDROP TABLEin a pending migration even when an earlier pending migration created that table in the same run (runtime/migrate-on-start.ts,losses). Drop's0004_drop_comments_on_vitehubtrips it, so Drop setsallowDataLoss: true, which also turns the guard off for future migrations.The Console page handler redirects any signed-out GET (
console/runtime/server/page.get.tscallsconsoleSignInRedirectdirectly). The sign-in middleware only redirectsaccept: text/html. Unknown paths such as/_vitehub/kv/devget the 302 too.Migration safety
d1_migrations, read-only query 2026-11-02): 10 rows, one per file inserver/databases/migrations.wrangler d1 migrations list DB --remotesays "No migrations to apply". Cloudflare still migrates with Wrangler.vitehub db migrateon D1 over HTTP (Vercel, Netlify) also matchesd1_migrationsby file name (internal/d1-migrations.ts). No migration file changes here.__drizzle_migrations, read-only in the pod): 10 rows, maxcreated_at1793529936151, the journal's newestwhen.migrateOnStartapplies only entries newer than that max. The generated plugin registers one database (default), so hashes aren't compared. That matters because Quiver's row for0004_comment_suggestionsholds the hash from before refactor: comments on drops live in ViteHub Comments, with the same numbers, replies, and API #64 edited that file./api/meanswered 200. A fresh file got all 10 beforelisten. The Docker image applied 10 on a fresh volume, then 0 when restarted on the same volume.Verified
pnpm fmt --check,lint,knip,typecheck,run doctor,test(68 files, 428 passed, 3 skipped),build.wrangler devwith a local D1:/,/docs,/signin200;/dropssigned in 200./d/<id>(302 to its slug, then 200) and.md.edit200.test/auth/console-runtime.mjspasses. It covers the 404/302 page rules, computed roles, and the Admins filter.🤖 Generated with Claude Code