Skip to content

fix: PRO-118…129 triage — scheduled uploads, not-found page, publishing-without-auth warning, docs drift (0.4.3) - #17

Merged
OlegKrasikov merged 9 commits into
mainfrom
fix/pro-118-129
Sep 21, 2026
Merged

OlegKrasikov merged 9 commits into
mainfrom
fix/pro-118-129

Conversation

@OlegKrasikov

Copy link
Copy Markdown
Collaborator

Twelve Linear bugs (PRO-118…129) filed 2026-08-28 against the pre-re-import tree, each re-verified against main before anything was touched. Several were already fixed or were never true here; what was live is fixed below.

Triage

Ticket Verdict Here
PRO-118 already fixed adds the missing --dry-run test for workspacePick
PRO-119 live, bigger than filed deferred — design is on the ticket. Only the not-found page ships
PRO-120 live wizard warns on publishing without auth; .env.example
PRO-121 live composer uploads to the durable bucket when the post has a time
PRO-122 live, 3 sites npm devnpm run dev
PRO-123 claim wrong none — auth.ts never had the startsWith; covered by authRotate.test.ts
PRO-124 one string left cf_ig_reapcf_pub_reap. The registration claim is wrong: admin calls the route
PRO-125 live, docs the gate is two variables
PRO-126 already fixed none
PRO-127 partial --yes help, flag table, .env.example wording, SUPABASE_PROJECT_REF
PRO-128 3 of 5 live no "live preview", livechat People: View, knowledge-base label
PRO-129 6 of 12 live docs, dead prompt field, stale fixture, new validate pass 21

Worth a look

  • PRO-121. POST /chatfuel/publishing/media was served and tested and had no caller. storeFile picks the bucket when the post has a time and the queue can schedule; items come back source: 'durable'. No client-side delete — the proxy sweeps unreferenced objects, and deleting from the client would strand a saved post whose edit was cancelled.
  • Not-found. resolveRouted in lib/route.ts; / and host-owned routes are not "unknown". auth is the only hidden module and its routes come through HOST.routes.
  • Pass 21 fails an eager Component and a static import of the same root beside lazy(). Checked by breaking deals locally.
  • PRO-129 O ("migration 0020") left alone: the header names the file the user's app receives (supabase/sql.ts maps 0001_admin.sql0020_chatfuel_admin.sql).

Verification

pnpm validate, pnpm check, pnpm lint green. wizard 807, shell 4078, ui 914, api-client 165, module-manifest 28 green. pack-smoke PASS (offline half).

content/vite-plugin-proxy has 4–5 failures locally, all "refuses a body past the ceiling" → write EPIPE. Same on a clean main via git stash, set varies per run — not from this branch.

🤖 Generated with Claude Code

OlegKrasikov and others added 7 commits September 21, 2026 12:11
…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>
OlegKrasikov and others added 2 commits September 21, 2026 12:15
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>
@OlegKrasikov
OlegKrasikov merged commit 03dcb94 into main Sep 21, 2026
7 checks passed
@OlegKrasikov
OlegKrasikov deleted the fix/pro-118-129 branch September 21, 2026 07:28
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.

2 participants