diff --git a/AGENTS.md b/AGENTS.md index ded8f94..bb62293 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -56,11 +56,15 @@ public engineering records with dated evidence, not live configuration. - Current subscription layout is introduction, capacity, unified feedback, action form, cancellation/unsubscribe, then privacy. Keep feedback above the actions it explains across signup and signed management states. - Current candidate details are in + Prior iteration details are in [the normal subscription iteration](docs/iterations/2026-10-13-normal-subscription.md); [the v14 iteration](docs/iterations/2026-10-13-subscription-polish.md) records the previous layout and deployment. Do not predeclare deployment, - recipient release or a v1.0.1 tag before their actual evidence/authorization. + recipient release or a tag before their actual evidence/authorization. + The user explicitly authorized v1.0.1 tag, push and deployment on October 13, + 2026. This supersedes the earlier wait-for-acceptance release gate, but is not + evidence of fresh inbox acceptance. Consult docs/releases/v1.0.1.md for the + completed tag/deployment mapping; preserve immutable existing tags. - Preserve accurate tracking and network disclosures. Anonymous Brevo tracking is not proof that pixels/rewritten links are disabled. Mainland accessibility is not guaranteed. diff --git a/docs/CURRENT_STATE.json b/docs/CURRENT_STATE.json index f7f6295..72f22d0 100644 --- a/docs/CURRENT_STATE.json +++ b/docs/CURRENT_STATE.json @@ -57,7 +57,7 @@ "requiredCheck": "verify", "branchProtectionPreserved": true, "branchPolicy": "Keep only main after completed iterations; temporary PR branches allowed and cleaned after verified merge", - "documentationFollowup": "v16 deployment and request-limit diagnostic receipt; v1.0.1 still awaits user acceptance", + "documentationFollowup": "v1.0.1 authorized; actual tag and deployment evidence will be recorded after completion", "recoverablePreCleanupBundleVerified": true, "protectedManagedWorktreeRetained": true }, @@ -274,7 +274,7 @@ "Observe real queued cancellation and additional bounce scenarios only under authorized acceptance", "Before authorized production maintenance, refresh account permissions, full DNS/DKIM inventory, actual Sites deployment, D1 migration ledger and backup/restore capability, schedules and provider allowance" ], - "refreshRule": "Read live GitHub and operations docs before maintenance. v15 is deployed with scoped historical test-role release verified; docs-only receipts may follow the matching code tree. v1.0.1 requires explicit user acceptance. Preserve immutable v1.0.0 and private operational data.", + "refreshRule": "Read live GitHub and Sites before maintenance. User authorized v1.0.1 on 2026-10-13; use release.phase and verified tag/deployment evidence, preserving historical snapshots and v1.0.0.", "operationsHandoff": { "scope": "Public maintenance documentation; not production account inspection or deployment", "index": "docs/operations/README.md", @@ -386,138 +386,17 @@ "protectedManagedWorktreeRetained": true }, "release": { - "version": "1.0.0", - "phase": "completed", - "recordedAt": "2026-10-13T10:21:15Z", - "notes": "docs/releases/v1.0.0.md", - "github": { - "commit": "71ff116e033f0295a44415d13acd92bf1c0b97b6", - "tree": "661f59e806ce2174a33d6d87b9b44d0959400554", - "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/5", - "mergedAt": "2026-10-13T10:13:52Z", - "pullRequestHead": "04c99295995993c93c0cb3596a55f049369601f7", - "requiredVerify": { - "status": "passed", - "url": "https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381641758/job/115243248665" - }, - "postMergeVerify": { - "status": "passed", - "url": "https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381929658/job/115244227252" - }, - "annotatedTag": "v1.0.0", - "remoteTagVerified": true, - "tagObject": "55ef990ca2a893c5d72e0a67806c2743cc832e6a", - "peeledCommit": "71ff116e033f0295a44415d13acd92bf1c0b97b6", - "releaseUrl": "https://github.com/AutoGenUI/ag-ui.ai/releases/tag/v1.0.0", - "publishedAt": "2026-10-13T10:18:34Z", - "draft": false, - "prerelease": false - }, - "sites": { - "projectId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926", - "versionNumber": 13, - "versionId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_e5bc604caacc819184c81bd223d5c9ee", - "sourceCommit": "8512d230c7df3bece70c503af02ff2acce0dbe9d", - "sourceTree": "661f59e806ce2174a33d6d87b9b44d0959400554", - "matchesGithubReleaseTree": true, - "deploymentId": "appgdep_6ace04b15f408191ad18bdcbbe4be3d3", - "status": "succeeded", - "completedAt": "2026-10-13T10:15:25.780042+00:00", - "environmentSetRevisionPreserved": 12, - "hasMcp": true, - "active": true, - "audience": "public", - "automationCount": 2 - }, - "validation": { - "localTests": { - "base": 35, - "newsAndMail": 42, - "subscriptionUi": 10, - "localHttp": 8, - "total": 95 - }, - "localChecks": [ - "typescript", - "content", - "lint", - "build" - ], - "localD1Isolated": true, - "localMailDisabled": true, - "localBrowserViewports": [ - "390x844", - "1440x900" - ], - "localBrowserLanguages": [ - "zh", - "en" - ], - "focusTest": "Temporary CDP focus emulation; restored after verification; not a second physical-device test", - "audit": { - "moderate": 8, - "high": 0, - "critical": 0, - "unchangedHighSeverityGate": "passed" - }, - "bundle": { - "javascriptBytes": 919625, - "javascriptGzipBytes": 267506, - "cssBytes": 115604, - "cssGzipBytes": 22853, - "budgetsPreserved": true, - "javascriptRawMarginBytes": 375 - }, - "productionReadOnlyChecks": { - "subscriptionPages": { - "zhHttp": 200, - "enHttp": 200 - }, - "rssHttp": { - "zh": 200, - "en": 200, - "compatibility": 200 - }, - "anonymousAdminHttp": 403, - "publicStatus": { - "enabled": true, - "confirmedPublic": 1, - "remaining": 249 - }, - "zhBrowser": { - "status": "passed", - "publicAggregateVisible": true, - "firstPartyStatisticsVisible": true, - "consoleErrors": 0 - }, - "enBrowser": { - "status": "not-completed", - "evidence": "HTTP and RSS passed; subsequent browser connection timed out, so no additional production English DOM assertion was made; this is not evidence of a site fault" - }, - "network": { - "currentConfiguredEgressHttp": 200, - "directEgressHttp": 403, - "allNetworksAccessibleClaim": false - } - }, - "links": "Passed in required GitHub verify; local documentation references also validated" - }, - "userConfirmationReport": { - "date": "2026-10-13", - "evidence": "User reported a new inbox and active webpage confirmation with public count 1; no email or signed URL retained" - }, - "boundaries": { - "schemaChanged": false, - "dnsChanged": false, - "productionMailGatesChanged": false, - "schedulesChanged": false, - "secretValuesReadOrExported": false, - "productionSubscriberRowsRead": false, - "newRealMailSent": false, - "newPaidActions": false - }, - "rolloutLimit": "New client requires subscriptionType; use matching client and Worker and refresh open pages after rollback", - "documentationFollowup": "Receipt-only PR after publication does not redeploy Sites or move the immutable v1.0.0 tag; query GitHub for its eventual commit instead of self-reference" + "version": "1.0.1", + "phase": "authorized-preparing-protected-PR-and-deployment", + "authorizedOn": "2026-10-13", + "baseMain": "b0dbe4bd2a41be7c8908425050d8d275fc86e6c7", + "notes": "docs/releases/v1.0.1.md", + "authorization": "User explicitly requested v1.0.1 tag, code push and updated deployment; this supersedes earlier release waiting gates, not new inbox acceptance", + "tagCreated": false, + "githubReleaseCreated": false, + "realMailSent": false, + "schemaChanged": false, + "configurationChanged": false }, "subscriptionPolish": { "recordedOn": "2026-10-13", @@ -784,7 +663,9 @@ "http": 403 } ], - "productionBrowserLimit": "No new production DOM claim; previous agent browser navigation blocked. Synthetic desktop/mobile browser proof and native deployment/HTTP evidence are recorded separately." + "productionBrowserLimit": "No new production DOM claim; previous agent browser navigation blocked. Synthetic desktop/mobile browser proof and native deployment/HTTP evidence are recorded separately.", + "historical": true, + "supersededBy": "release.version 1.0.1 after explicit user authorization on 2026-10-13" }, "subscriptionThrottleIteration": { "phase": "deployed-awaiting-user-acceptance", @@ -828,6 +709,144 @@ "deploymentCompletedAt": "2026-10-13T13:33:22.540158+00:00", "diagnosticVerified": true, "noCountersReset": true, - "noMailSent": true + "noMailSent": true, + "historical": true, + "supersededBy": "release.version 1.0.1 after explicit user authorization on 2026-10-13" + }, + "releaseHistory": { + "v1.0.0": { + "version": "1.0.0", + "phase": "completed", + "recordedAt": "2026-10-13T10:21:15Z", + "notes": "docs/releases/v1.0.0.md", + "github": { + "commit": "71ff116e033f0295a44415d13acd92bf1c0b97b6", + "tree": "661f59e806ce2174a33d6d87b9b44d0959400554", + "pullRequest": "https://github.com/AutoGenUI/ag-ui.ai/pull/5", + "mergedAt": "2026-10-13T10:13:52Z", + "pullRequestHead": "04c99295995993c93c0cb3596a55f049369601f7", + "requiredVerify": { + "status": "passed", + "url": "https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381641758/job/115243248665" + }, + "postMergeVerify": { + "status": "passed", + "url": "https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381929658/job/115244227252" + }, + "annotatedTag": "v1.0.0", + "remoteTagVerified": true, + "tagObject": "55ef990ca2a893c5d72e0a67806c2743cc832e6a", + "peeledCommit": "71ff116e033f0295a44415d13acd92bf1c0b97b6", + "releaseUrl": "https://github.com/AutoGenUI/ag-ui.ai/releases/tag/v1.0.0", + "publishedAt": "2026-10-13T10:18:34Z", + "draft": false, + "prerelease": false + }, + "sites": { + "projectId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926", + "versionNumber": 13, + "versionId": "appgprj_6a5dcacfcbb4819193bac2b2104ed926~appgver_e5bc604caacc819184c81bd223d5c9ee", + "sourceCommit": "8512d230c7df3bece70c503af02ff2acce0dbe9d", + "sourceTree": "661f59e806ce2174a33d6d87b9b44d0959400554", + "matchesGithubReleaseTree": true, + "deploymentId": "appgdep_6ace04b15f408191ad18bdcbbe4be3d3", + "status": "succeeded", + "completedAt": "2026-10-13T10:15:25.780042+00:00", + "environmentSetRevisionPreserved": 12, + "hasMcp": true, + "active": true, + "audience": "public", + "automationCount": 2 + }, + "validation": { + "localTests": { + "base": 35, + "newsAndMail": 42, + "subscriptionUi": 10, + "localHttp": 8, + "total": 95 + }, + "localChecks": [ + "typescript", + "content", + "lint", + "build" + ], + "localD1Isolated": true, + "localMailDisabled": true, + "localBrowserViewports": [ + "390x844", + "1440x900" + ], + "localBrowserLanguages": [ + "zh", + "en" + ], + "focusTest": "Temporary CDP focus emulation; restored after verification; not a second physical-device test", + "audit": { + "moderate": 8, + "high": 0, + "critical": 0, + "unchangedHighSeverityGate": "passed" + }, + "bundle": { + "javascriptBytes": 919625, + "javascriptGzipBytes": 267506, + "cssBytes": 115604, + "cssGzipBytes": 22853, + "budgetsPreserved": true, + "javascriptRawMarginBytes": 375 + }, + "productionReadOnlyChecks": { + "subscriptionPages": { + "zhHttp": 200, + "enHttp": 200 + }, + "rssHttp": { + "zh": 200, + "en": 200, + "compatibility": 200 + }, + "anonymousAdminHttp": 403, + "publicStatus": { + "enabled": true, + "confirmedPublic": 1, + "remaining": 249 + }, + "zhBrowser": { + "status": "passed", + "publicAggregateVisible": true, + "firstPartyStatisticsVisible": true, + "consoleErrors": 0 + }, + "enBrowser": { + "status": "not-completed", + "evidence": "HTTP and RSS passed; subsequent browser connection timed out, so no additional production English DOM assertion was made; this is not evidence of a site fault" + }, + "network": { + "currentConfiguredEgressHttp": 200, + "directEgressHttp": 403, + "allNetworksAccessibleClaim": false + } + }, + "links": "Passed in required GitHub verify; local documentation references also validated" + }, + "userConfirmationReport": { + "date": "2026-10-13", + "evidence": "User reported a new inbox and active webpage confirmation with public count 1; no email or signed URL retained" + }, + "boundaries": { + "schemaChanged": false, + "dnsChanged": false, + "productionMailGatesChanged": false, + "schedulesChanged": false, + "secretValuesReadOrExported": false, + "productionSubscriberRowsRead": false, + "newRealMailSent": false, + "newPaidActions": false + }, + "rolloutLimit": "New client requires subscriptionType; use matching client and Worker and refresh open pages after rollback", + "documentationFollowup": "Receipt-only PR after publication does not redeploy Sites or move the immutable v1.0.0 tag; query GitHub for its eventual commit instead of self-reference" + } } } diff --git a/docs/PROJECT_CONTEXT.md b/docs/PROJECT_CONTEXT.md index 4b60da0..86261e5 100644 --- a/docs/PROJECT_CONTEXT.md +++ b/docs/PROJECT_CONTEXT.md @@ -2,7 +2,11 @@ 本说明用于在同一个项目中持续迭代。它仅保留可公开的工程事实,未复制私人运营审计、账户、验收邮箱、生产数据或秘密值。机器可读记录见 [CURRENT_STATE.json](CURRENT_STATE.json)。 -## 当前迭代:订阅申请限流反馈(2026-10-13) +## 当前发布:v1.0.1(2026-10-13) + +用户已明确要求创建 v1.0.1 标签、提交推送及更新部署,覆盖此前等待验收后再打标签的门槛。本轮仅将此前已部署的订阅改进归入版本,更新工程版本为 1.0.1,保留全部运行逻辑、配置、限额及历史标签。标签、CI 与 Sites 的实际完成凭据记入 [v1.0.1 发布回执](releases/v1.0.1.md) 和机器状态;发布授权不等于新增真实收件验收。 + +## 前一迭代:订阅申请限流反馈(2026-10-13) 普通订阅身份释放后的无效申请已复现为一个独立的申请限流路径:旧版超限也返回“查看邮件”,却不产生待发邮件。修复返回明确 HTTP 429 和下一固定窗口时间,并加入仅 owner、精确匹配固定目标的无发信只读诊断。邮箱的固定日申请窗口在新加坡每天 08:00 更新,用户届时须主动重试;它与每日发信额度不同。 diff --git a/docs/operations/README.md b/docs/operations/README.md index a3f0406..63abc16 100644 --- a/docs/operations/README.md +++ b/docs/operations/README.md @@ -11,6 +11,8 @@ ## 当前主线与证据 +2026-10-13 用户已授权 **v1.0.1 标签、代码推送及更新部署**,此前等待验收的门槛由此覆盖。最新完成状态、源码、tag 和 Sites 映射以 [v1.0.1 回执](../releases/v1.0.1.md) 与 [CURRENT_STATE.json](../CURRENT_STATE.json) 的 `release` 为准。以下 v1.0.0 项保留为历史证据,不作为最新运行版本;当前发布不新增真实收件验收或改变邮件额度。 + - GitHub 主线为 [AutoGenUI/ag-ui.ai 的 main](https://github.com/AutoGenUI/ag-ui.ai)。[PR #5](https://github.com/AutoGenUI/ag-ui.ai/pull/5) 已正常合并,远端带注释 tag [v1.0.0 / 正式 Release](https://github.com/AutoGenUI/ag-ui.ai/releases/tag/v1.0.0) 指向 `71ff116e033f0295a44415d13acd92bf1c0b97b6`;[PR verify](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381641758/job/115243248665) 和 [main verify](https://github.com/AutoGenUI/ag-ui.ai/actions/runs/38381929658/job/115244227252) 通过。每次迭代可使用临时 PR 分支,合并并核对内容后清理,长期仅保留 main,不改主分支保护。 - 正式 v1.0.0 已于 2026-10-13 10:15:25.780042 UTC 部署至原 Sites 项目,数字版本序号 13,deployment `appgdep_6ace04b15f408191ad18bdcbbe4be3d3` 终态 succeeded。Sites source `8512d230c7df3bece70c503af02ff2acce0dbe9d` 的 tree 与 release tree `661f59e806ce2174a33d6d87b9b44d0959400554` 一致。完整 version_id、tag 对象及验收见 [发布回执](../releases/v1.0.0.md)。GitHub 合并仍不自动代表 Sites 部署;本次两者各有独立凭据。 - 原公众邮件开关和既有采编任务保留,`env_set_revision=12`,平台元数据仍有 2 项任务。本次发布没有 schema、DNS、邮件开关或任务修改,没有读取秘密/订阅行或新增真实邮件。本轮收尾只补充文档,不再次部署或移动 `v1.0.0` 标签;v12 交接和旧 CI 数据保留为历史。 diff --git a/docs/releases/v1.0.1.md b/docs/releases/v1.0.1.md new file mode 100644 index 0000000..0a08655 --- /dev/null +++ b/docs/releases/v1.0.1.md @@ -0,0 +1,22 @@ +# AG-UI.AI v1.0.1 发布回执 + +2026-10-13 用户明确授权 v1.0.1 标签、提交推送及更新部署。本记录初始阶段为发布候选;正式 tag、GitHub SHA、CI 和 Sites 对应版本在实际完成后补录。授权覆盖此前的等待发布门槛,但不代表新增邮箱收件成功证据。 + +## 相对 v1.0.0 的变化 + +- 调整下拉箭头留白;订阅页统一为介绍、容量、反馈、操作表单、取消/退订、隐私说明。 +- 优化中英确认邮件和周报 HTML/纯文本,区分确认入口与管理/退订区域;移除误导性的返回填写按钮。 +- 有效确认页实际可见且就绪时自动 POST 确认;GET、HEAD、SSR、预取不确认,取消/退订仍需主动操作。能执行页面 JavaScript 的扫描器仍可能触发确认,不声称防住全部扫描。 +- 普通退订身份可以经新同意重新申请;保留新旧链接代际、历史、抑制、不确定提交与防重复投递。 +- 仅 owner 精确匹配固定目标可释放历史测试角色,仍需普通用户自行申请确认;仅 owner 的诊断不发信、不改状态、不导出地址或签名。 +- 申请超限显示 HTTP 429、明确未发新邮件及下一固定窗口时间;邮箱每日两次请求窗口在新加坡 08:00 切换,原计数与发送额度不变。 + +完整实现和既有验证见 [体验优化](../iterations/2026-10-13-subscription-polish.md)、[普通身份与布局](../iterations/2026-10-13-normal-subscription.md)、[申请限流](../iterations/2026-10-13-subscription-throttle.md)。本次版本提交仅修改工程元数据与公开说明,不再修改这些运行逻辑。 + +## 验证与保留边界 + +既有 v16 改进通过 119 项本地检查及 required CI;本次发布再次通过对应候选 CI 与 Sites 构建后才推送正式标签。保留原 920000 字节 JS 门槛,上一版实测 919961,仅余 39 字节;8 项 moderate 依赖问题与两项 lint 警告仍为已知限制。 + +保留原 Sites 项目、公开域名、D1、MCP、环境配置及两项任务。无 schema、DNS、发信开关、配额或订阅身份变更,不发送真实邮件、不读取私有邮箱或密钥、不新增付费 API。提供商 submitted、delivered 与读者实际收件仍分开记录。当前发布不自动补发被限流的申请,读者须在允许时间后重新提交。 + +GitHub 标签与 Sites 递增版本号是独立标识;正式标签固定在已验证的发布提交。后续补录文档可以领先该提交,但不得移动标签或混称为一次新部署。历史 v1.0.0 保持不变。 diff --git a/package-lock.json b/package-lock.json index 79cceb5..d6b393d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ag-ui-ai", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ag-ui-ai", - "version": "1.0.0", + "version": "1.0.1", "dependencies": { "@ag-ui/client": "0.0.57", "@ag-ui/core": "0.0.57", diff --git a/package.json b/package.json index e6aa336..1582974 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ag-ui-ai", - "version": "1.0.0", + "version": "1.0.1", "private": true, "engines": { "node": ">=22.13.0"