Customer Engagement Platform for Email, Push Notifications, & SMS
모바일 푸시, 웹 푸시, SMS, 이메일, 인앱 메시징 분야 세계 최고, 200만 기업이 신뢰해 연간 120억 건 이상 전송
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기release.show: every release deserves a premiere. The landing site.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
The marketing site for release.show, which turns GitHub releases, merged
pull requests and website changes into 30 to 90 second videos, plus the blog
post, release widget, social posts and email digest that go with them. One
page, one stylesheet and one script, served by Cloudflare as static assets. No framework,
no bundler, no build step and no runtime dependency.README 전문 보기 ↗The marketing site for release.show, which turns GitHub releases, merged pull requests and website changes into 30 to 90 second videos, plus the blog post, release widget, social posts and email digest that go with them. One page, one stylesheet and one script, served by Cloudflare as static assets. No framework, no bundler, no build step and no runtime dependency.
It was designed in Claude Design (release.show Landing v2 White.dc.html) and
ported from its React template to static HTML: every reel, the scroll-driven
scenes, the player and the pricing tickets are in the HTML, and the script only
animates them. The photographic stills are generated with
Higgsfield (see The stills).
release.show is in early access. So:
llms.txt and
the JSON-LD say the same (availability: PreOrder).illustration chip. Keep them.Claims are tracked in COPY.md.
| Anchor | Reel | Job |
|---|---|---|
#top | 01 · Opening titles | The claim, the five extra outputs, two calls to action |
#premiere | 02 · The premiere | A 20-second illustrative episode in a player: four scenes, captions, chapters, play/pause, 16:9 / 1:1 / 9:16. It grows to full bleed as you scroll |
| 03 · The problem | "Release notes nobody reads" turns into "A video people watch" | |
#acts | 04 · How it works | Connect, ship as usual, premiere, scrubbed by scroll |
#features | 05 · Features | Seven frames on a film strip that scrolls sideways |
#outputs | 06 · Every format | Avatar presenter, blog post, release widget, social posts, email digest |
#programme | 07 · The channel | release.show/acme, an episode list with a hover title card |
| 08 · Credits | The integrations | |
#admission | 09 · Pricing | Four tickets, monthly / annual, add-ons |
#finale | 10 · Finale | A 3-2-1 film leader, then the early-access form |
Plus 404.html, llms.txt, sitemap.xml, robots.txt, site.webmanifest,
.well-known/security.txt and an Open Graph card.
assets/releaseshow.js sets three custom properties on scroll, once per frame:
--p on each [data-scene]: progress through its sticky run, 0 to 1.--v on each [data-win="a,b,fade"] inside a scene: 1 while --p is
between a and b, ramping over fade.--e on each [data-reveal]: 0 to 1 as it enters the viewport.The CSS does all the moving with those, and every one has a default. With the
script blocked (<html class="no-js">) or with prefers-reduced-motion, the
page switches to static mode: the tall scenes collapse to their content, every
window shows at once, the film strip wraps, and the form falls back to a
mailto:.
.
├── index.html the page
├── 404.html
├── assets/
│ ├── releaseshow.css the whole design system, tokens at the top
│ ├── releaseshow.js scroll scenes, the player, hover card, billing toggle, sign-up
│ ├── favicon.svg the mark
│ ├── img/*.webp Higgsfield stills (tools/generate-images.sh)
│ ├── logos/*.svg integration marks, from Simple Icons (CC0)
│ ├── og.png Open Graph card
│ ├── apple-touch-icon.png icon-512.png
│ ├── org-avatar.png GitHub organization avatar, uploaded by hand
│ └── readme-banner.png the banner above
├── tools/
│ ├── generate-images.sh the Higgsfield prompts, and the script that renders them
│ ├── build-dist.sh assembles dist/ from an allowlist, stamps cache hashes
│ ├── deploy.sh deploys origin/main, and nothing else
│ ├── og-render.html source for og.png
│ ├── banner-render.html source for the README banner
│ ├── avatar-render.html source for the org avatar
│ └── render-og.sh renders all of the above with headless Chrome
├── llms.txt robots.txt sitemap.xml site.webmanifest _headers _redirects
└── COPY.md every factual claim, with its source
No build step, but the page uses root-relative paths, so serve it rather than
opening it as file://:
python3 -m http.server 8080
# then http://localhost:8080/
The sign-up form will not reach the waitlist from localhost, and says so with the contact address.
Four photographic stills sit behind the hero, the presenter cards, the blog
post's hero frame and the finale. They are generated with Higgsfield's GPT
Image 2, and the prompts in tools/generate-images.sh are their source:
higgsfield auth login # once
tools/generate-images.sh # every still that is missing
tools/generate-images.sh finale # redo one
tools/render-og.sh # then refresh og.png and the banner, which use them
About 6.5 credits a still. build-dist.sh refuses to build while a still the
stylesheet points at is missing, so a deploy can never ship a background that
404s. Every still is generic on purpose: no real person, product UI, logo or
on-image text.
./tools/render-og.sh
The GitHub organization avatar is written to assets/org-avatar.png. GitHub has
no API for organization avatars, so upload it by hand at
github.com/organizations/Release-Show/settings/profile.
A Cloudflare Worker with static assets, releaseshow-website (wrangler.toml), on the Factory0 account. It has no script: Cloudflare serves dist/ and applies _headers and _redirects. release.show and www.release.show are its custom domains, attached by the deploy itself. Merge to main, then:
tools/deploy.sh # deploy origin/main
tools/deploy.sh --dry-run # build it and say what would ship
The script deploys origin/main and nothing else. It fetches, checks main
out into a throwaway worktree, builds there, deploys that, and removes it; the
deployment records the commit. It never reads your working copy or its dist/.
More than one agent session can work in one checkout at once, and deploying
from a working copy can publish another session's uncommitted edits or roll
back work merged minutes earlier. Do not run wrangler deploy by
hand.
Edit in a worktree of your own, not in the shared checkout:
git worktree add ../releaseshow-website-worktrees/<name> -b <branch> origin/main
Use an API token for the Cloudflare account that owns release.show. The
default wrangler login may be a different account, and the deploy then fails
with Authentication error [code: 10000].
The form posts { email, product: "release.show", answers: { repo }, captchaToken }
to https://api.release.show/v1/waitlist: a Cloudflare Worker
(Release-Show/waitlist-backend) running Cratefield's
harness waitlist module with its own D1 database. On any failure the form
says so and offers [email protected] instead of pretending the address
was saved.
The human check. captchaToken comes from a Cloudflare Turnstile widget
(Managed mode, site key 0x4AAAAAAFM4K5IcBaDXU6Qx, hostnames release.show
and www.release.show), rendered explicitly by assets/releaseshow.js with
the action waitlist. The Worker verifies the token with siteverify, bound to
the hostname release.show and that action, and answers 400
.../problems/captcha-failed when it is missing or rejected. Tokens are
single-use, so the script resets the widget after every attempt. If the
widget cannot load (blocked, or no turnstile after 10 s), the form says so
and does not send. On localhost the widget shows a domain error: the site key
only works on the two hostnames above, so test a real join on the live site,
by hand.
The Worker's CORS allows https://release.show only, and it binds Turnstile
to that one hostname, so the form works on the apex, not on
www.release.show. www should redirect to the apex (a Cloudflare Redirect
Rule).
The Worker mails a double opt-in link, so a join ends on a "Check your inbox"
panel: it names the address, points at Spam/Promotions, tells people who
confirmed before that they are already in (the API answers the same 202
whatever the address's state, by design), and offers "Use a different email".
The panel takes focus and is announced; while sending, the button is disabled
with aria-busy and a spinner.
Content-Security-Policy. _headers sends a strict policy with no
'unsafe-inline': default-src 'self', frame-ancestors 'none',
object-src 'none', base-uri 'self', and every other directive limited to
what the pages actually load (see the comments in _headers). Turnstile is the
only third party in script-src and frame-src, and connect-src is the
waitlist Worker alone. Two things keep it that way, and
tools/build-dist.sh refuses to build when either drifts:
<script> is allowed only by its sha256 in _headers; andstyle="" attribute. Write the style, then run
python3 tools/csp-inline-styles.py: it moves every attribute into
assets/releaseshow-inline.css as a class. Each rule weighs as much as the inline
style did, so the look does not change.illustration chips.