Repository navigation
docs: landing page in site/, deployed to GitHub Pages - #19
Merged
Merged
Conversation
One page about Grove: workspaces built from git worktrees across several repositories, sessions across accounts and moving a session between them, the command-line tool, install (Homebrew, the release zip, the first launch past Gatekeeper), requirements, and what Grove changes on disk, the transcript mirror included. The screenshots are WebP copies of docs/screenshots, four of them cut to their top part. Canonical URL, Open Graph and Twitter tags, JSON-LD, sitemap.xml and robots.txt are for https://efim0v.github.io/grove/. The page loads nothing from other sites. docs/social-preview.png is the same 1280x640 image as site/og.png, for the repository's social preview.
Runs on pushes to main that change site/ or this workflow, and by hand. Needs the Pages source set to GitHub Actions in the repository settings.
The landing page gave two ways an account gets linked. Sharing one of its sessions is a third: Share links the account through the same code as a cross-account resume. The Sessions tab lists live sessions first and sorts only the rest by recency, so its caption no longer says newest first.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What and why
Grove has no page of its own outside GitHub, and the repository's homepage field points at Brow. This adds a one-page site for https://efim0v.github.io/grove/ and the workflow that publishes it.
site/index.html: one static page with inline CSS and a few lines of inline JavaScript for the copy buttons; without JavaScript the commands are still there to select. The page loads nothing from other sites (no fonts, scripts, analytics or trackers), and a Content-Security-Policy meta tag keeps it that way. Light and dark follow the system setting.--worktree;grovecommand-line tool;grove-cliformula, the release zip with a checksum command, and the first launch (Open Anyway), including why the Homebrew install needs that step too;~/.claude, Brow optional;cleanupPeriodDayscleanup deletes, until they are 90 days old), the onboarding flag, Grove's own files, what it doesn't do, and how to undo all of it.site/img/: WebP copies of the eight screenshots indocs/screenshots(4.4 MB of PNG become 435 KB). Four are cut to their top part and fade out at the bottom. The page says that the screenshots show made-up demo data. Only the first screenshot loads up front; the rest load lazily.og:image, JSON-LDSoftwareApplication,sitemap.xmlandrobots.txt. The text names no version, so a new release doesn't make it stale.site/og.pnganddocs/social-preview.png: the same 1280×640 PNG (375 KB), rendered with headless Chrome from an HTML template with the app icon and the real Workspaces screenshot. GitHub takes a PNG, JPG or GIF under 1 MB as a repository's social preview..github/workflows/pages.yml: GitHub's static-site Pages workflow on the current major versions:actions/checkout@v7,actions/configure-pages@v6,actions/upload-pages-artifact@v5,actions/deploy-pages@v5. It runs on pushes tomainthat changesite/**or the workflow, and from the Actions tab.Where the facts come from
Code references are to
b10950a.WorkspaceService.swift:389-548.feat/{name}and~/Workspaces/{project}:Config.swift:42, 256.origin/HEAD:GitService.swift:156-210.TreeModel.swift:36-62.GraphScreen.swift:261-279.ProjectSessionRows.swift:12-16. The Sessions tab lists live sessions first, then the rest by recency:SessionRows.swift:138-139, 238-252.AppState.swift:733-770.LaunchConfigSheet.swift:21-47,LaunchRequest.swift:4-8, starting on cmux atAppState.swift:786.AppState.swift:813-841,TerminalFocus.swift:41-56.WorkspaceRowCard.swift:266-274, 405-445,SessionsScreen.swift:165-182. Add & log in opens cmux:AccountsScreen.swift:453-480.AppState.swift:890-915, 1018-1038, 1096-1170.AppState.swift:945-985,SessionMigration.swift:145-165, 270-282, 482-514,docs/grove-and-brow.md:79-91.StatuslineInstaller.swift:21-23, 67, 81-90, 178-199; installed at launch (GroveMenuBarApp.swift:96,AppState.swift:1338-1371); Stop restores it (AccountsScreen.swift:154,AppState.swift:1318-1327).SharedSessionStore.swift:23, 55-101, 206-232; the Link to shared store button atAccountsScreen.swift:237; Share links the account too (AppState.swift:1062-1091, throughensureLinkedForResumeat1018-1038).TranscriptMirror.swift:44, 85-149, 167-187, defaultsConfig.swift:129, off switchAppState.swift:924-937andGlobalSettingsScreen.swift:49, 71-90, PurgeSessionsScreen.swift:28-33, 159.ClaudeService.swift:777-802, called atAppState.swift:645, 830.AppState.swift:207-211, 1220-1224, 1378-1382.ClaudeCredentials,TokenKeeperor the OAuth clients. The only URL requests in the package are in those Brow-only clients. The git subcommands Grove runs are all local; none of them fetches, pulls or pushes.Sources/grove-cli/main.swift:64-72, 211, 287-329.Package.swift:6,Scripts/build-app.sh:45-46(LSMinimumSystemVersion26.0), and the README's download line and Requirements section.cleanupPeriodDays, 30 days by default: https://code.claude.com/docs/en/claude-directory#cleaned-up-automaticallyclaude --worktree: https://code.claude.com/docs/en/worktreesrobots.txtonly counts at the root of a host: https://developers.google.com/search/docs/crawling-indexing/robots/create-robots-txtHow I checked it
h1and no skipped heading levels;#link;alt, andwidth/heightthat match the file, on every image;og:image;shasum -a 256 -c --ignore-missing SHA256SUMS.txtreports OK for the files that are there and skips the others (shasum 6.02 on macOS). Without--ignore-missingit fails when onlyGrove.zipwas downloaded.actionlintpasses on the workflow. The workflow itself has not run yet.Before and after merging
configure-pagesfails. It already does:GET /repos/efim0v/grove/pagesreportsbuild_type: workflowandhttps://efim0v.github.io/grove/.efim0v/homebrew-tapwith thegrovecask and thegrove-cliformula. They use fully qualified names, which Homebrew's tap trust accepts without a separatebrew truststep: "Installing a fully qualified formula or cask name trusts only that item" (https://docs.brew.sh/Tap-Trust).docs/social-preview.pngunder Settings → Social preview. GitHub has no API for the social preview.robots.txtonly at the root of a host, so/grove/robots.txtand itsSitemap:line have no effect. To get the sitemap read, submit https://efim0v.github.io/grove/sitemap.xml in Google Search Console, or serve a rootrobots.txtfrom anefim0v.github.iorepository.