Conversation
…anding page - Frame the hero phone and both "Follow the work" captures as one device: metal rim, black bezel, status bar with time and glyphs, Dynamic Island, action/volume/power buttons. One renderPhoneFrame() template produces all three; the chrome scales with the phone's width via --phone-scale and steps down at narrow breakpoints so the island never meets the status icons. - Move the Working/Complete captions below the phones. - Add a Contact button beside Copy install that opens a prefilled email to founders@pilotprotocol.network; it shares the pill base with Copy install, collapses to an icon under 560px, and keeps "Contact" as its accessible name. - Show the cloud terminal mark beside the wordmark in the header. - Target the header's GitHub link by class instead of :last-of-type so adding the Contact link does not hide it on tablets. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0156JJtiUu7SEQTkvPrYgYbd
AI reviewrelevant — Adds realistic responsive phone frames, a landing-page Contact mailto link, and the existing favicon mark to the header. The implementation is scoped to the landing page and includes an appropriate Unreleased changelog entry. The changes are directly related to the landing page, implement the described UI behavior, preserve the existing navigation and copy-install functionality, and do not introduce apparent security or product regressions. Findings
Suggested changelog
Automated review of the submitted diff; it does not replace maintainer approval or CI. |
|
Reconciled in v0.12.1 via #118. The current landing implementation supersedes the old conflicting layout while retaining the polished phone presentation without restoring removed sections. |
What changed
Landing page only; the docs, viewer, CLI, and Worker are untouched.
Phone captures look like a phone. The hero capture and the two under "Follow the work. See the result." now sit in a realistic device frame: metal rim, black bezel, status bar with time and signal/Wi-Fi/battery glyphs, Dynamic Island, and action/volume/power buttons. One
renderPhoneFrame()template renders all three, and the chrome scales with the phone's width through a single--phone-scalecustom property, stepping down at the existing 760/560/420px breakpoints so the island never meets the status icons. The "Working" / "Complete" captions move from inside the frame to below it, since a real device has no caption chin.Header. The site's cloud terminal mark (the existing favicon) appears left of the wordmark. A Contact button sits beside Copy install and opens the visitor's mail app with
founders@pilotprotocol.networkprefilled and "shell.online" as the subject. It shares the pill base with Copy install, collapses to an envelope icon under 560px, and keeps "Contact" as its accessible name. The header's GitHub link is now targeted by a class rather than:last-of-type, so adding a link after it no longer hides it on tablets; its visibility at every width matches the current site.This is the smallest change that gives the landing page a believable device and a direct way to reach the team without adding a form, an endpoint, or any change to the page's CSP.
Preview of this branch: https://artemiia.github.io/shell.online/ (static pages only; sessions do not run there).
Verification
npm run checkandnpm run build:webgo test -race ./...andgo vet ./...— not applicable, no Go changesmailto:; no scripts, fetches, or form actions were addedChecked in Chrome at 320, 360, 375, 390, 421, 460, 500, 520, 560, 561, 600, 760, 761, 1040 and 1400px: no horizontal overflow, no header overflow, no island/icon collision on any of the three phones, no console errors. The docs pages, which share the bundle, still render.
Changelog
Added under Unreleased / Changed in
CHANGELOG.md.🤖 Generated with Claude Code
https://claude.ai/code/session_0156JJtiUu7SEQTkvPrYgYbd