diff --git a/.github/workflows/commit.yaml b/.github/workflows/commit.yaml index d5db06b..d6b3193 100644 --- a/.github/workflows/commit.yaml +++ b/.github/workflows/commit.yaml @@ -20,9 +20,17 @@ jobs: - name: Get the latest commit hash run: echo "COMMIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Update commit file run: | - echo "{ \"commit\": \"$COMMIT_HASH\" }" > app/commit.json + echo CURRENT_VERSION=$(node -p "require('./package.json').version") >> $GITHUB_ENV + echo "{ \"commit\": \"$COMMIT_HASH\" , \"version\": \"$CURRENT_VERSION\" }" > app/commit.json - name: Commit and push the update run: | diff --git a/.github/workflows/update-stable.yml b/.github/workflows/update-stable.yml index 2956f64..e6fc2e5 100644 --- a/.github/workflows/update-stable.yml +++ b/.github/workflows/update-stable.yml @@ -9,30 +9,7 @@ permissions: contents: write jobs: - update-commit: - if: contains(github.event.head_commit.message, '#release') - runs-on: ubuntu-latest - - steps: - - name: Checkout the code - uses: actions/checkout@v3 - - - name: Get the latest commit hash - run: echo "COMMIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV - - - name: Update commit file - run: | - echo "{ \"commit\": \"$COMMIT_HASH\" }" > app/commit.json - - - name: Commit and push the update - run: | - git config --global user.name "github-actions[bot]" - git config --global user.email "github-actions[bot]@users.noreply.github.com" - git add app/commit.json - git commit -m "chore: update commit hash to $COMMIT_HASH" - git push prepare-release: - needs: update-commit if: contains(github.event.head_commit.message, '#release') runs-on: ubuntu-latest @@ -183,8 +160,11 @@ jobs: - name: Commit and Tag Release run: | + echo "COMMIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV + echo "CURRENT_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV git pull - git add package.json pnpm-lock.yaml changelog.md + echo "{ \"commit\": \"$COMMIT_HASH\" , \"version\": \"$CURRENT_VERSION\" }" > app/commit.json + git add package.json pnpm-lock.yaml changelog.md app/commit.json git commit -m "chore: release version ${{ steps.bump_version.outputs.new_version }}" git tag "v${{ steps.bump_version.outputs.new_version }}" git push diff --git a/app/commit.json b/app/commit.json index ab67c57..4e738f2 100644 --- a/app/commit.json +++ b/app/commit.json @@ -1 +1,2 @@ -{ "commit": "070e911be17e1e1f3994220c3ed89b0060c67bd2" } +{ "commit": "77073a5e7f759ae8e5752628131d0c56df6b5c34" , "version": "0.0.1" } + diff --git a/app/components/settings/debug/DebugTab.tsx b/app/components/settings/debug/DebugTab.tsx index a7021f7..cd40806 100644 --- a/app/components/settings/debug/DebugTab.tsx +++ b/app/components/settings/debug/DebugTab.tsx @@ -34,10 +34,14 @@ interface IProviderConfig { interface CommitData { commit: string; + version?: string; } +const connitJson: CommitData = commit; + const LOCAL_PROVIDERS = ['Ollama', 'LMStudio', 'OpenAILike']; -const versionHash = commit.commit; +const versionHash = connitJson.commit; +const versionTag = connitJson.version; const GITHUB_URLS = { original: 'https://api.github.com/repos/stackblitz-labs/bolt.diy/commits/main', fork: 'https://api.github.com/repos/Stijnus/bolt.new-any-llm/commits/main', @@ -207,7 +211,7 @@ const checkProviderStatus = async (url: string | null, providerName: string): Pr }; export default function DebugTab() { - const { providers, useLatestBranch } = useSettings(); + const { providers, latestBranch } = useSettings(); const [activeProviders, setActiveProviders] = useState([]); const [updateMessage, setUpdateMessage] = useState(''); const [systemInfo] = useState(getSystemInfo()); @@ -267,7 +271,7 @@ export default function DebugTab() { setIsCheckingUpdate(true); setUpdateMessage('Checking for updates...'); - const branchToCheck = useLatestBranch ? 'main' : 'stable'; + const branchToCheck = latestBranch ? 'main' : 'stable'; console.log(`[Debug] Checking for updates against ${branchToCheck} branch`); const localCommitResponse = await fetch(GITHUB_URLS.commitJson(branchToCheck)); @@ -295,7 +299,7 @@ export default function DebugTab() { } finally { setIsCheckingUpdate(false); } - }, [isCheckingUpdate, useLatestBranch]); + }, [isCheckingUpdate, latestBranch]); const handleCopyToClipboard = useCallback(() => { const debugInfo = { @@ -312,7 +316,7 @@ export default function DebugTab() { })), Version: { hash: versionHash.slice(0, 7), - branch: useLatestBranch ? 'main' : 'stable', + branch: latestBranch ? 'main' : 'stable', }, Timestamp: new Date().toISOString(), }; @@ -320,7 +324,7 @@ export default function DebugTab() { navigator.clipboard.writeText(JSON.stringify(debugInfo, null, 2)).then(() => { toast.success('Debug information copied to clipboard!'); }); - }, [activeProviders, systemInfo, useLatestBranch]); + }, [activeProviders, systemInfo, latestBranch]); return (
@@ -406,7 +410,7 @@ export default function DebugTab() {

{versionHash.slice(0, 7)} - ({new Date().toLocaleDateString()}) + (v{versionTag || '0.0.1'}) - {latestBranch ? 'nightly' : 'stable'}

diff --git a/app/components/settings/features/FeaturesTab.tsx b/app/components/settings/features/FeaturesTab.tsx index d16d685..c5e1b3a 100644 --- a/app/components/settings/features/FeaturesTab.tsx +++ b/app/components/settings/features/FeaturesTab.tsx @@ -3,15 +3,8 @@ import { Switch } from '~/components/ui/Switch'; import { useSettings } from '~/lib/hooks/useSettings'; export default function FeaturesTab() { - const { - debug, - enableDebugMode, - isLocalModel, - enableLocalModels, - enableEventLogs, - useLatestBranch, - enableLatestBranch, - } = useSettings(); + + const { debug, enableDebugMode, isLocalModel, enableLocalModels, enableEventLogs, latestBranch, enableLatestBranch } = useSettings(); const handleToggle = (enabled: boolean) => { enableDebugMode(enabled); @@ -34,7 +27,7 @@ export default function FeaturesTab() { Check for updates against the main branch instead of stable

- + diff --git a/app/lib/hooks/useSettings.tsx b/app/lib/hooks/useSettings.tsx index c8b1968..d093d5f 100644 --- a/app/lib/hooks/useSettings.tsx +++ b/app/lib/hooks/useSettings.tsx @@ -5,7 +5,7 @@ import { isLocalModelsEnabled, LOCAL_PROVIDERS, providersStore, - latestBranch, + latestBranchStore, } from '~/lib/stores/settings'; import { useCallback, useEffect, useState } from 'react'; import Cookies from 'js-cookie'; @@ -15,21 +15,24 @@ import commit from '~/commit.json'; interface CommitData { commit: string; + version?: string; } +const commitJson: CommitData = commit; + export function useSettings() { const providers = useStore(providersStore); const debug = useStore(isDebugMode); const eventLogs = useStore(isEventLogsEnabled); const isLocalModel = useStore(isLocalModelsEnabled); - const useLatest = useStore(latestBranch); + const latestBranch = useStore(latestBranchStore); const [activeProviders, setActiveProviders] = useState([]); // Function to check if we're on stable version const checkIsStableVersion = async () => { try { const stableResponse = await fetch( - 'https://raw.githubusercontent.com/stackblitz-labs/bolt.diy/stable/app/commit.json', + `https://raw.githubusercontent.com/stackblitz-labs/bolt.diy/refs/tags/v${commitJson.version}/app/commit.json`, ); if (!stableResponse.ok) { @@ -90,17 +93,22 @@ export function useSettings() { } // load latest branch setting from cookies or determine based on version - const savedLatestBranch = Cookies.get('useLatestBranch'); + const savedLatestBranch = Cookies.get('latestBranch'); + let checkCommit = Cookies.get('commitHash'); - if (savedLatestBranch === undefined) { + if (checkCommit === undefined) { + checkCommit = commit.commit; + } + if (savedLatestBranch === undefined || checkCommit !== commit.commit) { // If setting hasn't been set by user, check version checkIsStableVersion().then((isStable) => { const shouldUseLatest = !isStable; - latestBranch.set(shouldUseLatest); - Cookies.set('useLatestBranch', String(shouldUseLatest)); + latestBranchStore.set(shouldUseLatest); + Cookies.set('latestBranch', String(shouldUseLatest)); + Cookies.set('commitHash', String(commit.commit)); }); } else { - latestBranch.set(savedLatestBranch === 'true'); + latestBranchStore.set(savedLatestBranch === 'true'); } }, []); @@ -154,9 +162,9 @@ export function useSettings() { }, []); const enableLatestBranch = useCallback((enabled: boolean) => { - latestBranch.set(enabled); + latestBranchStore.set(enabled); logStore.logSystem(`Main branch updates ${enabled ? 'enabled' : 'disabled'}`); - Cookies.set('useLatestBranch', String(enabled)); + Cookies.set('latestBranch', String(enabled)); }, []); return { @@ -169,7 +177,7 @@ export function useSettings() { enableEventLogs, isLocalModel, enableLocalModels, - useLatestBranch: useLatest, + latestBranch, enableLatestBranch, }; } diff --git a/app/lib/stores/settings.ts b/app/lib/stores/settings.ts index 2e410a6..b2f4133 100644 --- a/app/lib/stores/settings.ts +++ b/app/lib/stores/settings.ts @@ -47,4 +47,4 @@ export const isEventLogsEnabled = atom(false); export const isLocalModelsEnabled = atom(true); -export const latestBranch = atom(false); +export const latestBranchStore = atom(false);