Skip to content

feat: enhance desktop download experience and clarify unnotarized beta distribution: - #299

Merged
yashdev9274 merged 1 commit into
mainfrom
supercode-cli
Sep 17, 2026
Merged

yashdev9274 merged 1 commit into
mainfrom
supercode-cli

Conversation

@yashdev9274

@yashdev9274 yashdev9274 commented Sep 17, 2026

Copy link
Copy Markdown
Owner

Description

  • Updated README to provide detailed instructions for sharing unnotarized beta versions of Supercode, including user guidance for macOS approval.
  • Modified download page to display a notice for unnotarized beta downloads, informing users of potential launch restrictions and installation steps.
  • Adjusted desktop download logic to identify development artifacts as unnotarized beta versions, ensuring accurate representation in the application.

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactor (no functional changes)

How Has This Been Tested?

Please describe the tests that you ran to verify your changes.

  • bun test passes
  • bun run typecheck passes
  • bun run lint passes (if applicable)

Checklist:

  • My code follows the project's style guidelines
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works

Summary by CodeRabbit

  • New Features

    • Added support for downloading labeled, unnotarized macOS development betas.
    • Download pages now identify beta builds, display macOS approval warnings, and provide recovery guidance.
    • Beta versions now include a “beta” label, with installation instructions covering DMG ejection before launch.
  • Documentation

    • Clarified the distinction between development beta downloads and signed, notarized production releases.
    • Documented beta distribution, release configuration, and macOS “Open Anyway” steps.
  • Tests

    • Expanded coverage for beta detection and invalid download links.

…a distribution:

- Updated README to provide detailed instructions for sharing unnotarized beta versions of Supercode, including user guidance for macOS approval.
- Modified download page to display a notice for unnotarized beta downloads, informing users of potential launch restrictions and installation steps.
- Adjusted desktop download logic to identify development artifacts as unnotarized beta versions, ensuring accurate representation in the application.
@vercel

vercel Bot commented Sep 17, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
supercli Ready Ready Preview Sep 17, 2026 5:38pm UTC
supercli-client Ready Ready Preview Sep 17, 2026 5:38pm UTC
supercli-docs Ready Ready Preview Sep 17, 2026 5:38pm UTC
vercel-supercodeai-integration Ready Ready Preview Sep 17, 2026 5:38pm UTC

@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: a478e71a-ae11-4deb-b2be-5fc2c86f919a

📥 Commits

Reviewing files that changed from the base of the PR and between fbc5af2 and feea819.

📒 Files selected for processing (4)
  • apps/supercode-desktop/README.md
  • apps/web/app/(pages)/download/page.tsx
  • apps/web/lib/desktop-download.test.ts
  • apps/web/lib/desktop-download.ts

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


Walkthrough

The desktop download resolver now accepts -development DMG artifacts and marks them as unnotarized betas. The download page shows beta-specific warnings and launch guidance. The README documents beta distribution separately from signed production releases.

Changes

Desktop beta distribution

Layer / File(s) Summary
Download contract and validation
apps/web/lib/desktop-download.ts, apps/web/lib/desktop-download.test.ts
DesktopDownload now includes isUnnotarizedBeta. Development DMG links set this flag, with tests covering valid and invalid cases.
Beta download presentation
apps/web/app/(pages)/download/page.tsx
The page displays beta warnings, accessible labels, beta version text, DMG eject guidance, and macOS approval steps.
Beta distribution documentation
apps/supercode-desktop/README.md
The README documents unnotarized beta sharing and separates beta requirements from signed production release gates.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant DownloadResolver
  participant DownloadPage
  participant macOSUser
  DownloadResolver->>DownloadPage: provide resolved beta metadata
  DownloadPage->>macOSUser: show beta warning and download link
  DownloadPage->>macOSUser: show approval and DMG eject instructions
Loading

Merge Risk: ⚪ Minimal · up to feea8

The beta download flow identifies unnotarized development builds and presents the corresponding macOS guidance without affecting standard releases. No actionable merge risk remains.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 3 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: improved desktop downloads and clarified unnotarized beta distribution.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 3 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

A rabbit checks the beta trail
Development hops past the gate
Warnings shine beside the link
Eject the disk, then launch with care
Signed releases wait in their own burrow

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Sep 17, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 4/5

The PR should not merge until the documented beta tag is separated from, or explicitly handled by, the signed production release workflow.

Findings

  1. P1 Beta Tag Triggers Production

Summary

This PR enables explicitly disclosed downloads of unnotarized desktop beta artifacts and documents their manual distribution.

  • Extends desktop URL validation to recognize the exact -development.dmg suffix.
  • Adds beta labeling, launch guidance, and accessible warning associations to the download page.
  • Updates parser tests for production, beta, and rejected URL variants.
  • Documents packaging and publishing the development DMG, although the proposed beta tag collides with the existing production workflow trigger.

Reviews (1) · Last reviewed commit: "feat: enhance desktop download experienc..."


An Apple Developer membership is not required to share the development DMG as an explicitly labeled beta. It is ad-hoc signed, not Developer ID signed or notarized. Retain the `-development.dmg` filename; do not describe it as a notarized production release.

Verify it with `python3 scripts/verify-dmg.py dist/Supercode-0.1.0-universal-development.dmg 0.1.0 1`, then upload the DMG and matching `.sha256` to a GitHub **prerelease** tagged `desktop-v0.1.0`. Keep it separate from the CLI latest release. Test installation and production login before announcing availability. The existing desktop tag workflow is for signed releases and requires Apple secrets; it does not automate this manual beta route.

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 Beta Tag Triggers Production

The manual beta instructions use the desktop-v0.1.0 tag and say this route is separate from the signed-release workflow. However, every desktop-v* tag starts the credential-dependent production release job for the same tag. Following these instructions can therefore fail when Apple secrets are unavailable or create a competing draft production release. Use a beta tag pattern excluded from that workflow, or update the workflow to distinguish beta tags.


An Apple Developer membership is not required to share the development DMG as an explicitly labeled beta. It is ad-hoc signed, not Developer ID signed or notarized. Retain the `-development.dmg` filename; do not describe it as a notarized production release.

Verify it with `python3 scripts/verify-dmg.py dist/Supercode-0.1.0-universal-development.dmg 0.1.0 1`, then upload the DMG and matching `.sha256` to a GitHub **prerelease** tagged `desktop-v0.1.0`. Keep it separate from the CLI latest release. Test installation and production login before announcing availability. The existing desktop tag workflow is for signed releases and requires Apple secrets; it does not automate this manual beta route.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Publishing the beta to a desktop-v0.1.0 prerelease tag collides with the signed production flow: .github/workflows/desktop-release.yml triggers its release job on any desktop-v* tag push (it hard-fails on the missing Apple secrets check), and its gh release create desktop-v0.1.0 --verify-tag step later expects that tag for the notarized DMG. Worth calling out here, or using a distinct tag naming for betas (e.g. desktop-beta-v0.1.0) so a manual beta doesn't kick off a failing production run or squat the production tag.

@yashdev9274
yashdev9274 merged commit 346c1cb into main Sep 17, 2026
9 of 13 checks passed
@yashdev9274

Copy link
Copy Markdown
Owner Author

🤖 Supercode AI Review

Summary

This PR updates the desktop download flow to explicitly support unnotarized macOS development beta DMGs and clearly warn users during installation/launch. It adds detection logic (-development.dmg) in the download resolver, surfaces an “Unnotarized beta” notice on the download page, and extends link-validation tests to keep “development artifacts” from being treated like notarized releases.

Walkthrough

  • apps/web/lib/desktop-download.ts
    • Extends the DMG path matcher to allow both:
      • Supercode-<ver>-universal.dmg (signed production)
      • Supercode-<ver>-universal-development.dmg (unnotarized beta)
    • Adds isUnnotarizedBeta boolean to the returned DesktopDownload.
  • apps/web/lib/desktop-download.test.ts
    • Adds a positive test that universal-development.dmg is classified as isUnnotarizedBeta: true.
    • Tightens “fails closed” coverage by rejecting universal-beta.dmg and other owner/version mismatches.
  • apps/web/app/(pages)/download/page.tsx
    • If desktopDownload?.isUnnotarizedBeta, shows a prominent warning banner and:
      • updates the download link’s aria labeling/description
      • appends “beta” to the version line
      • adds extra launch instructions (“Open Anyway” path) after install.
    • Tweaks the generic instruction copy to include “eject the DMG” (applies to both types).
  • apps/supercode-desktop/README.md
    • Updates user-facing docs to clarify:
      • the “Coming soon” gating until a configured release URL
      • how to share unnotarized betas (explicit disclosure + prerequisites)
      • where to set NEXT_PUBLIC_DESKTOP_DMG_URL after publishing assets

Changes table

File Summary
apps/supercode-desktop/README.md Document unnotarized beta distribution, macOS approval guidance, and tagging/release separation rules
apps/web/app/(pages)/download/page.tsx Display unnotarized beta notice + adjust aria text, version label, and launch instructions
apps/web/lib/desktop-download.ts Detect -development.dmg artifacts and return isUnnotarizedBeta
apps/web/lib/desktop-download.test.ts Add classification test and expand “fails closed” negative cases

Findings

  • [medium] Regex allows any -development suffix but relies on filename convention consistencyapps/web/lib/desktop-download.ts

    • The matcher now accepts Supercode-<ver>-universal-development.dmg for unnotarized beta. This is good, but it assumes the only beta naming convention will remain exactly -development.
    • Suggested fix: If you anticipate future unnotarized beta naming variations, consider centralizing the naming rules (or include explicit “beta label” support later rather than broadening the regex now).
    • No code change required if naming convention is stable; the current approach is intentionally strict (which is good for “fails closed”).
  • [low] Accessibility: aria-describedby is conditionally set, but banner presence is conditionalapps/web/app/(pages)/download/page.tsx

    • This is handled correctly via aria-describedby={desktopDownload.isUnnotarizedBeta ? "desktop-beta-notice" : undefined} and the banner only renders when the condition is true.
    • Nit: you might also consider making the notice banner role/status explicit (e.g., role="alert") if the UI framework doesn’t already handle it—optional.

Risk assessment

Low — Changes are limited to URL classification + conditional UI copy, with strict link validation and added tests to prevent accidental misclassification of non-matching artifacts.

Test plan

  • Run bun test (or the repo’s equivalent test runner) to ensure apps/web/lib/desktop-download.test.ts passes
  • Manually verify the download page for both DMG URLs:
    • .../Supercode-<ver>-universal.dmg → no beta notice
    • .../Supercode-<ver>-universal-development.dmg → beta notice + “beta” label + aria-describedby
  • Confirm that mismatched owner/version and non-HTTPS links are rejected (from the existing negative test cases)
  • (Manual doc check) Follow README steps for prerelease asset upload + web NEXT_PUBLIC_DESKTOP_DMG_URL configuration

Suggested PR description

What

  • Add support for downloading and clearly labeling unnotarized macOS development beta DMGs (Supercode-<ver>-universal-development.dmg).
  • Update the download page to show a warning banner and installation/launch guidance for unnotarized artifacts.
  • Extend link-resolution logic and tests to accurately detect beta artifacts and fail closed for unexpected filenames.

Why

  • Unnotarized builds require explicit user disclosure and macOS may block the first launch unless the user uses the “Open Anyway” flow.
  • Prevents accidental treatment of development artifacts as signed/notarized production releases.

How tested

  • Added/updated unit tests in apps/web/lib/desktop-download.test.ts to verify:
    • correct classification of -development DMGs as isUnnotarizedBeta: true
    • fail-closed behavior for absent/unsafe/mismatched/unexpected filenames.
  • (Manual) Verify UI rendering changes on the /download page for both production and unnotarized beta DMG URLs.

Automated review by Supercode · leave a 👍/👎 reaction to rate this review

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant