Skip to content

feat(site): tag cloud sign-up links with src=site - #378

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/pm-dispatch-objectos-ju9td1-issue-330
Nov 5, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/pm-dispatch-objectos-ju9td1-issue-330

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Closes #330

What changed

CLOUD_SIGNUP_URL in src/lib/positioning.ts is now https://cloud.objectos.ai/_console/register?src=site. Cloud reads src from the register page's Referer and records it as signed_up.source, so sign-ups started from this site read site instead of direct.

Every sign-up CTA already reads the constant and links straight to /_console/register, so no component changed:

  • header CTA and drawer CTA (src/components/Header.astro)
  • home hero (src/components/MarketingHome.astro)
  • pricing page Free and Team buttons (src/lib/pricing.ts)
  • llms.txt (src/pages/llms.txt.ts)

A small helper, signupUrl(src), builds the link and clamps src to cloud's closed list (site, docs, hn, blog, cn_demo, direct, other); any other value becomes other. CLOUD_SIGNUP_URL is signupUrl('site'). No campaign links were added. The sign-in link (/_console/login) is unchanged.

Evidence (HEAD 1a6bafd)

  • Built dist/: 1997 occurrences of _console/register, all ?src=site (1996 href attributes in 986 HTML pages, plus llms.txt); 0 without the parameter.
  • Per locale (HTML): de 239 · en 287 · es 239 · fr 239 · ja 239 · ko 239 · zh-Hans 257 · zh-Hant 257.
  • _console/login occurrences carry no query.
  • Gates: pnpm content:lint exit 0; node scripts/check-positioning.mjs PASS (it compares only CANONICAL T1–T4 with the README snapshot, so the URL does not touch it; snapshot unchanged); pnpm check 0 errors / 0 warnings / 0 hints; pnpm build exit 0; pnpm seo:smoke passed (4 inline script digests CSP-checked).
  • No inline script changed, so public/_headers is unchanged.
  • No visible markup change (href values only), so no screenshots.

Acceptance notes

  • No blog post hard-codes the register URL (git grep over content/blog finds no hit).
  • The docs site's sign-up links (?src=docs) live in another repository and are outside this PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FeA1nwBz1ohH65dvffUGKr

CLOUD_SIGNUP_URL now opens https://cloud.objectos.ai/_console/register?src=site,
so cloud records sign-ups started from this site as signed_up.source = site
instead of direct. The header CTA, the drawer CTA, the home hero, the pricing
page's Free and Team buttons and llms.txt all read the constant already.

signupUrl(src) builds the link and clamps src to cloud's closed list (site,
docs, hn, blog, cn_demo, direct, other); any other value becomes other.
The sign-in link is unchanged.

Co-Authored-By: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对

ACCEPT。

  • 形态:只改了 src/lib/positioning.ts 一个文件,+15/−1,一个提交 1a6bafd,基于 a239294。不涉及受管面,远低于 3000 行。
  • 前提实测:
    • 改前 CLOUD_SIGNUP_URL 不带任何参数(src/lib/positioning.ts:71,与 comment 6624228589 一致)。
    • 现在由 signupUrl('site') 生成。来源值限定在云端的封闭清单 site/docs/hn/blog/cn_demo/direct/other,清单外的值记为 other。
    • 头部、抽屉、首页首屏、定价页 Free/Team 按钮和 llms.txt 本来就读这个常量,所以组件一处没改。
  • 门禁 check-runs:head 1a6bafd 上 Build and deploy = success;Post-deploy probe = skipped(PR 上按设计跳过)。本地结果:
    • content:lint exit 0
    • check-positioning PASS(只读 T1–T4,快照未动)
    • check 0 errors
    • build exit 0,其中 dist 链接检查通过
    • seo:smoke exit 0,4 个 CSP digest 不变
  • 抽查读数:dist 里 _console/register 共出现 1997 次。8 种语言的 HTML 中有 1996 个 href,另 1 处在 llms.txt。1997 次全部带 ?src=site,不带的 0 次。_console/login 全部不带查询参数。
  • 接受的偏差:无。
  • 范围外去向:
    • docs 站注册链接带 ?src=docs,归另一个仓库,由 comment 6624228589 的提出者承接(carrier),本 PR 不处理。
    • 博客正文中没有硬编码的注册链接(0 处)。
  • 落地条款:pr_ready → 合并队列 → 确认 push 部署和 post-deploy probe。

Generated by Claude Code

@objectstack-fleet

objectstack-fleet Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor Author

Landing held: the seat's relay call (pr_ready + automerge_enable) for this PR was refused by the session's permission classifier (reason: "Merge Without Review"). Per the landing rules the seat stops here, does not retry by another route, and has asked the maintainer for an explicit go in the session. The PR stays draft until then.


Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review November 5, 2026 00:38
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Nov 5, 2026
Merged via the queue into main with commit 5a186cf Nov 5, 2026
2 checks passed
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Landed. The maintainer approved the merge in the seat's session (2026-11-05): 「合 #378 #379 #380 #381.」

reading value
merge commit on main 5a186cf (merge queue)
push deploy covering it Build and deploy on 62f74aa: success (the runs on intermediate queue merges were superseded)
Post-deploy probe on 62f74aa success

#330 closed by this PR; pm:dispatched removed.


Generated by Claude Code

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.

Sign-up links carry their source: every 「免费开始」 CTA links to cloud.objectos.ai/_console/register?src=site (the site half of cloud#3396)

1 participant