diff --git a/.env.example b/.env.example index 79fff46..64940a1 100644 --- a/.env.example +++ b/.env.example @@ -8,4 +8,10 @@ # VITE_FORCE_UPDATE_DEV_MODE=false # Update endpoint for testing (optional) -# VITE_UPDATE_ENDPOINT=http://localhost:8080/latest.json \ No newline at end of file +# VITE_UPDATE_ENDPOINT=http://localhost:8080/latest.json + +# Tauri updater signing configuration +# Path to your private key for signing updates +# TAURI_SIGNING_PRIVATE_KEY=/path/to/your/private.key +# Password for your private key (if applicable) +# TAURI_SIGNING_PRIVATE_KEY_PASSWORD='your_password_here' \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e143b8..ebab14a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,29 +2,54 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. -### 0.2.1 (2025-04-17) +## 0.3.1 (2025-04-20) +### Features + +* build(deps-dev): bump typescript from 5.6.3 to 5.8.3 by @dependabot in https://github.com/devbyray/circle-camera/pull/4 +* Fix/release action by @devbyray in https://github.com/devbyray/circle-camera/pull/21 +* Fix/release pipeline by @devbyray in https://github.com/devbyray/circle-camera/pull/22 +* Docs/v0.3.1 update by @devbyray in https://github.com/devbyray/circle-camera/pull/23 +* Feature/improve update and signing by @devbyray in https://github.com/devbyray/circle-camera/pull/24 + +**Full Changelog**: https://github.com/devbyray/circle-camera/compare/v0.3.0...v0.3.1 + +## 0.3.0 (2025-04-18) + +### Features + +* update download section with version 0.2.0 and new DMG link by @devbyray in https://github.com/devbyray/circle-camera/pull/9 + +* Docs/update v0.2.0 download by @devbyray in https://github.com/devbyray/circle-camera/pull/10 +* Devbyray/issue6 by @devbyray in https://github.com/devbyray/circle-camera/pull/14 +* Fix release action by @devbyray in https://github.com/devbyray/circle-camera/pull/16 +* Devbyray/issue15 by @devbyray in https://github.com/devbyray/circle-camera/pull/17 +* Fix/ts build error by @devbyray in https://github.com/devbyray/circle-camera/pull/18 +* Merge branch 'main' into fix/fix-build-pipeline by @devbyray in https://github.com/devbyray/circle-camera/pull/19 +* Fix/fix build pipeline by @devbyray in https://github.com/devbyray/circle-camera/pull/20 + +**Full Changelog**: https://github.com/devbyray/circle-camera/compare/0.2.0...v0.3.0 + +## 0.2.0-windows-pre (2025-04-14) ### Features -* [#6](https://github.com/devbyray/circle-camera/issues/6) add .env.example for environment variable configuration and update .gitignore to include .env file ([8df4497](https://github.com/devbyray/circle-camera/commit/8df44971c15c050f6125d3c5854ff60e3a94bb80)) -* [#6](https://github.com/devbyray/circle-camera/issues/6) add GitHub Actions workflow for automated build and release process ([f4f1fff](https://github.com/devbyray/circle-camera/commit/f4f1fff2e1215ff31ec079d0f397f23a6662a474)) -* [#6](https://github.com/devbyray/circle-camera/issues/6) add update overlay component and integrate update handling in WebcamContainer ([dd57510](https://github.com/devbyray/circle-camera/commit/dd57510c819fc39f2a47011ce29038bc5add3dcb)) -* [#6](https://github.com/devbyray/circle-camera/issues/6) enhance UpdateChecker component with simulated update version generation and improved TypeScript typing ([ea18f34](https://github.com/devbyray/circle-camera/commit/ea18f340551b9bc0252be39f541bdf6a697415a8)) -* [#6](https://github.com/devbyray/circle-camera/issues/6) implemented basic update meganism with Tauri ([5e32c82](https://github.com/devbyray/circle-camera/commit/5e32c82de3674d7002ba18921ede229e68d2b84f)) -* add window drag functionality and close command integration ([5b47e1e](https://github.com/devbyray/circle-camera/commit/5b47e1e5b1a28cd3371b41f68cb8cdd9484eb5e4)) -* enhance documentation and setup instructions for Windows and MacOS; add Product Hunt links and recommendations ([d934943](https://github.com/devbyray/circle-camera/commit/d934943acf5bff6251dfb79d8f1db53a00b4d20c)) -* enhance GitHub Actions workflow with Rust toolchain installation and caching for PNPM ([a301773](https://github.com/devbyray/circle-camera/commit/a301773cb6b6df010d41c904d75b4812ff553191)) -* enhance window drag functionality and update permissions in configuration ([ee8bec2](https://github.com/devbyray/circle-camera/commit/ee8bec2dd24e707ea8a01d98220497ce65326d89)) -* initialize Circle Camera Tauri application with camera access ([bf3e2cf](https://github.com/devbyray/circle-camera/commit/bf3e2cfcaed5bc9bf966fc01d3a74508ceb584a4)) -* initialize Circle Camera Tauri application with camera functionality ([f46adb5](https://github.com/devbyray/circle-camera/commit/f46adb57e8eafeb646af097ba2394ea24e696da5)) -* remove Windows build steps and assets from release workflow as Windows is not officially supported ([5123e92](https://github.com/devbyray/circle-camera/commit/5123e9247a032e440eda2878967ab6505fcfcc9c)) -* update .gitignore to include installers directory and enhance README with installation and development instructions ([6e2c996](https://github.com/devbyray/circle-camera/commit/6e2c9965651d965be47e4fbc36b348147ff8cf85)) -* update download section with version 0.2.0 and new DMG link ([#9](https://github.com/devbyray/circle-camera/issues/9)) ([433bd74](https://github.com/devbyray/circle-camera/commit/433bd74afa60cf26e53cf4e48462ccbaeb0e7c85)) -* update license to EUPL and add Vercel analytics integration ([#1](https://github.com/devbyray/circle-camera/issues/1)) ([ce24ab0](https://github.com/devbyray/circle-camera/commit/ce24ab055054c266d6e6cf8fe0e7b693537e1052)) - - -### Bug Fixes - -* [#6](https://github.com/devbyray/circle-camera/issues/6) dynamically determine development mode for update simulation ([5c9837a](https://github.com/devbyray/circle-camera/commit/5c9837ac4f057c74438f40717a14f8669ed3d54e)) -* correct image path in features documentation ([5ee911d](https://github.com/devbyray/circle-camera/commit/5ee911d46b75b4eb924da1eda8f7cd4990cf4f5f)) +* update download section with version 0.2.0 and new DMG link by @devbyray in https://github.com/devbyray/circle-camera/pull/9 + +* Docs/update v0.2.0 download by @devbyray in https://github.com/devbyray/circle-camera/pull/10 + +**Full Changelog**: https://github.com/devbyray/circle-camera/compare/0.2.0...0.2.0-windows-pre + +## 0.2.0 (2025-04-10) + +### Features + +* update license to EUPL and add Vercel analytics integration by @devbyray in https://github.com/devbyray/circle-camera/pull/1 + +* Feature/2 themingbranding options by @devbyray in https://github.com/devbyray/circle-camera/pull/8 + +**Full Changelog**: https://github.com/devbyray/circle-camera/compare/0.1.0...0.2.0 + +## 0.1.0 (2025-04-07) + +**Full Changelog**: https://github.com/devbyray/circle-camera/commits/0.1.0 diff --git a/scripts/update-changelog.sh b/scripts/update-changelog.sh new file mode 100755 index 0000000..f61a91c --- /dev/null +++ b/scripts/update-changelog.sh @@ -0,0 +1,127 @@ +#!/bin/bash + +# Script to update CHANGELOG.md with the latest GitHub releases +# Usage: ./scripts/update-changelog.sh + +set -e + +# Repository information +REPO_OWNER="devbyray" +REPO_NAME="circle-camera" + +# File paths +CHANGELOG_FILE="CHANGELOG.md" +TEMP_FILE="/tmp/changelog_temp.md" + +echo "Fetching latest releases from GitHub..." + +# Get all releases from GitHub in a more detailed format that's easier to parse +LATEST_RELEASES=$(gh release list --repo ${REPO_OWNER}/${REPO_NAME} --limit 10 --json tagName,publishedAt,name,isLatest) + +if [ $? -ne 0 ]; then + echo "Error: Failed to fetch releases from GitHub. Make sure you're authenticated with 'gh auth login'." + exit 1 +fi + +# Create the header of the CHANGELOG +cat > $TEMP_FILE << EOF +# Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + +EOF + +# Sort releases by publishedAt in descending order (newest first) +echo "$LATEST_RELEASES" | jq 'sort_by(.publishedAt) | reverse' > /tmp/sorted_releases.json + +# Process each release from the sorted JSON output +cat /tmp/sorted_releases.json | jq -c '.[]' | while read -r release; do + # Extract tag name and published date from the JSON + TAG=$(echo $release | jq -r '.tagName') + PUBLISHED_AT=$(echo $release | jq -r '.publishedAt') + + # Format the date to a more readable format (YYYY-MM-DD) + DATE=$(date -u -j -f "%Y-%m-%dT%H:%M:%SZ" "$PUBLISHED_AT" "+%Y-%m-%d" 2>/dev/null || echo "$PUBLISHED_AT") + + # Extract version number without the 'v' prefix for the CHANGELOG if it exists + VERSION=${TAG#v} + + if [ -n "$TAG" ]; then + echo "Processing release $VERSION (tag: $TAG) from $DATE" + + # Write version header to temp file + echo "## $VERSION ($DATE)" >> $TEMP_FILE + echo -e "\n" >> $TEMP_FILE + + # Get detailed release information including body content + RELEASE_BODY=$(gh release view "$TAG" --repo ${REPO_OWNER}/${REPO_NAME} --json body -q '.body') + + if [ $? -ne 0 ] || [ -z "$RELEASE_BODY" ] || [ "$RELEASE_BODY" == "null" ]; then + echo "No release notes found for $TAG" >&2 + continue + fi + + # Process features section + if [[ "$RELEASE_BODY" == *"### Features"* ]] || [[ "$RELEASE_BODY" == *"feat:"* ]] || [[ "$RELEASE_BODY" == *"Features"* ]]; then + echo "### Features" >> $TEMP_FILE + echo -e "\n" >> $TEMP_FILE + + # Try different patterns to extract feature content + if [[ "$RELEASE_BODY" == *"### Features"* ]]; then + # Extract content between ### Features and the next heading + FEATURES=$(echo "$RELEASE_BODY" | sed -n '/### Features/,/^###/p' | sed '1d;/^###/d') + echo "$FEATURES" >> $TEMP_FILE + elif [[ "$RELEASE_BODY" == *"feat:"* ]]; then + # Extract lines containing feat: + echo "$RELEASE_BODY" | grep -E '^\* feat:|^- feat:' | sed 's/^\* feat:/*/g' | sed 's/^- feat:/*/g' >> $TEMP_FILE + fi + + echo -e "\n" >> $TEMP_FILE + fi + + # Process bug fixes section + if [[ "$RELEASE_BODY" == *"### Bug Fixes"* ]] || [[ "$RELEASE_BODY" == *"fix:"* ]] || [[ "$RELEASE_BODY" == *"Bug Fixes"* ]]; then + echo "### Bug Fixes" >> $TEMP_FILE + echo -e "\n" >> $TEMP_FILE + + # Try different patterns to extract bugfix content + if [[ "$RELEASE_BODY" == *"### Bug Fixes"* ]]; then + # Extract content between ### Bug Fixes and the next heading + BUGFIXES=$(echo "$RELEASE_BODY" | sed -n '/### Bug Fixes/,/^###/p' | sed '1d;/^###/d') + echo "$BUGFIXES" >> $TEMP_FILE + elif [[ "$RELEASE_BODY" == *"fix:"* ]]; then + # Extract lines containing fix: + echo "$RELEASE_BODY" | grep -E '^\* fix:|^- fix:' | sed 's/^\* fix:/*/g' | sed 's/^- fix:/*/g' >> $TEMP_FILE + fi + + echo -e "\n" >> $TEMP_FILE + fi + + # Check for pull requests in the body that don't already include feature or bugfix markers + if [[ "$RELEASE_BODY" == *"by @"* ]]; then + # Extract pull request lines that aren't already captured in Features or Bug Fixes sections + PR_CONTENT=$(echo "$RELEASE_BODY" | grep "by @" | grep -v "Full Changelog" | grep -v "feat:" | grep -v "fix:") + if [ -n "$PR_CONTENT" ]; then + echo "$PR_CONTENT" >> $TEMP_FILE + echo -e "\n" >> $TEMP_FILE + fi + fi + + # Check for changelog URL + if [[ "$RELEASE_BODY" == *"Full Changelog"* ]]; then + # Extract the full changelog line + CHANGELOG_URL=$(echo "$RELEASE_BODY" | grep "Full Changelog") + echo "$CHANGELOG_URL" >> $TEMP_FILE + echo -e "\n" >> $TEMP_FILE + fi + fi +done + +# Remove duplicate empty lines +cat $TEMP_FILE | sed '/^$/N;/^\n$/D' > "${TEMP_FILE}.clean" +mv "${TEMP_FILE}.clean" $TEMP_FILE + +# Replace original CHANGELOG with new one +mv $TEMP_FILE $CHANGELOG_FILE + +echo "CHANGELOG.md has been updated with the latest releases." \ No newline at end of file