fix: PRO-118…129 triage — scheduled uploads, not-found page, publishing-without-auth warning, docs drift (0.4.3) - #17
Merged
Merged
Conversation
…119) An unknown first path segment resolved to the first module, so a module copied into the app and never registered opened as somebody else's page under its own address. It is a "Page not found" inside the shell now; the menu stays up, and the first rail item is no longer a no-op on that page. The rest of PRO-119 — teaching --embed to register into a scaffolded app — is deferred; the design is on the ticket. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Every file the composer took went to the platform's file store, whose address expires within hours, and the schedule refuses one of those — so the refusal was the only outcome there was. A file added while the post has a time now goes to the deployment's own bucket through POST /chatfuel/publishing/media, which the proxy already served and nothing called, and comes back as source 'durable'. An upload made before the time was set is still refused; the message now says to remove it and add it again. Nothing is deleted from the client: the proxy sweeps unreferenced objects itself, and a client-side delete would strand a saved post whose edit was cancelled. Also drops the ComposerModal comment describing a preview tab that was never built (PRO-128). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…epts (PRO-118, PRO-120, PRO-122, PRO-127) - selectModules warns when the closure has publishing and not auth: that pair posts on the spot and can schedule nothing, and it is what every --yes run lands on. recommends stays recommends. - The three 'run the app with the token in the environment' lines said '<pm> dev', which is 'npm dev' under the default package manager. - --yes help said it installs every ready module; it leaves out the opt-in ones. - workspacePick's --dry-run branch had no test. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…he dead env prompt field (PRO-129) Pass 21: the descriptor's type accepts an eager component, and an eager one ships in the first load. app.env[].prompt had no reader and no manifest set it; resolve stays, described as the descriptive metadata it is. Removes an inert VITE_AUTH_TENANT_ID fixture. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…24, PRO-125, PRO-127, PRO-128, PRO-129) - The auth gate is two variables, not three; scheduling needs auth as well as PUBLISHING_SECRET; SUPABASE_PROJECT_REF is documented in .env.example. - publishing no longer promises a live preview; cf_ig_reap is cf_pub_reap. - livechat declares People: View, which the contact card needs. - The knowledge base calls the field 'About the business' in the undo toast and the loading label too. - Flag table lists --version/--help; .env.example is copied, not written; handoff.md lands in the finish-setup checklist; pnpm validate does check the vendoring rules; api-client src/ does not import graphql. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Changed: the manifest version, the 0.4.3 section of the changelog, which the release workflow reads for the GitHub Release body, and the content index. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…r the app lacks pack-content refuses 'pnpm' in what gets published. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The index is built from tracked files, and it was generated while the test was still untracked. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ng is sent (PRO-121) Review on #17. The bucket takes five types and 25 MB; the composer offered image/* and any size, so a HEIC off a phone got through the picker to a 415 and a 40 MB video went all the way up the wire to a 413 — both only on a post with a time on it. - acceptAttribute(kind, durable) names the five types on the durable path and leaves image/* alone everywhere else, where narrowing it hides files that publish fine. - durableProblem() checks type and size in storeFile before uploadDurableMedia. The picker's filter is not enough on its own: a dragged file never saw it. - The limits are the proxy's, repeated in lib/constants.ts with the source named. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
ifedyukin
approved these changes
Sep 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Twelve Linear bugs (PRO-118…129) filed 2026-08-28 against the pre-re-import tree, each re-verified against
mainbefore anything was touched. Several were already fixed or were never true here; what was live is fixed below.Triage
--dry-runtest forworkspacePickpublishingwithoutauth;.env.examplenpm dev→npm run devauth.tsnever had thestartsWith; covered byauthRotate.test.tscf_ig_reap→cf_pub_reap. The registration claim is wrong:admincalls the route--yeshelp, flag table,.env.examplewording,SUPABASE_PROJECT_REFPeople: View, knowledge-base labelpromptfield, stale fixture, new validate pass 21Worth a look
POST /chatfuel/publishing/mediawas served and tested and had no caller.storeFilepicks the bucket when the post has a time and the queue can schedule; items come backsource: 'durable'. No client-side delete — the proxy sweeps unreferenced objects, and deleting from the client would strand a saved post whose edit was cancelled.resolveRoutedinlib/route.ts;/and host-owned routes are not "unknown".authis the only hidden module and its routes come throughHOST.routes.Componentand a static import of the same root besidelazy(). Checked by breakingdealslocally.supabase/sql.tsmaps0001_admin.sql→0020_chatfuel_admin.sql).Verification
pnpm validate,pnpm check,pnpm lintgreen. wizard 807, shell 4078, ui 914, api-client 165, module-manifest 28 green.pack-smokePASS (offline half).content/vite-plugin-proxyhas 4–5 failures locally, all "refuses a body past the ceiling" →write EPIPE. Same on a cleanmainviagit stash, set varies per run — not from this branch.🤖 Generated with Claude Code