diff --git a/.github/workflows/commit.yaml b/.github/workflows/commit.yaml
index 4e8545b0a..9d88605c0 100644
--- a/.github/workflows/commit.yaml
+++ b/.github/workflows/commit.yaml
@@ -28,7 +28,7 @@ jobs:
- name: Update commit file
run: |
- echo "{ \"commit\": \"$COMMIT_HASH\" , \"version\": \"$CURRENT_VERSION\" }" > app/commit.json
+ 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 d930fbd1d..bcb0ad95a 100644
--- a/.github/workflows/update-stable.yml
+++ b/.github/workflows/update-stable.yml
@@ -161,12 +161,12 @@ jobs:
- name: Get the latest commit hash and version tag
run: |
echo "COMMIT_HASH=$(git rev-parse HEAD)" >> $GITHUB_ENV
- echo "CURRENT_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV
+ echo "NEW_VERSION=${{ steps.bump_version.outputs.new_version }}" >> $GITHUB_ENV
- name: Commit and Tag Release
run: |
git pull
- echo "{ \"commit\": \"$COMMIT_HASH\" , \"version\": \"$CURRENT_VERSION\" }" > app/commit.json
+ echo "{ \"commit\": \"$COMMIT_HASH\", \"version\": \"$NEW_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 }}"
diff --git a/app/commit.json b/app/commit.json
index 38d1888b8..6ea065473 100644
--- a/app/commit.json
+++ b/app/commit.json
@@ -1 +1 @@
-{ "commit": "c257129a61e258650b321c19323ddebaf03b0a54" , "version": "0.0.1" }
+{ "commit": "016488998ddd5d21157854246daa7b8224aa8989" }
diff --git a/app/components/settings/connections/ConnectionsTab.tsx b/app/components/settings/connections/ConnectionsTab.tsx
index fb0dadf7c..4b89022e7 100644
--- a/app/components/settings/connections/ConnectionsTab.tsx
+++ b/app/components/settings/connections/ConnectionsTab.tsx
@@ -6,7 +6,7 @@ import { logStore } from '~/lib/stores/logs';
interface GitHubUserResponse {
login: string;
id: number;
- [key: string]: any; // for other properties we don't explicitly need
+ [key: string]: any; // for other properties we don't explicitly need
}
export default function ConnectionsTab() {
@@ -24,6 +24,7 @@ export default function ConnectionsTab() {
const verifyGitHubCredentials = async () => {
setIsVerifying(true);
+
try {
const response = await fetch('https://api.github.com/user', {
headers: {
@@ -33,16 +34,20 @@ export default function ConnectionsTab() {
if (response.ok) {
const data = (await response.json()) as GitHubUserResponse;
+
if (data.login === githubUsername) {
setIsConnected(true);
return true;
}
}
+
setIsConnected(false);
+
return false;
} catch (error) {
console.error('Error verifying GitHub credentials:', error);
setIsConnected(false);
+
return false;
} finally {
setIsVerifying(false);
@@ -56,6 +61,7 @@ export default function ConnectionsTab() {
}
setIsVerifying(true);
+
const isValid = await verifyGitHubCredentials();
if (isValid) {
diff --git a/app/components/settings/features/FeaturesTab.tsx b/app/components/settings/features/FeaturesTab.tsx
index bad8850ef..0af3d401c 100644
--- a/app/components/settings/features/FeaturesTab.tsx
+++ b/app/components/settings/features/FeaturesTab.tsx
@@ -65,7 +65,9 @@ export default function FeaturesTab() {
className="flex-1 p-2 ml-auto rounded-lg border border-bolt-elements-borderColor bg-bolt-elements-prompt-background text-bolt-elements-textPrimary focus:outline-none focus:ring-2 focus:ring-bolt-elements-focus transition-all text-sm min-w-[100px]"
>
{PromptLibrary.getList().map((x) => (
-
+
))}
diff --git a/app/components/sidebar/HistoryItem.tsx b/app/components/sidebar/HistoryItem.tsx
index b228edbb7..cd5c8b16d 100644
--- a/app/components/sidebar/HistoryItem.tsx
+++ b/app/components/sidebar/HistoryItem.tsx
@@ -4,6 +4,7 @@ import * as Dialog from '@radix-ui/react-dialog';
import { type ChatHistoryItem } from '~/lib/persistence';
import WithTooltip from '~/components/ui/Tooltip';
import { useEditChatDescription } from '~/lib/hooks';
+import { forwardRef, type ForwardedRef } from 'react';
interface HistoryItemProps {
item: ChatHistoryItem;
@@ -103,25 +104,31 @@ export function HistoryItem({ item, onDelete, onDuplicate, exportChat }: History
);
}
-const ChatActionButton = ({
- toolTipContent,
- icon,
- className,
- onClick,
-}: {
- toolTipContent: string;
- icon: string;
- className?: string;
- onClick: (event: React.MouseEvent) => void;
- btnTitle?: string;
-}) => {
- return (
-
-
-
- );
-};
+const ChatActionButton = forwardRef(
+ (
+ {
+ toolTipContent,
+ icon,
+ className,
+ onClick,
+ }: {
+ toolTipContent: string;
+ icon: string;
+ className?: string;
+ onClick: (event: React.MouseEvent) => void;
+ btnTitle?: string;
+ },
+ ref: ForwardedRef,
+ ) => {
+ return (
+
+
+
+ );
+ },
+);
diff --git a/app/lib/runtime/action-runner.ts b/app/lib/runtime/action-runner.ts
index 882c91f88..0e1d218aa 100644
--- a/app/lib/runtime/action-runner.ts
+++ b/app/lib/runtime/action-runner.ts
@@ -202,8 +202,9 @@ export class ActionRunner {
}
const webcontainer = await this.#webcontainer;
+ const relativePath = nodePath.relative(webcontainer.workdir, action.filePath);
- let folder = nodePath.dirname(action.filePath);
+ let folder = nodePath.dirname(relativePath);
// remove trailing slashes
folder = folder.replace(/\/+$/g, '');
@@ -218,8 +219,8 @@ export class ActionRunner {
}
try {
- await webcontainer.fs.writeFile(action.filePath, action.content);
- logger.debug(`File written ${action.filePath}`);
+ await webcontainer.fs.writeFile(relativePath, action.content);
+ logger.debug(`File written ${relativePath}`);
} catch (error) {
logger.error('Failed to write file\n\n', error);
}