| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(www): post merged PRs to Discord #shipped and finish their claims (#1947) * feat(www): post merged PRs to Discord #shipped and finish their claims When corsairdev/corsair reports a merged PR, www finishes the claim it is linked to (the row admin.markMerged writes by hand) if the PR author is the claimer, and posts a card to #shipped on the Corsair Discord: points, a first-merge flag and an @mention for community plugins, a "Corsair team" card for staff and interns (GitHub author_association OWNER, MEMBER or COLLABORATOR). The Discord message id is stored on the finished row so a redelivered webhook posts once. Needs DISCORD_BOT_TOKEN, OSS_SHIPPED_DISCORD_CHANNEL_ID and GITHUB_WEBHOOK_SECRET; without the first two the hook does nothing. * fix(www): pre-fill the LinkedIn post and fix the share text for fixes LinkedIn's share-offsite page ignores any text, so the #shipped card's LinkedIn link opened an empty post. It now opens the feed composer with the text and the PR link, and names Corsair rather than the X handle. Fixes and other changes read "My Ambee fix just got merged into ..." instead of "I just shipped a ambee fix". * test(www): expect the 5-claim cap acf6bd47d raised MAX_USER_BUILT_INTEGRATIONS from 1 to 5 and left the test asserting 1. The test now checks the boundary against the constant. * fix(www): pick the author's claim, post each PR's card once, refresh OSS pages - A PR URL linked on several integrations finished nothing when another contributor's row came first. Every linked claim is checked and the one the PR author holds wins. - Before posting, the last 50 #shipped messages are checked for a card on the same PR, so a redelivered or overlapping webhook doesn't post again, plain cards included. - An automatic finish refreshes the same OSS caches as Mark merged. - Share links escape ( and ), which ended the Discord markdown link early. - The two metadata casts say why the column can't be typed tighter. * feat(www): link buttons on #shipped cards, ping only the contributor Post on X, Post on LinkedIn and View PR are now link buttons under the card instead of markdown links in the description. A share url longer than Discord's 512-character button limit falls back to the old links in the text. The contributor mention sets allowed_mentions to that one user. * fix(www): clip #shipped titles to 256, integration cards only for features - Discord rejects the whole message when an embed title is over 256 characters, so a long PR title or integration name lost the card. Titles are now clipped with an ellipsis. - "add ... integration/plugin" in a fix or chore title (fix(slack): add retry to Slack plugin) no longer turns into an integration announcement. Only feat and unprefixed titles ("Add Customer.io integration") are read that way. - www tests run with the dev-source condition, so importing a workspace package's runtime code doesn't depend on its dist being built. * fix(www): verify webhook signatures against the raw request body The route parsed JSON bodies and processWebhook hashed JSON.stringify of the parsed object, so a delivery verified only when the sender's bytes matched that re-serialization (no spaces, no \u escapes). Pass the body through as received; processWebhook parses it. Replayed locally: a signed delivery with spaced, \u-escaped JSON was rejected before and runs the #shipped hook now; a body changed after signing is still rejected. | 3 天前 | |
feat(www): add blog | 4 个月前 | |
fix: update landing page and docs for permissions | 1 个月前 | |
feat(www): add integration combo pages | 1 个月前 | |
fix(www): guard invalid dates and add year unit to formatRelativeTime (#1801) | 28 天前 | |
fix: update landing page to add integration pages | 1 个月前 | |
docs(www): cover account emails and product and marketing emails in the privacy policy (#1959) * docs(www): cover account emails and product and marketing emails in the privacy policy Hub sign-in data was described as used only to run the account, which ruled out a newsletter or lifecycle emails. Splits Hub emails into account emails (no opt-out) and product and marketing emails (updates, launches, company news, tips, surveys, plan or credit offers, some based on Hub usage), each with an unsubscribe link and a legitimate-interest basis. Says which Hub data picks an email, that link clicks are recorded and opens are not, and that the contents of connected apps and Google user data are never used. Adds the email provider to the subprocessors and the suppression list to retention. * test(www): expect the 5-claim cap acf6bd47d raised MAX_USER_BUILT_INTEGRATIONS from 1 to 5 and left the test asserting 1. The test now checks the boundary against the constant. * docs(www): send product emails only where direct-marketing rules allow Legitimate interest is the data-protection basis; it doesn't decide whether a marketing email may be sent (PECR and similar rules do), so the policy says both. | 2 天前 | |
feat(www): add blog | 4 个月前 | |
fix: update icon manifest | 7 天前 | |
feat(www): add PostHog web analytics (#844) | 2 个月前 | |
update readme | 5 个月前 | |
feat(corsair): auth missing link generated by hub | 3 个月前 | |
Improve landing page SEO, metadata, and mobile navbar (#225) | 4 个月前 | |
feat(www): landing page nav, GitHub star count, hub links (#332) | 3 个月前 | |
Improve landing page SEO, metadata, and mobile navbar (#225) | 4 个月前 | |
feat(www): add integration combo pages | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 天前 | ||
| 4 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 28 天前 | ||
| 1 个月前 | ||
| 2 天前 | ||
| 4 个月前 | ||
| 7 天前 | ||
| 2 个月前 | ||
| 5 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 3 个月前 | ||
| 4 个月前 | ||
| 1 个月前 |