Repository navigation
Conversation
Collaborator
Author
|
Self-review: PASS
|
…wLab#481/ThinkFlowLab#501/ThinkFlowLab#505) Regenerated ds-bot patches (0005/0008) after merge.
Collaborator
Author
|
Self-review: PASS
|
Keep ThinkFlowLab#355 email noticeOffApp on ended turns; use main's trimEnded for ThinkFlowLab#471 failed-turn retention. Restore approvals.js in patch topics and regenerate client bundle and ds-bot patches.
Collaborator
Author
|
Self-review: PASS
|
# Conflicts: # core/client.js # core/src/client/settings.js # core/src/host/channel.js # core/test/install.test.js # docs/subsystems/core-client.md # patches/ds-bot/0001-core-fixes.patch # patches/ds-bot/0005-social-seams.patch # patches/ds-bot/0008-client-bundle.patch # patches/ds-bot/0014-flybot-branding.patch
Collaborator
Author
|
Self-review: PASS
|
This was referenced Oct 20, 2026
# Conflicts: # patches/ds-bot/0001-core-fixes.patch
Collaborator
Author
|
Self-review (review-pr, Birfy reviewer agent, 2026-10-20 20:41 Asia/Shanghai): PASS (merge-main conflict fix; no feature change) Tip SHA: 7ef9234
Findings: none to act on. This review does not authorize a merge: risk:T3 still needs the maintainer's approval (the owner queues it). |
Collaborator
Author
|
Owner decision (2026-10-20 21:12 Asia/Shanghai): closing — won't do. |
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.
Part of #355 (first slice per the Owner decision: email to yourself; Slack, retries/delivery log and the 24/7 runtime stay open there).
What. With your opt-in (Settings → General → Email me, off by default), the events behind the system notifications of #353 — one of your own Bots finished or failed a turn, or an approval started waiting — also go to your own address: one short line each (who, what, group name) plus a link back into FlyBot. No chat text, tool name or arguments; "Approve or reject only in FlyBot. Replies to this email are not read." One email per one-minute batch, at most one every five minutes; approvals answered before the send are left out; switching off drops what waits.
How. New
core/src/host/email.js: settings from the environment only (FLYBOT_SMTP_URL= your own SMTP account,smtps://orsmtp://+ STARTTLS;FLYBOT_EMAIL_TO= the only recipient;FLYBOT_URL= the link). Minimal SMTP client onnode:net/node:tlswith certificate checks; a password is never sent without TLS; a failure is logged with its code only, never the server's text or the password. Hooks: one line each inturns.js(noteEnded) andapprovals.js. View carriesemail: { to } | null(hidden with more than one member,authz.js);set-prefstakesemailand refusestruewhen nothing is set up. Only while the deployment has one member.compose.yamlpasses the three variables through; guide indocs/docker.md(+ zh). No new dependency, no paid service, no relay we run.Test.
core/test/email.test.js(config parsing and rejection of malformed values/header injection, message encoding, SMTP exchange against a local fake server, password refused without TLS, reply-code-only errors, batching/gap, off by default / multi-member / unset / switched off, answered approvals dropped, approvals hook), turn hook inapproval-notices.test.js,set-prefsininstall.test.js, compose passthrough indocker-profile.test.mjs.ARCH_DOCS_BASE=origin/main TZ=UTC npm run verifypasses. Ad hoc (not committed): STARTTLS + AUTH PLAIN and implicit TLS against a local TLS server with a self-signed cert trusted viaNODE_EXTRA_CA_CERTS, a wrong password givesSMTP_535, an untrusted cert is refused.Risk tier: T3 (estimate; the controller sets the label) — sends email off the box, touches
authz.js/channel.js.