Repository navigation
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Open GSV preview for f72e671. Sign in, create a space and complete normal onboarding. Included inference is configured. Initial certificate issuance can take a few minutes. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d0bc851ee3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ## Instructions | ||
|
|
||
| 0 - On the website or in the desktop app the interface already said your first line for you: `Welcome to the ship. I am the ship. Who are you?` The user is answering it. From any other surface, such as the command line or a messenger, nothing was shown and you only run once they write to you: open your first reply with that line. Pace yourself for all the next steps: | ||
| 0 - On the website or in the desktop app, Zen displays a local welcome as two Ship messages. The first appears after a brief typing mark: |
There was a problem hiding this comment.
Remove the protected prompt edit pending explicit approval
This commit changes production content under workers/gateway/src/prompts/**, but the review request contains no explicit authorization to modify prompt or standing-context content. Keep this protected file unchanged, or obtain explicit approval for the prompt change before including it.
AGENTS.md reference: AGENTS.md:L193-L195
Useful? React with 👍 / 👎.
| }, [answerHistory, conversation.rows, conversation.conversation?.id, outbox.messages, localRuns, runtime.activeRunId, runtime.rows, pid]); | ||
| const welcomeMoments = useShipWelcome({ | ||
| active, ready, ship: !pidProp, conversationId: conversation.conversation?.id ?? null, | ||
| hasHistory: conversationMoments.length > 0 || Boolean(conversation.historyError), |
There was a problem hiding this comment.
Base welcome suppression on canonical messages only
When the canonical Ship conversation is empty but its Process has a visible note, tool-only run, or other activity that ended without sending a message, momentsFromConversation still puts that Process history into conversationMoments; this line therefore sets hasHistory and permanently skips the new-user welcome. Check canonical conversation messages rather than the combined presentation so inspectable Process activity does not make an empty conversation appear initialized.
AGENTS.md reference: AGENTS.md:L84-L84
Useful? React with 👍 / 👎.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 43609e2516
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (firstHumanMessageAt !== null && (firstHumanMessageAt < firstAt || now < firstAt)) return []; | ||
| const first = welcomeMoment("welcome:first", now >= firstAt ? FIRST_MESSAGE : "", now < firstAt, | ||
| now >= firstAt ? firstAt : welcome.startedAt); | ||
| if (firstHumanMessageAt !== null && (firstHumanMessageAt < secondAt || now < secondAt)) return [first]; |
There was a problem hiding this comment.
Preserve welcome rows that have already rendered
When a first message is committed on another surface before firstAt but synchronizes to this client after the first timer has rendered its welcome row, this condition starts returning an empty array and removes that already-visible row. Persist the displayed welcome phase instead of inferring it from the canonical message timestamp; that also avoids reconstructing unseen rows after a suspended tab resumes.
AGENTS.md reference: AGENTS.md:L156-L157
Useful? React with 👍 / 👎.
| does not authorize a lookup. A name supplied during an accepted lookup needs no | ||
| second permission question, and Ship searches with the user's location. For an | ||
| accepted task, Ship uses suitable original or public sources to find task facts, |
There was a problem hiding this comment.
Document location as optional for public lookup
The production onboarding brief at workers/gateway/src/prompts/onboarding/welcome.md:57-60 now says to request an additional identifier only when needed and explicitly says not to always require a location, but this architecture text still states that Ship searches with the user's location. Update the documentation to preserve the minimum-identifying-information policy rather than describing location as mandatory.
AGENTS.md reference: AGENTS.md:L262-L264
Useful? React with 👍 / 👎.
| receive those updates or continue the conversation. After the first task, Ship | ||
| explains both Fleet sections: Responsibilities for tracked work and its history, | ||
| and Routines for reminders and scheduled work. The system responsibilities |
There was a problem hiding this comment.
Remove the mandatory Fleet tour from the architecture guide
This says Ship always explains both Fleet sections after the first task, while the production brief at workers/gateway/src/prompts/onboarding/welcome.md:117-119 requires pointing only to the relevant control and explicitly forbids a compulsory Responsibilities/Routines tour. Align the architecture guide with that behavior so future prompt and test changes do not restore the tour.
AGENTS.md reference: AGENTS.md:L262-L264
Useful? React with 👍 / 👎.
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 85acf0ea56
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| firstHumanMessageAt: conversationMoments.reduce<number | null>((first, moment) => | ||
| moment.role === "human" && moment.timestamp !== null ? Math.min(first ?? moment.timestamp, moment.timestamp) : first, null), |
There was a problem hiding this comment.
Avoid permanently suppressing the welcome for failed sends
When the first send fails, its optimistic outbox row is included in conversationMoments, so this reducer supplies a human timestamp and useShipWelcome immediately persists stopped: true. If the user then dismisses the failed row or reloads, the outbox disappears and the conversation remains canonically empty, but the welcome can never return, leaving an empty Ship without onboarding. The new canonical-history gate does not cover this path; only a committed human message should permanently stop the welcome, while an in-flight send can hide it transiently.
AGENTS.md reference: AGENTS.md:L84-L84
Useful? React with 👍 / 👎.
| if (welcome.firstShownAt !== null && welcome.secondShownAt === null | ||
| && current >= welcome.firstShownAt + BETWEEN_MESSAGES_MS) { | ||
| recordWelcome({ ...welcome, secondShownAt: current }); |
There was a problem hiding this comment.
Preserve the second typing phase after delayed timers
When the first welcome has rendered and the tab is backgrounded or the system sleeps until after the second deadline, the delayed callback enters this branch and marks the second message as already shown, so the user sees it immediately without the required 1.5-second typing mark and that phase is persisted. Fresh evidence beyond the prior suspended-tab comment is that this overdue-second branch remains, while the added suspension test delays only the first callback. Resume the second typing phase instead of converting an overdue deadline directly into secondShownAt.
Useful? React with 👍 / 👎.
|
@codex review |
|
Codex Review: Didn't find any major issues. Nice work! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Validation
git diff --checkpassed.Prompt: The user explicitly supplied and approved the final onboarding responsibility text.
Docs: Updated conversation architecture, early-access guidance, and responsibility architecture.