Skip to content

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Jan 19, 2026

Summary

Adds a new GitHub Actions workflow (desktop_cd_legacy.yaml) to support releasing legacy Hyprnote 0.0.x versions. This workflow:

  • Targets the legacy/0.0.x branch (created from desktop_v0.0.83 tag)
  • Uses the original CrabNebula app fastrepl/hyprnote (not hyprnote2)
  • Publishes to desktop.hyprnote.com update endpoint (not desktop2.hyprnote.com)
  • Computes versions based on desktop_v0.0.* tags only
  • Supports staging/nightly/stable channels like the main workflow

The next stable release from this workflow will be desktop_v0.0.84.

Review & Testing Checklist for Human

  • Verify version computation logic - The bash script for computing versions (lines 40-73) parses tags and increments patch versions. Test edge cases like: no existing nightly tags, multiple nightly tags, staging with 0 commits since last tag.
  • Confirm env.LEGACY_BRANCH works in checkout steps - GitHub Actions may not expand environment variables in all contexts. Consider hardcoding legacy/0.0.x in checkout ref: fields if this fails.
  • Verify S3 paths exist - The workflow references s3://hyprnote-cache2/v0/binaries/stt for the sidecar binary. Confirm this legacy binary still exists.
  • Test with staging channel first - Run the workflow with staging channel to verify the build works before attempting a real release.
  • Confirm CrabNebula app fastrepl/hyprnote is still active - The legacy app needs to be configured to accept uploads.

Notes

  • The legacy/0.0.x branch has been created and pushed to origin
  • Only macOS aarch64 builds are included (matching the original 0.0.83 workflow)
  • Missing some VITE_* environment variables that the new workflow has - may need to add if build fails

Link to Devin run: https://app.devin.ai/sessions/b29a100ce2974cf59a9cad23a4dcf09d
Requested by: @yujonglee


Open with Devin

Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@netlify
Copy link

netlify bot commented Jan 19, 2026

Deploy Preview for hyprnote ready!

Name Link
🔨 Latest commit 7e0f734
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/696e22250ea5c30007ce6ae5
😎 Deploy Preview https://deploy-preview-3216--hyprnote.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Jan 19, 2026

Deploy Preview for howto-fix-macos-audio-selection canceled.

Name Link
🔨 Latest commit 7e0f734
🔍 Latest deploy log https://app.netlify.com/projects/howto-fix-macos-audio-selection/deploys/696e2224078a1b0008dd67ad

@netlify
Copy link

netlify bot commented Jan 19, 2026

Deploy Preview for hyprnote-storybook canceled.

Name Link
🔨 Latest commit 7e0f734
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/696e2224701e8f0008715694

Copy link
Contributor Author

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 4 additional flags.

Open in Devin Review

Comment on lines 42 to 50
# Get the latest 0.0.x tag
LATEST_TAG=$(git tag -l 'desktop_v0.0.*' --sort=-v:refname | head -n1)
echo "Latest legacy tag: $LATEST_TAG"

# Extract version number and increment patch
CURRENT_VERSION=$(echo "$LATEST_TAG" | sed 's/desktop_v//')
MAJOR=$(echo "$CURRENT_VERSION" | cut -d. -f1)
MINOR=$(echo "$CURRENT_VERSION" | cut -d. -f2)
PATCH=$(echo "$CURRENT_VERSION" | cut -d. -f3)
Copy link
Contributor

Choose a reason for hiding this comment

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

Missing validation for empty LATEST_TAG will cause workflow failure. If no tags matching desktop_v0.0.* exist, LATEST_TAG will be empty, causing the subsequent sed and cut commands to fail or produce invalid values for MAJOR, MINOR, and PATCH.

Fix by adding validation:

LATEST_TAG=$(git tag -l 'desktop_v0.0.*' --sort=-v:refname | head -n1)
if [[ -z "$LATEST_TAG" ]]; then
  echo "Error: No desktop_v0.0.* tags found" >&2
  exit 1
fi
echo "Latest legacy tag: $LATEST_TAG"
Suggested change
# Get the latest 0.0.x tag
LATEST_TAG=$(git tag -l 'desktop_v0.0.*' --sort=-v:refname | head -n1)
echo "Latest legacy tag: $LATEST_TAG"
# Extract version number and increment patch
CURRENT_VERSION=$(echo "$LATEST_TAG" | sed 's/desktop_v//')
MAJOR=$(echo "$CURRENT_VERSION" | cut -d. -f1)
MINOR=$(echo "$CURRENT_VERSION" | cut -d. -f2)
PATCH=$(echo "$CURRENT_VERSION" | cut -d. -f3)
# Get the latest 0.0.x tag
LATEST_TAG=$(git tag -l 'desktop_v0.0.*' --sort=-v:refname | head -n1)
if [[ -z "$LATEST_TAG" ]]; then
echo "Error: No desktop_v0.0.* tags found" >&2
exit 1
fi
echo "Latest legacy tag: $LATEST_TAG"
# Extract version number and increment patch
CURRENT_VERSION=$(echo "$LATEST_TAG" | sed 's/desktop_v//')
MAJOR=$(echo "$CURRENT_VERSION" | cut -d. -f1)
MINOR=$(echo "$CURRENT_VERSION" | cut -d. -f2)
PATCH=$(echo "$CURRENT_VERSION" | cut -d. -f3)

Spotted by Graphite Agent

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
Copy link
Contributor Author

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 1 new potential issue.

View issue and 5 additional flags in Devin Review.

Open in Devin Review

Comment on lines +43 to +54
LATEST_TAG=$(git tag -l 'desktop_v0.0.*' --sort=-v:refname | head -n1)
if [[ -z "$LATEST_TAG" ]]; then
echo "Error: No desktop_v0.0.* tags found" >&2
exit 1
fi
echo "Latest legacy tag: $LATEST_TAG"

# Extract version number and increment patch
CURRENT_VERSION=$(echo "$LATEST_TAG" | sed 's/desktop_v//')
MAJOR=$(echo "$CURRENT_VERSION" | cut -d. -f1)
MINOR=$(echo "$CURRENT_VERSION" | cut -d. -f2)
PATCH=$(echo "$CURRENT_VERSION" | cut -d. -f3)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

🔴 Version computation incorrectly increments patch when nightly tags exist

The version computation logic on line 43 uses git tag -l 'desktop_v0.0.*' which matches BOTH stable tags (e.g., desktop_v0.0.83) and nightly tags (e.g., desktop_v0.0.84-nightly.1). After a nightly release is created, the nightly tag will sort higher than the stable tag due to version sorting (0.0.84-nightly.1 > 0.0.83).

When this happens:

  • LATEST_TAG becomes desktop_v0.0.84-nightly.1
  • PATCH is extracted as 84-nightly (line 54: cut -d. -f3)
  • Bash arithmetic strips the suffix, making PATCH=84
  • For a subsequent nightly: NEW_PATCH=85, producing version 0.0.85-nightly.1 (wrong - should be 0.0.84-nightly.2)
  • For a stable release: NEW_PATCH=85, producing version 0.0.85 (wrong - should be 0.0.84)

This causes version numbers to skip unexpectedly after any nightly release, breaking the sequential versioning scheme.

Recommendation: Filter to only stable tags when getting the latest version base. Change line 43 to: LATEST_TAG=$(git tag -l 'desktop_v0.0.*' --sort=-v:refname | grep -v '\-nightly' | head -n1) to exclude nightly tags from consideration.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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.

2 participants