Skip to content

Make the project presentable: Pages at kccarlos.github.io/gitcontext, signed macOS releases, Homebrew cask, README screenshots - #21

Merged
kccarlos merged 5 commits into
devfrom
chore/presentable
Oct 7, 2026
Merged

kccarlos merged 5 commits into
devfrom
chore/presentable

Conversation

@kccarlos

@kccarlos kccarlos commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

What changes

  • Pages: production builds use the /gitcontext/ base and the CNAME for the lost gitcontext.xyz is gone. Pages deploys from its own workflow (pages.yml) on every push to main, after unit tests and a Playwright smoke test of the built site under /gitcontext/. A failed release can no longer take the site down.
  • Web bug fix: TokenCountsProvider passed a new onBatch callback on every render. That callback is in the counting effect's deps, so each progress tick restarted counting and flooded the git worker with "Too many pending tasks". Production builds never finished counting. A regression test reproduces it: it ran out of memory before the fix.
  • Desktop bug fix: git2's default https/ssh features linked Homebrew's openssl@3 into the macOS binary. The released 2.3.0 app loads /opt/homebrew/opt/openssl@3 and fails without it. The app only reads local repos, so those features are off now. The minimum macOS is 10.15, Tauri 2's floor.
  • Releases: semantic-release creates the tag and a draft release. The desktop builds are stamped with that version (assets were named 1.0.0 before) and uploaded, and the draft is published only when every platform succeeds.
    • macOS: a universal build, Developer ID signed, with the app and the DMG notarized and stapled. CI checks the team, Gatekeeper, the architectures and system-only linkage.
    • Running the workflow by hand (workflow_dispatch) builds and signs without releasing.
  • Homebrew: packaging/homebrew/gitcontext.rb is rendered and pushed to kccarlos/homebrew-tap after each release.
  • README: screenshots, install options (Homebrew, DMG, web) and an architecture overview.

Release setup (done)

Merging dev → main cuts a release right away. Everything it needs is set:

  • release environment: DEVELOPER_ID_P12_BASE64, DEVELOPER_ID_P12_PASSWORD, ASC_API_KEY_P8_BASE64, ASC_API_KEY_ID, ASC_API_ISSUER_ID
  • homebrew environment: HOMEBREW_TAP_TOKEN (push access to kccarlos/homebrew-tap confirmed)
  • Repository variable APPLE_TEAM_ID

Checked locally with the same credentials: the app was signed, notarized (Accepted), stapled and passed Gatekeeper; the DMG was notarized (Accepted), stapled and passed Gatekeeper.

https://claude.ai/code/session_01Yb4sbCDrvzqV8fFpnCrQK5

…nt restart loop

The custom domain gitcontext.xyz is gone, so production builds use the
/gitcontext/ base and the CNAME is removed. A Playwright smoke test checks
the built site under that path.

TokenCountsProvider passed a new onBatch on every render; it is a
dependency of the counting effect, so each progress update restarted
counting and flooded the git worker (production builds never finished
counting).

Claude-Session: https://claude.ai/code/session_01Yb4sbCDrvzqV8fFpnCrQK5
git2's default https/ssh features pulled in openssl-sys and libssh2-sys,
and the released binary loaded /opt/homebrew/opt/openssl@3 at launch, so
it failed on Macs without that Homebrew package. The app only reads local
repositories, so the network features are off.

Minimum macOS is 10.15, the floor Tauri 2 supports.

Claude-Session: https://claude.ai/code/session_01Yb4sbCDrvzqV8fFpnCrQK5
- Pages deploys in its own workflow on every push to main, after unit
  tests and a smoke test of the build under /gitcontext/, so a release
  failure can no longer take the site down.
- Releases: semantic-release creates the tag and a draft release first;
  the desktop builds are stamped with that version (assets were named
  1.0.0 before), uploaded, and the draft is published only when every
  platform succeeded.
- macOS: universal build signed with the Developer ID identity from the
  release environment, app and DMG notarized and stapled, checked for
  team, Gatekeeper, architectures and non-system libraries.
- Homebrew: the full cask is rendered from packaging/homebrew and pushed
  to kccarlos/homebrew-tap after a release.
- workflow_dispatch builds and signs without releasing.

Claude-Session: https://claude.ai/code/session_01Yb4sbCDrvzqV8fFpnCrQK5
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-06T23:47:51.602612Z 2ba2ec0 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2ba2ec09a2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

archs="$(lipo -archs "$app/Contents/MacOS/gitcontext-desktop")"
case "$archs" in *x86_64*arm64*|*arm64*x86_64*) echo "Architectures: $archs" ;; *) echo "::error::Not universal: $archs"; exit 1 ;; esac
# Only system libraries: a Homebrew dylib would not exist on users' Macs.
if otool -L "$app/Contents/MacOS/gitcontext-desktop" | tail -n +2 | grep -v -E '^\s*(/System/|/usr/lib/)'; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use a portable whitespace class in the linkage check

On the macOS runner, grep -E uses POSIX extended regular expressions, where the portable whitespace syntax is [[:space:]], not \s (grep specification, ERE character classes). Because every otool -L dependency line is indented, this pattern treats valid /System and /usr/lib entries as disallowed, enters the error branch, and prevents every macOS release from being uploaded; use ^[[:space:]]* here.

Useful? React with 👍 / 👎.

Comment thread apps/web/public/CNAME
@@ -1 +0,0 @@
gitcontext.xyz

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Clear the Pages custom-domain setting

When the repository's Pages settings still name gitcontext.xyz, deleting this file does not switch the site back to kccarlos.github.io/gitcontext; GitHub explicitly notes that removing a CNAME file does not remove the configured custom domain (GitHub Pages documentation). Since the new build also assumes the /gitcontext/ base path, clear the custom-domain setting manually or through the Pages API before relying on the new URL.

Useful? React with 👍 / 👎.

@@ -0,0 +1,61 @@
# The web app on GitHub Pages: https://kccarlos.github.io/gitcontext/

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add the required story verification report

A repo-wide search of .codex/ralph-gitcontext/verify found no report covering this release/Pages story, so the commit lacks the required record of commands and pass/fail results, changed files, unresolved risks, and the standalone verification marker; add the story-specific report before landing this workflow.

AGENTS.md reference: AGENTS.md:L42-L50

Useful? React with 👍 / 👎.

@kccarlos
kccarlos merged commit 8b92ad8 into dev Oct 7, 2026
4 checks passed
@github-actions

github-actions Bot commented Oct 7, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 2.4.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@kccarlos
kccarlos deleted the chore/presentable branch October 7, 2026 01:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant