提交 99d0221f authored 作者: Vittorio's avatar Vittorio

修改产品名称

上级 d74517b0
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<title>Dyad</title> <title>bit-PM</title>
<link href="/src/styles/globals.css" rel="stylesheet" /> <link href="/src/styles/globals.css" rel="stylesheet" />
</head> </head>
<body> <body>
......
...@@ -7,7 +7,7 @@ export const MadeWithDyad = () => { ...@@ -7,7 +7,7 @@ export const MadeWithDyad = () => {
rel="noopener noreferrer" rel="noopener noreferrer"
className="text-sm text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200" className="text-sm text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"
> >
Made with Dyad Made with bit-PM
</a> </a>
</div> </div>
); );
......
...@@ -101,7 +101,7 @@ export function AppUpgrades({ appId }: { appId: number | null }) { ...@@ -101,7 +101,7 @@ export function AppUpgrades({ appId }: { appId: number | null }) {
data-testid="no-app-upgrades-needed" data-testid="no-app-upgrades-needed"
className="p-4 bg-green-50 border border-green-200 dark:bg-green-900/20 dark:border-green-800/50 rounded-lg text-sm text-green-800 dark:text-green-300" className="p-4 bg-green-50 border border-green-200 dark:bg-green-900/20 dark:border-green-800/50 rounded-lg text-sm text-green-800 dark:text-green-300"
> >
App is up-to-date and has all Dyad capabilities enabled App is up-to-date and has all bit-PM capabilities enabled
</div> </div>
) : ( ) : (
<div className="space-y-4"> <div className="space-y-4">
......
...@@ -23,9 +23,9 @@ export function AutoUpdateSwitch() { ...@@ -23,9 +23,9 @@ export function AutoUpdateSwitch() {
updateSettings({ enableAutoUpdate: checked }); updateSettings({ enableAutoUpdate: checked });
toast("Auto-update settings changed", { toast("Auto-update settings changed", {
description: description:
"You will need to restart Dyad for your settings to take effect.", "You will need to restart bit-PM for your settings to take effect.",
action: { action: {
label: "Restart Dyad", label: "Restart bit-PM",
onClick: () => { onClick: () => {
ipc.system.restartDyad(); ipc.system.restartDyad();
}, },
......
...@@ -145,11 +145,11 @@ export function ContextFilesPicker() { ...@@ -145,11 +145,11 @@ export function ContextFilesPicker() {
<TooltipContent className="max-w-[300px]"> <TooltipContent className="max-w-[300px]">
{isSmartContextEnabled ? ( {isSmartContextEnabled ? (
<p> <p>
With Smart Context, Dyad uses the most relevant files as With Smart Context, bit-PM uses the most relevant files as
context. context.
</p> </p>
) : ( ) : (
<p>By default, Dyad uses your whole codebase.</p> <p>By default, bit-PM uses your whole codebase.</p>
)} )}
</TooltipContent> </TooltipContent>
</Tooltip> </Tooltip>
...@@ -218,8 +218,8 @@ export function ContextFilesPicker() { ...@@ -218,8 +218,8 @@ export function ContextFilesPicker() {
<div className="rounded-md border border-dashed p-4 text-center"> <div className="rounded-md border border-dashed p-4 text-center">
<p className="text-sm text-muted-foreground"> <p className="text-sm text-muted-foreground">
{isSmartContextEnabled {isSmartContextEnabled
? "Dyad will use Smart Context to automatically find the most relevant files to use as context." ? "bit-PM will use Smart Context to automatically find the most relevant files to use as context."
: "Dyad will use the entire codebase as context."} : "bit-PM will use the entire codebase as context."}
</p> </p>
</div> </div>
)} )}
......
...@@ -45,9 +45,9 @@ export function CustomAppsFolderSelector() { ...@@ -45,9 +45,9 @@ export function CustomAppsFolderSelector() {
await ipc.system.setCustomAppsFolder(null); await ipc.system.setCustomAppsFolder(null);
// Update UI to show default directory // Update UI to show default directory
await fetchCustomAppsFolder(); await fetchCustomAppsFolder();
showSuccess("Dyad apps folder reset successfully"); showSuccess("bit-PM apps folder reset successfully");
} catch (error: any) { } catch (error: any) {
showError(`Failed to reset Dyad Apps folder path: ${error.message}`); showError(`Failed to reset bit-PM apps folder path: ${error.message}`);
} }
}; };
...@@ -59,7 +59,7 @@ export function CustomAppsFolderSelector() { ...@@ -59,7 +59,7 @@ export function CustomAppsFolderSelector() {
setIsPathAvailable(isPathAvailable); setIsPathAvailable(isPathAvailable);
setIsPathDefault(isPathDefault); setIsPathDefault(isPathDefault);
} catch (error: any) { } catch (error: any) {
showError(`Failed to fetch Dyad apps folder path: ${error.message}`); showError(`Failed to fetch bit-PM apps folder path: ${error.message}`);
} }
}; };
...@@ -114,7 +114,7 @@ export function CustomAppsFolderSelector() { ...@@ -114,7 +114,7 @@ export function CustomAppsFolderSelector() {
<div className="text-sm text-gray-500 dark:text-gray-400"> <div className="text-sm text-gray-500 dark:text-gray-400">
<p> <p>
{isPathAvailable {isPathAvailable
? "This is the top-level folder that Dyad will store new applications in." ? "This is the top-level folder that bit-PM will store new applications in."
: "Your apps folder is inaccessible. Make sure that the folder exists and has write permissions, or change it."} : "Your apps folder is inaccessible. Make sure that the folder exists and has write permissions, or change it."}
</p> </p>
</div> </div>
......
...@@ -25,7 +25,7 @@ export function DyadProSuccessDialog({ ...@@ -25,7 +25,7 @@ export function DyadProSuccessDialog({
<div className="flex h-10 w-10 items-center justify-center rounded-full bg-gradient-to-br from-indigo-500 to-purple-600"> <div className="flex h-10 w-10 items-center justify-center rounded-full bg-gradient-to-br from-indigo-500 to-purple-600">
<Sparkles className="h-5 w-5 text-white" /> <Sparkles className="h-5 w-5 text-white" />
</div> </div>
<span>Welcome to Dyad Pro!</span> <span>Welcome to bit-PM Pro!</span>
</DialogTitle> </DialogTitle>
</DialogHeader> </DialogHeader>
...@@ -55,7 +55,7 @@ export function DyadProSuccessDialog({ ...@@ -55,7 +55,7 @@ export function DyadProSuccessDialog({
<div> <div>
<p className="font-medium">Agent mode</p> <p className="font-medium">Agent mode</p>
<p className="text-sm text-muted-foreground"> <p className="text-sm text-muted-foreground">
Dyad can work on bigger tasks and debug issues bit-PM can work on bigger tasks and debug issues
</p> </p>
</div> </div>
</div> </div>
......
...@@ -54,7 +54,7 @@ export function DyadProTrialDialog({ ...@@ -54,7 +54,7 @@ export function DyadProTrialDialog({
{/* Title */} {/* Title */}
<div className="text-center"> <div className="text-center">
<h2 className="text-xl font-semibold tracking-tight text-foreground"> <h2 className="text-xl font-semibold tracking-tight text-foreground">
Unlock Dyad Pro Unlock bit-PM Pro
</h2> </h2>
<p className="mt-1 text-sm text-muted-foreground"> <p className="mt-1 text-sm text-muted-foreground">
Start your free 3-day trial today Start your free 3-day trial today
......
...@@ -40,7 +40,7 @@ export function ErrorBoundary({ error }: ErrorComponentProps) { ...@@ -40,7 +40,7 @@ export function ErrorBoundary({ error }: ErrorComponentProps) {
${error?.stack ? `\n\`\`\`\n${error.stack.slice(0, 1000)}\n\`\`\`` : ""} ${error?.stack ? `\n\`\`\`\n${error.stack.slice(0, 1000)}\n\`\`\`` : ""}
## System Information ## System Information
- Dyad Version: ${debugInfo.dyadVersion} - bit-PM Version: ${debugInfo.dyadVersion}
- Platform: ${debugInfo.platform} - Platform: ${debugInfo.platform}
- Architecture: ${debugInfo.architecture} - Architecture: ${debugInfo.architecture}
- Node Version: ${debugInfo.nodeVersion || "Not available"} - Node Version: ${debugInfo.nodeVersion || "Not available"}
...@@ -57,7 +57,7 @@ ${debugInfo.logs.slice(-3_500) || "No logs available"} ...@@ -57,7 +57,7 @@ ${debugInfo.logs.slice(-3_500) || "No logs available"}
// Create the GitHub issue URL with the pre-filled body // Create the GitHub issue URL with the pre-filled body
const encodedBody = encodeURIComponent(issueBody); const encodedBody = encodeURIComponent(issueBody);
const encodedTitle = encodeURIComponent( const encodedTitle = encodeURIComponent(
"[bug] Error in Dyad application", "[bug] Error in bit-PM application",
); );
const githubIssueUrl = `https://github.com/dyad-sh/dyad/issues/new?title=${encodedTitle}&labels=bug,filed-from-app,client-error&body=${encodedBody}`; const githubIssueUrl = `https://github.com/dyad-sh/dyad/issues/new?title=${encodedTitle}&labels=bug,filed-from-app,client-error&body=${encodedBody}`;
...@@ -101,7 +101,7 @@ ${debugInfo.logs.slice(-3_500) || "No logs available"} ...@@ -101,7 +101,7 @@ ${debugInfo.logs.slice(-3_500) || "No logs available"}
<div className="mt-4 p-3 bg-blue-50 dark:bg-blue-950 border border-blue-200 dark:border-blue-800 rounded-md flex items-center gap-2"> <div className="mt-4 p-3 bg-blue-50 dark:bg-blue-950 border border-blue-200 dark:border-blue-800 rounded-md flex items-center gap-2">
<LightbulbIcon className="h-4 w-4 text-blue-700 dark:text-blue-400 flex-shrink-0" /> <LightbulbIcon className="h-4 w-4 text-blue-700 dark:text-blue-400 flex-shrink-0" />
<p className="text-sm text-blue-700 dark:text-blue-400"> <p className="text-sm text-blue-700 dark:text-blue-400">
<strong>Tip:</strong> Try closing and re-opening Dyad as a temporary <strong>Tip:</strong> Try closing and re-opening bit-PM as a temporary
workaround. workaround.
</p> </p>
</div> </div>
......
...@@ -163,7 +163,7 @@ export function HelpBotDialog({ isOpen, onClose }: HelpBotDialogProps) { ...@@ -163,7 +163,7 @@ export function HelpBotDialog({ isOpen, onClose }: HelpBotDialogProps) {
<Dialog open={isOpen} onOpenChange={onClose}> <Dialog open={isOpen} onOpenChange={onClose}>
<DialogContent className="max-w-2xl"> <DialogContent className="max-w-2xl">
<DialogHeader> <DialogHeader>
<DialogTitle>Dyad Help Bot</DialogTitle> <DialogTitle>bit-PM Help Bot</DialogTitle>
</DialogHeader> </DialogHeader>
<div className="flex flex-col gap-3 h-[480px]"> <div className="flex flex-col gap-3 h-[480px]">
{error && ( {error && (
...@@ -186,7 +186,7 @@ export function HelpBotDialog({ isOpen, onClose }: HelpBotDialogProps) { ...@@ -186,7 +186,7 @@ export function HelpBotDialog({ isOpen, onClose }: HelpBotDialogProps) {
{messages.length === 0 ? ( {messages.length === 0 ? (
<div className="space-y-3"> <div className="space-y-3">
<div className="text-sm text-muted-foreground"> <div className="text-sm text-muted-foreground">
Ask a question about using Dyad. Ask a question about using bit-PM.
</div> </div>
<div className="text-xs text-muted-foreground/70 bg-muted/50 rounded-md p-3"> <div className="text-xs text-muted-foreground/70 bg-muted/50 rounded-md p-3">
This conversation may be logged and used to improve the This conversation may be logged and used to improve the
......
...@@ -442,7 +442,7 @@ ${formatLogsSection(debugInfo)} ...@@ -442,7 +442,7 @@ ${formatLogsSection(debugInfo)}
skipInitial={!hasNavigated.current} skipInitial={!hasNavigated.current}
> >
<DialogHeader> <DialogHeader>
<DialogTitle>Need help with Dyad?</DialogTitle> <DialogTitle>Need help with bit-PM?</DialogTitle>
</DialogHeader> </DialogHeader>
<DialogDescription> <DialogDescription>
If you need help or want to report an issue, here are some options: If you need help or want to report an issue, here are some options:
...@@ -455,7 +455,7 @@ ${formatLogsSection(debugInfo)} ...@@ -455,7 +455,7 @@ ${formatLogsSection(debugInfo)}
onClick={() => setIsHelpBotOpen(true)} onClick={() => setIsHelpBotOpen(true)}
className="w-full py-6 border-primary/50 shadow-sm shadow-primary/10 transition-all hover:shadow-md hover:shadow-primary/15" className="w-full py-6 border-primary/50 shadow-sm shadow-primary/10 transition-all hover:shadow-md hover:shadow-primary/15"
> >
<SparklesIcon className="mr-2 h-5 w-5" /> Chat with Dyad help bot <SparklesIcon className="mr-2 h-5 w-5" /> Chat with bit-PM help bot
(Pro) (Pro)
</Button> </Button>
) : ( ) : (
...@@ -486,7 +486,7 @@ ${formatLogsSection(debugInfo)} ...@@ -486,7 +486,7 @@ ${formatLogsSection(debugInfo)}
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<MessageSquareIcon className="h-4 w-4 text-primary" /> <MessageSquareIcon className="h-4 w-4 text-primary" />
<span className="text-sm font-semibold"> <span className="text-sm font-semibold">
AI / Dyad Pro issues AI / bit-PM Pro issues
</span> </span>
</div> </div>
<p className="text-sm text-muted-foreground"> <p className="text-sm text-muted-foreground">
...@@ -517,7 +517,7 @@ ${formatLogsSection(debugInfo)} ...@@ -517,7 +517,7 @@ ${formatLogsSection(debugInfo)}
<span className="text-sm font-semibold">Non-AI issues</span> <span className="text-sm font-semibold">Non-AI issues</span>
</div> </div>
<p className="text-sm text-muted-foreground"> <p className="text-sm text-muted-foreground">
Includes error logs to troubleshoot non-AI issues with Dyad (UI Includes error logs to troubleshoot non-AI issues with bit-PM (UI
bugs, crashes, setup problems, etc.). bugs, crashes, setup problems, etc.).
</p> </p>
<Button <Button
...@@ -584,7 +584,7 @@ ${formatLogsSection(debugInfo)} ...@@ -584,7 +584,7 @@ ${formatLogsSection(debugInfo)}
</ReviewDetailsSection> </ReviewDetailsSection>
<ReviewDetailsSection title="System Information" mono={false}> <ReviewDetailsSection title="System Information" mono={false}>
<p>Dyad Version: {debugBundle.system.dyadVersion}</p> <p>bit-PM Version: {debugBundle.system.dyadVersion}</p>
<p>Platform: {debugBundle.system.platform}</p> <p>Platform: {debugBundle.system.platform}</p>
<p>Architecture: {debugBundle.system.architecture}</p> <p>Architecture: {debugBundle.system.architecture}</p>
<p> <p>
......
...@@ -24,7 +24,7 @@ export function MacNotificationGuideDialog({ ...@@ -24,7 +24,7 @@ export function MacNotificationGuideDialog({
<DialogTitle>Allow Notifications on macOS</DialogTitle> <DialogTitle>Allow Notifications on macOS</DialogTitle>
<DialogDescription> <DialogDescription>
If you didn't receive a test notification, you may need to allow If you didn't receive a test notification, you may need to allow
notifications for Dyad in macOS. Here are two ways to do it: notifications for bit-PM in macOS. Here are two ways to do it:
</DialogDescription> </DialogDescription>
</DialogHeader> </DialogHeader>
...@@ -45,7 +45,7 @@ export function MacNotificationGuideDialog({ ...@@ -45,7 +45,7 @@ export function MacNotificationGuideDialog({
Open{" "} Open{" "}
<strong> <strong>
System Settings → Notifications → Application Notifications → System Settings → Notifications → Application Notifications →
Dyad bit-PM
</strong>{" "} </strong>{" "}
and enable <strong>"Allow Notifications"</strong>. and enable <strong>"Allow Notifications"</strong>.
</p> </p>
......
...@@ -190,7 +190,7 @@ export function ModelPicker() { ...@@ -190,7 +190,7 @@ export function ModelPicker() {
<> <>
<div className="px-2 py-3 bg-gradient-to-r from-indigo-50 to-sky-50 dark:from-indigo-950/50 dark:to-sky-950/50"> <div className="px-2 py-3 bg-gradient-to-r from-indigo-50 to-sky-50 dark:from-indigo-950/50 dark:to-sky-950/50">
<p className="text-sm text-indigo-700 dark:text-indigo-300 mb-2"> <p className="text-sm text-indigo-700 dark:text-indigo-300 mb-2">
Upgrade from Dyad Pro trial to unlock more models. Upgrade from bit-PM Pro trial to unlock more models.
</p> </p>
<Button <Button
variant="outline" variant="outline"
...@@ -203,7 +203,7 @@ export function ModelPicker() { ...@@ -203,7 +203,7 @@ export function ModelPicker() {
setOpen(false); setOpen(false);
}} }}
> >
Upgrade to Dyad Pro Upgrade to bit-PM Pro
</Button> </Button>
</div> </div>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
...@@ -302,7 +302,7 @@ export function ModelPicker() { ...@@ -302,7 +302,7 @@ export function ModelPicker() {
const provider = providers?.find((p) => p.id === providerId); const provider = providers?.find((p) => p.id === providerId);
const providerDisplayName = const providerDisplayName =
provider?.id === "auto" provider?.id === "auto"
? "Dyad Turbo" ? "bit-PM Turbo"
: (provider?.name ?? providerId); : (provider?.name ?? providerId);
return ( return (
<DropdownMenuSub key={providerId}> <DropdownMenuSub key={providerId}>
......
...@@ -103,7 +103,7 @@ export function AiAccessBanner() { ...@@ -103,7 +103,7 @@ export function AiAccessBanner() {
</div> </div>
<button <button
type="button" type="button"
aria-label="Subscribe to Dyad Pro" aria-label="Subscribe to bit-PM Pro"
className="inline-flex items-center rounded-md bg-white/90 text-indigo-800 hover:bg-white shadow px-3 py-1.5 text-xs sm:text-sm font-semibold focus:outline-none focus:ring-2 focus:ring-white/50" className="inline-flex items-center rounded-md bg-white/90 text-indigo-800 hover:bg-white shadow px-3 py-1.5 text-xs sm:text-sm font-semibold focus:outline-none focus:ring-2 focus:ring-white/50"
> >
{t("proBanner.getDyadPro")} {t("proBanner.getDyadPro")}
...@@ -175,7 +175,7 @@ export function SmartContextBanner() { ...@@ -175,7 +175,7 @@ export function SmartContextBanner() {
</div> </div>
<button <button
type="button" type="button"
aria-label="Get Dyad Pro" aria-label="Get bit-PM Pro"
className="inline-flex items-center rounded-md bg-white/90 text-emerald-800 hover:bg-white shadow px-3 py-1.5 text-xs sm:text-sm font-semibold focus:outline-none focus:ring-2 focus:ring-white/50" className="inline-flex items-center rounded-md bg-white/90 text-emerald-800 hover:bg-white shadow px-3 py-1.5 text-xs sm:text-sm font-semibold focus:outline-none focus:ring-2 focus:ring-white/50"
> >
{t("proBanner.getDyadPro")} {t("proBanner.getDyadPro")}
...@@ -217,7 +217,7 @@ export function TurboBanner() { ...@@ -217,7 +217,7 @@ export function TurboBanner() {
</div> </div>
<button <button
type="button" type="button"
aria-label="Get Dyad Pro" aria-label="Get bit-PM Pro"
className="inline-flex items-center rounded-md bg-white/90 text-rose-800 hover:bg-white shadow px-3 py-1.5 text-xs sm:text-sm font-semibold focus:outline-none focus:ring-2 focus:ring-white/50" className="inline-flex items-center rounded-md bg-white/90 text-rose-800 hover:bg-white shadow px-3 py-1.5 text-xs sm:text-sm font-semibold focus:outline-none focus:ring-2 focus:ring-white/50"
> >
{t("proBanner.getDyadPro")} {t("proBanner.getDyadPro")}
......
...@@ -77,14 +77,14 @@ export function ProModeSelector() { ...@@ -77,14 +77,14 @@ export function ProModeSelector() {
<Sparkles className="h-3.5 w-3.5" /> <Sparkles className="h-3.5 w-3.5" />
<span className="font-medium">Pro</span> <span className="font-medium">Pro</span>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent>Configure Dyad Pro settings</TooltipContent> <TooltipContent>Configure bit-PM Pro settings</TooltipContent>
</Tooltip> </Tooltip>
<PopoverContent className="w-80 border-primary/20"> <PopoverContent className="w-80 border-primary/20">
<div className="space-y-4"> <div className="space-y-4">
<div className="space-y-1"> <div className="space-y-1">
<h4 className="font-medium flex items-center gap-1.5"> <h4 className="font-medium flex items-center gap-1.5">
<Sparkles className="h-4 w-4 text-primary" /> <Sparkles className="h-4 w-4 text-primary" />
<span className="text-primary font-medium">Dyad Pro</span> <span className="text-primary font-medium">bit-PM Pro</span>
</h4> </h4>
<div className="h-px bg-gradient-to-r from-primary/50 via-primary/20 to-transparent" /> <div className="h-px bg-gradient-to-r from-primary/50 via-primary/20 to-transparent" />
</div> </div>
...@@ -104,8 +104,8 @@ export function ProModeSelector() { ...@@ -104,8 +104,8 @@ export function ProModeSelector() {
<div className="flex flex-col gap-3"> <div className="flex flex-col gap-3">
<SelectorRow <SelectorRow
id="pro-enabled" id="pro-enabled"
label="Enable Dyad Pro" label="Enable bit-PM Pro"
tooltip="Uses Dyad Pro AI credits for the main AI model and Pro modes." tooltip="Uses bit-PM Pro AI credits for the main AI model and Pro modes."
isTogglable={hasProKey} isTogglable={hasProKey}
settingEnabled={Boolean(settings?.enableDyadPro)} settingEnabled={Boolean(settings?.enableDyadPro)}
toggle={toggleProEnabled} toggle={toggleProEnabled}
...@@ -123,7 +123,7 @@ export function ProModeSelector() { ...@@ -123,7 +123,7 @@ export function ProModeSelector() {
<SelectorRow <SelectorRow
id="web-search" id="web-search"
label="Web Access" label="Web Access"
tooltip="Allows Dyad to access the web (e.g. search for information)" tooltip="Allows bit-PM to access the web (e.g. search for information)"
isTogglable={proModeTogglable} isTogglable={proModeTogglable}
settingEnabled={Boolean(settings?.enableProWebSearch)} settingEnabled={Boolean(settings?.enableProWebSearch)}
toggle={toggleWebSearch} toggle={toggleWebSearch}
......
...@@ -36,9 +36,9 @@ export function ReleaseChannelSelector() { ...@@ -36,9 +36,9 @@ export function ReleaseChannelSelector() {
} else { } else {
toast("Using Beta release channel", { toast("Using Beta release channel", {
description: description:
"You will need to restart Dyad for your settings to take effect.", "You will need to restart bit-PM for your settings to take effect.",
action: { action: {
label: "Restart Dyad", label: "Restart bit-PM",
onClick: () => { onClick: () => {
ipc.system.restartDyad(); ipc.system.restartDyad();
}, },
......
...@@ -113,7 +113,7 @@ export function RuntimeModeSelector() { ...@@ -113,7 +113,7 @@ export function RuntimeModeSelector() {
</div> </div>
{showCloudSandboxOption && !hasCloudSandboxAccess && ( {showCloudSandboxOption && !hasCloudSandboxAccess && (
<div className="text-sm text-muted-foreground bg-muted/40 p-2 rounded"> <div className="text-sm text-muted-foreground bg-muted/40 p-2 rounded">
Cloud sandboxes are a Dyad Pro feature.{" "} Cloud sandboxes are a bit-PM Pro feature.{" "}
<button <button
type="button" type="button"
className="underline font-medium cursor-pointer text-primary" className="underline font-medium cursor-pointer text-primary"
......
...@@ -37,7 +37,7 @@ export function ChatErrorBox({ ...@@ -37,7 +37,7 @@ export function ChatErrorBox({
href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=free-quota-error" href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=free-quota-error"
variant="primary" variant="primary"
> >
Access with Dyad Pro Access with bit-PM Pro
</ExternalLink> </ExternalLink>
</span>{" "} </span>{" "}
or switch to another model. or switch to another model.
...@@ -65,7 +65,7 @@ export function ChatErrorBox({ ...@@ -65,7 +65,7 @@ export function ChatErrorBox({
href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=rate-limit-error" href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=rate-limit-error"
variant="primary" variant="primary"
> >
Upgrade to Dyad Pro Upgrade to bit-PM Pro
</ExternalLink> </ExternalLink>
<ExternalLink href="https://dyad.sh/docs/help/ai-rate-limit"> <ExternalLink href="https://dyad.sh/docs/help/ai-rate-limit">
...@@ -80,12 +80,12 @@ export function ChatErrorBox({ ...@@ -80,12 +80,12 @@ export function ChatErrorBox({
return ( return (
<ChatInfoContainer onDismiss={onDismiss}> <ChatInfoContainer onDismiss={onDismiss}>
<span> <span>
Looks like you don't have a valid Dyad Pro key.{" "} Looks like you don't have a valid bit-PM Pro key.{" "}
<ExternalLink <ExternalLink
href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=invalid-pro-key-error" href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=invalid-pro-key-error"
variant="primary" variant="primary"
> >
Upgrade to Dyad Pro Upgrade to bit-PM Pro
</ExternalLink>{" "} </ExternalLink>{" "}
today. today.
</span> </span>
...@@ -96,7 +96,7 @@ export function ChatErrorBox({ ...@@ -96,7 +96,7 @@ export function ChatErrorBox({
return ( return (
<ChatInfoContainer onDismiss={onDismiss}> <ChatInfoContainer onDismiss={onDismiss}>
<span> <span>
You have used all of your Dyad AI credits this month.{" "} You have used all of your bit-PM AI credits this month.{" "}
<ExternalLink <ExternalLink
href="https://academy.dyad.sh/subscription?utm_source=dyad-app&utm_medium=app&utm_campaign=exceeded-budget-error" href="https://academy.dyad.sh/subscription?utm_source=dyad-app&utm_medium=app&utm_campaign=exceeded-budget-error"
variant="primary" variant="primary"
...@@ -122,13 +122,13 @@ export function ChatErrorBox({ ...@@ -122,13 +122,13 @@ export function ChatErrorBox({
return ( return (
<ChatErrorContainer onDismiss={onDismiss}> <ChatErrorContainer onDismiss={onDismiss}>
You have used all {messagesLimit} free Agent messages for today. Please You have used all {messagesLimit} free Agent messages for today. Please
upgrade to Dyad Pro for unlimited access or switch to Build mode. upgrade to bit-PM Pro for unlimited access or switch to Build mode.
<div className="mt-2 space-y-2 space-x-2"> <div className="mt-2 space-y-2 space-x-2">
<ExternalLink <ExternalLink
href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=free-agent-quota-exceeded" href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=free-agent-quota-exceeded"
variant="primary" variant="primary"
> >
Upgrade to Dyad Pro Upgrade to bit-PM Pro
</ExternalLink> </ExternalLink>
</div> </div>
</ChatErrorContainer> </ChatErrorContainer>
...@@ -146,7 +146,7 @@ export function ChatErrorBox({ ...@@ -146,7 +146,7 @@ export function ChatErrorBox({
href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=general-error" href="https://dyad.sh/pro?utm_source=dyad-app&utm_medium=app&utm_campaign=general-error"
variant="primary" variant="primary"
> >
Upgrade to Dyad Pro Upgrade to bit-PM Pro
</ExternalLink> </ExternalLink>
)} )}
{isDyadProEnabled && onStartNewChat && ( {isDyadProEnabled && onStartNewChat && (
......
...@@ -58,13 +58,13 @@ export function FreeAgentQuotaBanner({ ...@@ -58,13 +58,13 @@ export function FreeAgentQuotaBanner({
<p className="text-sm text-amber-700 dark:text-amber-300"> <p className="text-sm text-amber-700 dark:text-amber-300">
You have used all {messagesLimit} messages for the free Agent mode You have used all {messagesLimit} messages for the free Agent mode
today. Check back in {resetTimeDisplay} ({resetDateTime}). If you today. Check back in {resetTimeDisplay} ({resetDateTime}). If you
don't want to wait, upgrade to Dyad Pro or switch back to Build don't want to wait, upgrade to bit-PM Pro or switch back to Build
mode. mode.
</p> </p>
<div className="flex flex-wrap gap-2"> <div className="flex flex-wrap gap-2">
<Button onClick={handleUpgrade} size="sm" className="gap-1.5"> <Button onClick={handleUpgrade} size="sm" className="gap-1.5">
<Sparkles className="h-3.5 w-3.5" /> <Sparkles className="h-3.5 w-3.5" />
Upgrade to Dyad Pro Upgrade to bit-PM Pro
</Button> </Button>
<Button <Button
onClick={onSwitchToBuildMode} onClick={onSwitchToBuildMode}
......
...@@ -87,7 +87,7 @@ export function HomeChatInput({ ...@@ -87,7 +87,7 @@ export function HomeChatInput({
]); ]);
const placeholder = selectedApp const placeholder = selectedApp
? `Send a message to ${selectedApp.name}...` ? `Send a message to ${selectedApp.name}...`
: `Ask Dyad to build ${typingText ?? ""}`; : `Ask bit-PM to build ${typingText ?? ""}`;
// Use the attachments hook // Use the attachments hook
const { const {
......
...@@ -306,7 +306,7 @@ export function LexicalChatInput({ ...@@ -306,7 +306,7 @@ export function LexicalChatInput({
onSubmit, onSubmit,
onPaste, onPaste,
excludeCurrentApp, excludeCurrentApp,
placeholder = "Ask Dyad to build...", placeholder = "Ask bit-PM to build...",
disabled = false, disabled = false,
disableSendButton, disableSendButton,
messageHistory = [], messageHistory = [],
......
...@@ -56,7 +56,11 @@ export function Message({ spans }: MessageConfig) { ...@@ -56,7 +56,11 @@ export function Message({ spans }: MessageConfig) {
export const TURBO_EDITS_PROMO_MESSAGE: MessageConfig = { export const TURBO_EDITS_PROMO_MESSAGE: MessageConfig = {
spans: [ spans: [
{ type: "text", content: "Tired of waiting on AI?" }, { type: "text", content: "Tired of waiting on AI?" },
{ type: "link", content: " Get Dyad Pro", url: "https://dyad.sh/pro#ai" }, {
type: "link",
content: " Get bit-PM Pro",
url: "https://dyad.sh/pro#ai",
},
{ type: "text", content: " for faster edits with Turbo Edits." }, { type: "text", content: " for faster edits with Turbo Edits." },
], ],
}; };
...@@ -66,7 +70,7 @@ export const SMART_CONTEXT_PROMO_MESSAGE: MessageConfig = { ...@@ -66,7 +70,7 @@ export const SMART_CONTEXT_PROMO_MESSAGE: MessageConfig = {
{ type: "text", content: "Save up to 3x on AI costs with " }, { type: "text", content: "Save up to 3x on AI costs with " },
{ {
type: "link", type: "link",
content: "Dyad Pro's Smart Context", content: "bit-PM Pro's Smart Context",
url: "https://dyad.sh/pro#ai", url: "https://dyad.sh/pro#ai",
}, },
], ],
...@@ -90,7 +94,7 @@ export const REDDIT_TIP: MessageConfig = { ...@@ -90,7 +94,7 @@ export const REDDIT_TIP: MessageConfig = {
}, },
{ {
type: "link", type: "link",
content: "Dyad subreddit", content: "bit-PM subreddit",
url: "https://www.reddit.com/r/dyadbuilders/", url: "https://www.reddit.com/r/dyadbuilders/",
}, },
], ],
...@@ -124,7 +128,7 @@ export const BUILD_A_BIBLE_APP_TIP: MessageConfig = { ...@@ -124,7 +128,7 @@ export const BUILD_A_BIBLE_APP_TIP: MessageConfig = {
}, },
{ {
type: "text", type: "text",
content: " the creator of Dyad build a Bible app step-by-step", content: " the creator of bit-PM build a Bible app step-by-step",
}, },
], ],
}; };
...@@ -187,7 +191,7 @@ export const GITHUB_TIP: MessageConfig = { ...@@ -187,7 +191,7 @@ export const GITHUB_TIP: MessageConfig = {
spans: [ spans: [
{ {
type: "text", type: "text",
content: "Like Dyad? Star it on ", content: "Like bit-PM? Star it on ",
}, },
{ {
type: "link", type: "link",
......
...@@ -143,7 +143,7 @@ export function TokenBar({ chatId }: TokenBarProps) { ...@@ -143,7 +143,7 @@ export function TokenBar({ chatId }: TokenBarProps) {
} }
className="text-blue-500 dark:text-blue-400 cursor-pointer hover:underline" className="text-blue-500 dark:text-blue-400 cursor-pointer hover:underline"
> >
Dyad Pro's Smart Context bit-PM Pro's Smart Context
</a> </a>
</div> </div>
)} )}
......
...@@ -29,7 +29,7 @@ export const OnboardingBanner = ({ ...@@ -29,7 +29,7 @@ export const OnboardingBanner = ({
<div className="relative p-2"> <div className="relative p-2">
<img <img
src="https://img.youtube.com/vi/rgdNoHLaRN4/maxresdefault.jpg" src="https://img.youtube.com/vi/rgdNoHLaRN4/maxresdefault.jpg"
alt="Get started with Dyad in 3 minutes" alt="Get started with bit-PM in 3 minutes"
className="w-28 h-16 object-cover rounded-md" className="w-28 h-16 object-cover rounded-md"
/> />
<div className="absolute inset-0 flex items-center justify-center"> <div className="absolute inset-0 flex items-center justify-center">
...@@ -41,7 +41,7 @@ export const OnboardingBanner = ({ ...@@ -41,7 +41,7 @@ export const OnboardingBanner = ({
<div className="flex-1 px-4 py-3"> <div className="flex-1 px-4 py-3">
<div className="text-foreground"> <div className="text-foreground">
<p className="font-semibold text-base"> <p className="font-semibold text-base">
Get started with Dyad in 3 minutes Get started with bit-PM in 3 minutes
</p> </p>
<p className="text-sm text-muted-foreground"> <p className="text-sm text-muted-foreground">
Start building your app for free Start building your app for free
......
...@@ -36,7 +36,7 @@ export const AnnotatorOnlyForPro = ({ onGoBack }: AnnotatorOnlyForProProps) => { ...@@ -36,7 +36,7 @@ export const AnnotatorOnlyForPro = ({ onGoBack }: AnnotatorOnlyForProProps) => {
</h2> </h2>
<p className="text-muted-foreground mb-10 text-center max-w-md text-base leading-relaxed"> <p className="text-muted-foreground mb-10 text-center max-w-md text-base leading-relaxed">
Unlock the ability to annotate screenshots and enhance your workflow Unlock the ability to annotate screenshots and enhance your workflow
with Dyad Pro. with bit-PM Pro.
</p> </p>
{/* Get Pro Button */} {/* Get Pro Button */}
...@@ -45,7 +45,7 @@ export const AnnotatorOnlyForPro = ({ onGoBack }: AnnotatorOnlyForProProps) => { ...@@ -45,7 +45,7 @@ export const AnnotatorOnlyForPro = ({ onGoBack }: AnnotatorOnlyForProProps) => {
size="lg" size="lg"
className="px-8 shadow-md hover:shadow-lg transition-all" className="px-8 shadow-md hover:shadow-lg transition-all"
> >
Get Dyad Pro Get bit-PM Pro
</Button> </Button>
</div> </div>
</div> </div>
......
...@@ -125,7 +125,7 @@ const ErrorBanner = ({ error, onDismiss, onAIFix }: ErrorBannerProps) => { ...@@ -125,7 +125,7 @@ const ErrorBanner = ({ error, onDismiss, onAIFix }: ErrorBannerProps) => {
{(isInternalDyadError || isSyncError) && ( {(isInternalDyadError || isSyncError) && (
<div className="absolute top-1 right-1 p-1 bg-red-100 dark:bg-red-900 rounded-md text-xs font-medium text-red-700 dark:text-red-300"> <div className="absolute top-1 right-1 p-1 bg-red-100 dark:bg-red-900 rounded-md text-xs font-medium text-red-700 dark:text-red-300">
{isSyncError ? "Cloud sync issue" : "Internal Dyad error"} {isSyncError ? "Cloud sync issue" : "Internal bit-PM error"}
</div> </div>
)} )}
...@@ -160,9 +160,9 @@ const ErrorBanner = ({ error, onDismiss, onAIFix }: ErrorBannerProps) => { ...@@ -160,9 +160,9 @@ const ErrorBanner = ({ error, onDismiss, onAIFix }: ErrorBannerProps) => {
{isDockerError {isDockerError
? "Make sure Docker Desktop is running and try restarting the app." ? "Make sure Docker Desktop is running and try restarting the app."
: isSyncError : isSyncError
? "Dyad could not upload your latest local changes to the cloud sandbox. Check your network connection or wait for sync to recover." ? "bit-PM could not upload your latest local changes to the cloud sandbox. Check your network connection or wait for sync to recover."
: isInternalDyadError : isInternalDyadError
? "Try restarting the Dyad app or restarting your computer to see if that fixes the error." ? "Try restarting the bit-PM app or restarting your computer to see if that fixes the error."
: "Check if restarting the app fixes the error."} : "Check if restarting the app fixes the error."}
</span> </span>
</div> </div>
...@@ -456,11 +456,11 @@ export const PreviewIframe = ({ loading }: { loading: boolean }) => { ...@@ -456,11 +456,11 @@ export const PreviewIframe = ({ loading }: { loading: boolean }) => {
? cloudSandboxStatus.lastErrorMessage.includes("Dyad stopped") ? cloudSandboxStatus.lastErrorMessage.includes("Dyad stopped")
? cloudSandboxStatus.lastErrorMessage ? cloudSandboxStatus.lastErrorMessage
: cloudSandboxStatus.terminationReason === "credits_exhausted" : cloudSandboxStatus.terminationReason === "credits_exhausted"
? "This cloud sandbox was stopped because your Dyad Pro credits ran out. Add credits and start it again." ? "This cloud sandbox was stopped because your bit-PM Pro credits ran out. Add credits and start it again."
: "This cloud sandbox was stopped because Dyad could not confirm billing. Please try starting it again." : "This cloud sandbox was stopped because bit-PM could not confirm billing. Please try starting it again."
: cloudSandboxStatus.terminationReason === "credits_exhausted" : cloudSandboxStatus.terminationReason === "credits_exhausted"
? "This cloud sandbox was stopped because your Dyad Pro credits ran out. Add credits and start it again." ? "This cloud sandbox was stopped because your bit-PM Pro credits ran out. Add credits and start it again."
: "This cloud sandbox was stopped because Dyad could not confirm billing. Please try starting it again.", : "This cloud sandbox was stopped because bit-PM could not confirm billing. Please try starting it again.",
source: "dyad-app", source: "dyad-app",
}); });
} }
......
...@@ -101,7 +101,7 @@ export function AzureConfiguration({ ...@@ -101,7 +101,7 @@ export function AzureConfiguration({
variant: "default" as const, variant: "default" as const,
title: "Azure OpenAI Configured", title: "Azure OpenAI Configured",
description: description:
"Dyad will use the credentials saved in Settings for Azure OpenAI models.", "bit-PM will use the credentials saved in Settings for Azure OpenAI models.",
icon: KeyRound, icon: KeyRound,
titleClassName: "", titleClassName: "",
descriptionClassName: "", descriptionClassName: "",
...@@ -254,12 +254,12 @@ export function AzureConfiguration({ ...@@ -254,12 +254,12 @@ export function AzureConfiguration({
<div className="text-sm text-muted-foreground space-y-2"> <div className="text-sm text-muted-foreground space-y-2">
<p> <p>
You can continue to configure Azure via environment variables. You can continue to configure Azure via environment variables.
If both variables are present and no settings are saved, Dyad If both variables are present and no settings are saved, bit-PM
will use them automatically. will use them automatically.
</p> </p>
<p> <p>
Values saved in Settings take precedence over environment Values saved in Settings take precedence over environment
variables. Restart Dyad after changing environment variables. variables. Restart bit-PM after changing environment variables.
</p> </p>
</div> </div>
</AccordionContent> </AccordionContent>
......
...@@ -68,7 +68,7 @@ export function ProviderSettingsPage({ provider }: ProviderSettingsPageProps) { ...@@ -68,7 +68,7 @@ export function ProviderSettingsPage({ provider }: ProviderSettingsPageProps) {
// Use fetched data (or defaults for Dyad) // Use fetched data (or defaults for Dyad)
const providerDisplayName = isDyad const providerDisplayName = isDyad
? "Dyad" ? "bit-PM"
: (providerData?.name ?? "Unknown Provider"); : (providerData?.name ?? "Unknown Provider");
const providerWebsiteUrl = providerData?.websiteUrl; const providerWebsiteUrl = providerData?.websiteUrl;
const hasFreeTier = isDyad ? false : providerData?.hasFreeTier; const hasFreeTier = isDyad ? false : providerData?.hasFreeTier;
...@@ -195,7 +195,7 @@ export function ProviderSettingsPage({ provider }: ProviderSettingsPageProps) { ...@@ -195,7 +195,7 @@ export function ProviderSettingsPage({ provider }: ProviderSettingsPageProps) {
enableDyadPro: enabled, enableDyadPro: enabled,
}); });
} catch (error: any) { } catch (error: any) {
showError(`Error toggling Dyad Pro: ${error}`); showError(`Error toggling bit-PM Pro: ${error}`);
} finally { } finally {
setIsSaving(false); setIsSaving(false);
} }
...@@ -327,13 +327,13 @@ export function ProviderSettingsPage({ provider }: ProviderSettingsPageProps) { ...@@ -327,13 +327,13 @@ export function ProviderSettingsPage({ provider }: ProviderSettingsPageProps) {
{isDyad && !settingsLoading && ( {isDyad && !settingsLoading && (
<div className="mt-6 flex items-center justify-between p-4 bg-(--background-lightest) rounded-lg border"> <div className="mt-6 flex items-center justify-between p-4 bg-(--background-lightest) rounded-lg border">
<div> <div>
<h3 className="font-medium">Enable Dyad Pro</h3> <h3 className="font-medium">Enable bit-PM Pro</h3>
<p className="text-sm text-gray-600 dark:text-gray-400"> <p className="text-sm text-gray-600 dark:text-gray-400">
Toggle to enable Dyad Pro Toggle to enable bit-PM Pro
</p> </p>
</div> </div>
<Switch <Switch
aria-label="Enable Dyad Pro" aria-label="Enable bit-PM Pro"
checked={settings?.enableDyadPro} checked={settings?.enableDyadPro}
onCheckedChange={handleToggleDyadPro} onCheckedChange={handleToggleDyadPro}
disabled={isSaving} disabled={isSaving}
......
...@@ -4,7 +4,7 @@ import { detectIsMac } from "@/hooks/useChatModeToggle"; ...@@ -4,7 +4,7 @@ import { detectIsMac } from "@/hooks/useChatModeToggle";
function sendTestNotification() { function sendTestNotification() {
if (Notification.permission === "granted") { if (Notification.permission === "granted") {
new Notification("Dyad", { new Notification("bit-PM", {
body: "Notifications are working! You'll be notified when responses finish or input is needed.", body: "Notifications are working! You'll be notified when responses finish or input is needed.",
}); });
} }
......
...@@ -187,7 +187,7 @@ export function usePlanEvents() { ...@@ -187,7 +187,7 @@ export function usePlanEvents() {
const app = queryClient.getQueryData<App | null>( const app = queryClient.getQueryData<App | null>(
queryKeys.apps.detail({ appId: selectedAppIdRef.current! }), queryKeys.apps.detail({ appId: selectedAppIdRef.current! }),
); );
new Notification(app?.name ?? "Dyad", { new Notification(app?.name ?? "bit-PM", {
body: "A questionnaire needs your input", body: "A questionnaire needs your input",
}); });
} }
......
...@@ -321,7 +321,7 @@ export function useStreamChat({ ...@@ -321,7 +321,7 @@ export function useStreamChat({
queryKeys.chats.list({ appId: targetAppId ?? null }), queryKeys.chats.list({ appId: targetAppId ?? null }),
); );
const chat = chats?.find((c) => c.id === chatId); const chat = chats?.find((c) => c.id === chatId);
const appName = app?.name ?? "Dyad"; const appName = app?.name ?? "bit-PM";
const rawTitle = response.chatSummary ?? chat?.title; const rawTitle = response.chatSummary ?? chat?.title;
const body = rawTitle const body = rawTitle
? rawTitle.length > 80 ? rawTitle.length > 80
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
"deleteChatNote": "Note: Any code changes that have already been accepted will be kept.", "deleteChatNote": "Note: Any code changes that have already been accepted will be kept.",
"scrollToBottom": "Scroll to bottom", "scrollToBottom": "Scroll to bottom",
"dismissError": "Dismiss error", "dismissError": "Dismiss error",
"askDyadToBuild": "Ask Dyad to build...", "askDyadToBuild": "Ask bit-PM to build...",
"voiceToText": "Voice to text", "voiceToText": "Voice to text",
"voiceToTextPro": "Voice to text (Pro)", "voiceToTextPro": "Voice to text (Pro)",
"voiceToTextRequiresPro": "Voice to text (requires Pro)", "voiceToTextRequiresPro": "Voice to text (requires Pro)",
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
"total": "Total", "total": "Total",
"failedCountTokens": "Failed to count tokens", "failedCountTokens": "Failed to count tokens",
"optimizeTokens": "Optimize your tokens with", "optimizeTokens": "Optimize your tokens with",
"dyadProSmartContext": "Dyad Pro's Smart Context", "dyadProSmartContext": "bit-PM Pro's Smart Context",
"attachFiles": "Attach files", "attachFiles": "Attach files",
"themes": "Themes", "themes": "Themes",
"noTheme": "No Theme", "noTheme": "No Theme",
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
"otherProviders": "Other AI providers", "otherProviders": "Other AI providers",
"providerCount_one": "{{count}} provider", "providerCount_one": "{{count}} provider",
"providerCount_other": "{{count}} providers", "providerCount_other": "{{count}} providers",
"dyadTurbo": "Dyad Turbo", "dyadTurbo": "bit-PM Turbo",
"modelCount_one": "{{count}} model", "modelCount_one": "{{count}} model",
"modelCount_other": "{{count}} models", "modelCount_other": "{{count}} models",
"providerModels": "{{name}} Models", "providerModels": "{{name}} Models",
...@@ -196,29 +196,29 @@ ...@@ -196,29 +196,29 @@
"versionCount": "Version {{count}}" "versionCount": "Version {{count}}"
}, },
"errorBox": { "errorBox": {
"accessWithDyadPro": "Access with Dyad Pro", "accessWithDyadPro": "Access with bit-PM Pro",
"orSwitchModel": "or switch to another model.", "orSwitchModel": "or switch to another model.",
"upgradeToDyadPro": "Upgrade to Dyad Pro", "upgradeToDyadPro": "Upgrade to bit-PM Pro",
"troubleshootingGuide": "Troubleshooting guide", "troubleshootingGuide": "Troubleshooting guide",
"invalidProKey": "Looks like you don't have a valid Dyad Pro key.", "invalidProKey": "Looks like you don't have a valid bit-PM Pro key.",
"today": "today.", "today": "today.",
"creditsUsed": "You have used all of your Dyad AI credits this month.", "creditsUsed": "You have used all of your bit-PM AI credits this month.",
"reloadOrUpgrade": "Reload or upgrade your subscription", "reloadOrUpgrade": "Reload or upgrade your subscription",
"getMoreCredits": "and get more AI credits", "getMoreCredits": "and get more AI credits",
"readDocs": "Read docs" "readDocs": "Read docs"
}, },
"promo": { "promo": {
"tiredOfWaiting": "Tired of waiting on AI?", "tiredOfWaiting": "Tired of waiting on AI?",
"getDyadPro": "Get Dyad Pro", "getDyadPro": "Get bit-PM Pro",
"fasterEdits": "for faster edits with Turbo Edits.", "fasterEdits": "for faster edits with Turbo Edits.",
"saveOnCosts": "Save up to 3x on AI costs with", "saveOnCosts": "Save up to 3x on AI costs with",
"debuggingLoop": "Getting stuck in a debugging loop? Try a different model.", "debuggingLoop": "Getting stuck in a debugging loop? Try a different model.",
"joinBuilders": "Join 600+ builders in the", "joinBuilders": "Join 600+ builders in the",
"dyadSubreddit": "Dyad subreddit", "dyadSubreddit": "bit-PM subreddit",
"foundBug": "Found a bug? Click Help > Report a Bug", "foundBug": "Found a bug? Click Help > Report a Bug",
"reportBadResponse": "Want to report a bad AI response? Upload the chat by clicking Help", "reportBadResponse": "Want to report a bad AI response? Upload the chat by clicking Help",
"watch": "Watch", "watch": "Watch",
"creatorBuildApp": "the creator of Dyad build a Bible app step-by-step", "creatorBuildApp": "the creator of bit-PM build a Bible app step-by-step",
"gettingStuck": "Getting stuck? Read our", "gettingStuck": "Getting stuck? Read our",
"debuggingTips": "debugging tips", "debuggingTips": "debugging tips",
"advancedTip": "Advanced tip: Customize your", "advancedTip": "Advanced tip: Customize your",
...@@ -226,7 +226,7 @@ ...@@ -226,7 +226,7 @@
"keepFocused": "Want to keep the AI focused? Start a new chat.", "keepFocused": "Want to keep the AI focused? Start a new chat.",
"whatsNext": "Want to know what's next? Check out our", "whatsNext": "Want to know what's next? Check out our",
"roadmap": "roadmap", "roadmap": "roadmap",
"likeDyad": "Like Dyad? Star it on", "likeDyad": "Like bit-PM? Star it on",
"gitHub": "GitHub" "gitHub": "GitHub"
}, },
"consent": { "consent": {
......
...@@ -38,14 +38,14 @@ ...@@ -38,14 +38,14 @@
"installCommandPlaceholder": "pnpm install", "installCommandPlaceholder": "pnpm install",
"startCommandPlaceholder": "pnpm dev", "startCommandPlaceholder": "pnpm dev",
"bothCommandsRequired": "Both commands are required when customizing.", "bothCommandsRequired": "Both commands are required when customizing.",
"aiRulesTooltip": "AI_RULES.md lets Dyad know which tech stack to use for editing the app", "aiRulesTooltip": "AI_RULES.md lets bit-PM know which tech stack to use for editing the app",
"noAiRulesFound": "No AI_RULES.md found. Dyad will automatically generate one after importing.", "noAiRulesFound": "No AI_RULES.md found. bit-PM will automatically generate one after importing.",
"importingApp": "Importing app...", "importingApp": "Importing app...",
"import": "Import", "import": "Import",
"noRepositoriesFound": "No repositories found", "noRepositoriesFound": "No repositories found",
"repositoryUrl": "Repository URL", "repositoryUrl": "Repository URL",
"repositoryUrlPlaceholder": "https://github.com/user/repo.git", "repositoryUrlPlaceholder": "https://github.com/user/repo.git",
"appImportedWithRules": "App imported successfully. Dyad will automatically generate an AI_RULES.md now.", "appImportedWithRules": "App imported successfully. bit-PM will automatically generate an AI_RULES.md now.",
"appImported": "App imported successfully", "appImported": "App imported successfully",
"successfullyImported": "Successfully imported {{name}}", "successfullyImported": "Successfully imported {{name}}",
"failedFetchRepos": "Failed to fetch repositories.", "failedFetchRepos": "Failed to fetch repositories.",
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
"cpu": "CPU:", "cpu": "CPU:",
"systemMetrics": "System Metrics", "systemMetrics": "System Metrics",
"communityCodeNotice": "Community Code Notice", "communityCodeNotice": "Community Code Notice",
"communityCodeWarning": "This code was created by a Dyad community member, not our core team.", "communityCodeWarning": "This code was created by a bit-PM community member, not our core team.",
"communityCodeRisk": "Community code can be very helpful, but since it's built independently, it may have bugs, security risks, or could cause issues with your system. We can't provide official support if problems occur.", "communityCodeRisk": "Community code can be very helpful, but since it's built independently, it may have bugs, security risks, or could cause issues with your system. We can't provide official support if problems occur.",
"communityCodeReview": "We recommend reviewing the code on GitHub first. Only proceed if you're comfortable with these risks.", "communityCodeReview": "We recommend reviewing the code on GitHub first. Only proceed if you're comfortable with these risks.",
"apps": { "apps": {
...@@ -98,10 +98,10 @@ ...@@ -98,10 +98,10 @@
"deleteItemTitle": "Delete {{itemType}}", "deleteItemTitle": "Delete {{itemType}}",
"deleteItemConfirmation": "Are you sure you want to delete \"{{itemName}}\"? This action cannot be undone.", "deleteItemConfirmation": "Are you sure you want to delete \"{{itemName}}\"? This action cannot be undone.",
"proBanner": { "proBanner": {
"manageDyadPro": "Manage Dyad Pro", "manageDyadPro": "Manage bit-PM Pro",
"alreadyHavePro": "Already have Dyad Pro? Add your key", "alreadyHavePro": "Already have bit-PM Pro? Add your key",
"accessLeadingModels": "Access leading AI models with one plan", "accessLeadingModels": "Access leading AI models with one plan",
"getDyadPro": "Get Dyad Pro", "getDyadPro": "Get bit-PM Pro",
"upTo3xCheaper": "Up to 3x cheaper", "upTo3xCheaper": "Up to 3x cheaper",
"byUsingSmartContext": "by using Smart Context", "byUsingSmartContext": "by using Smart Context",
"generateCode4x": "Generate code 4-10x faster", "generateCode4x": "Generate code 4-10x faster",
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
}, },
"setup": { "setup": {
"buildNewApp": "Build a new app", "buildNewApp": "Build a new app",
"setupDyad": "Setup Dyad", "setupDyad": "Setup bit-PM",
"installNodeJs": "1. Install Node.js (App Runtime)", "installNodeJs": "1. Install Node.js (App Runtime)",
"errorCheckingNode": "Error checking Node.js status. Try installing Node.js.", "errorCheckingNode": "Error checking Node.js status. Try installing Node.js.",
"nodeInstalled": "Node.js ({{version}}) installed.", "nodeInstalled": "Node.js ({{version}}) installed.",
...@@ -127,12 +127,12 @@ ...@@ -127,12 +127,12 @@
"installNodeRuntime": "Install Node.js Runtime", "installNodeRuntime": "Install Node.js Runtime",
"checkingNodeSetup": "Checking Node.js setup...", "checkingNodeSetup": "Checking Node.js setup...",
"continueInstalled": "Continue | I installed Node.js", "continueInstalled": "Continue | I installed Node.js",
"nodeNotDetected": "Node.js not detected. Closing and re-opening Dyad usually fixes this.", "nodeNotDetected": "Node.js not detected. Closing and re-opening bit-PM usually fixes this.",
"setupAiAccess": "2. Setup AI Access", "setupAiAccess": "2. Setup AI Access",
"notSureWatchVideo": "Not sure what to do? Watch the Get Started video above", "notSureWatchVideo": "Not sure what to do? Watch the Get Started video above",
"setupGeminiApiKey": "Setup Google Gemini API Key", "setupGeminiApiKey": "Setup Google Gemini API Key",
"setupOpenRouterApiKey": "Setup OpenRouter API Key", "setupOpenRouterApiKey": "Setup OpenRouter API Key",
"setupDyadPro": "Setup Dyad Pro", "setupDyadPro": "Setup bit-PM Pro",
"accessAllModels": "Access all AI models with one plan", "accessAllModels": "Access all AI models with one plan",
"setupOtherProviders": "Setup other AI providers", "setupOtherProviders": "Setup other AI providers",
"openAiAnthropicMore": "OpenAI, Anthropic and more", "openAiAnthropicMore": "OpenAI, Anthropic and more",
...@@ -180,10 +180,10 @@ ...@@ -180,10 +180,10 @@
"contentPlaceholder": "Content" "contentPlaceholder": "Content"
}, },
"help": { "help": {
"needHelp": "Need help with Dyad?", "needHelp": "Need help with bit-PM?",
"helpOptions": "If you need help or want to report an issue, here are some options:", "helpOptions": "If you need help or want to report an issue, here are some options:",
"chatWithHelpBot": "Chat with Dyad help bot (Pro)", "chatWithHelpBot": "Chat with bit-PM help bot (Pro)",
"helpBotDescription": "Opens an in-app help chat assistant that searches through Dyad's docs.", "helpBotDescription": "Opens an in-app help chat assistant that searches through bit-PM's docs.",
"openDocs": "Open Docs", "openDocs": "Open Docs",
"openDocsDescription": "Get help with common questions and issues.", "openDocsDescription": "Get help with common questions and issues.",
"reportBug": "Report a Bug", "reportBug": "Report a Bug",
...@@ -192,8 +192,8 @@ ...@@ -192,8 +192,8 @@
"uploadChatSession": "Upload Chat Session", "uploadChatSession": "Upload Chat Session",
"uploadChatDescription": "Share chat logs and code for troubleshooting. Data is used only to resolve your issue and auto-deleted after a limited time.", "uploadChatDescription": "Share chat logs and code for troubleshooting. Data is used only to resolve your issue and auto-deleted after a limited time.",
"preparingUpload": "Preparing Upload...", "preparingUpload": "Preparing Upload...",
"helpBotTitle": "Dyad Help Bot", "helpBotTitle": "bit-PM Help Bot",
"askQuestion": "Ask a question about using Dyad.", "askQuestion": "Ask a question about using bit-PM.",
"conversationLogged": "This conversation may be logged and used to improve the product. Please do not put any sensitive information in here.", "conversationLogged": "This conversation may be logged and used to improve the product. Please do not put any sensitive information in here.",
"typeQuestion": "Type your question...", "typeQuestion": "Type your question...",
"sending": "Sending...", "sending": "Sending...",
...@@ -209,7 +209,7 @@ ...@@ -209,7 +209,7 @@
"assistant": "Assistant", "assistant": "Assistant",
"codebaseSnapshot": "Codebase Snapshot", "codebaseSnapshot": "Codebase Snapshot",
"systemInformation": "System Information", "systemInformation": "System Information",
"dyadVersion": "Dyad Version:", "dyadVersion": "bit-PM Version:",
"platform": "Platform:", "platform": "Platform:",
"architecture": "Architecture:", "architecture": "Architecture:",
"nodeVersion": "Node Version:", "nodeVersion": "Node Version:",
...@@ -374,8 +374,8 @@ ...@@ -374,8 +374,8 @@
"addToChat": "Add to Chat", "addToChat": "Add to Chat",
"closeAnnotator": "Close Annotator", "closeAnnotator": "Close Annotator",
"proFeatureTitle": "Annotator is a Pro Feature", "proFeatureTitle": "Annotator is a Pro Feature",
"proFeatureDescription": "Unlock the ability to annotate screenshots and enhance your workflow with Dyad Pro.", "proFeatureDescription": "Unlock the ability to annotate screenshots and enhance your workflow with bit-PM Pro.",
"getDyadPro": "Get Dyad Pro" "getDyadPro": "Get bit-PM Pro"
} }
}, },
"integrations": { "integrations": {
......
...@@ -84,10 +84,10 @@ ...@@ -84,10 +84,10 @@
"errorLoadingSettings": "Error Loading Settings", "errorLoadingSettings": "Error Loading Settings",
"couldNotLoadProvider": "Could not load provider data: {{message}}", "couldNotLoadProvider": "Could not load provider data: {{message}}",
"couldNotLoadSettings": "Could not load configuration data: {{message}}", "couldNotLoadSettings": "Could not load configuration data: {{message}}",
"enableDyadPro": "Enable Dyad Pro", "enableDyadPro": "Enable bit-PM Pro",
"toggleDyadPro": "Toggle to enable Dyad Pro", "toggleDyadPro": "Toggle to enable bit-PM Pro",
"apiKeyEmpty": "API Key cannot be empty.", "apiKeyEmpty": "API Key cannot be empty.",
"errorTogglingPro": "Error toggling Dyad Pro: {{error}}", "errorTogglingPro": "Error toggling bit-PM Pro: {{error}}",
"failedSaveApiKey": "Failed to save API key.", "failedSaveApiKey": "Failed to save API key.",
"failedDeleteApiKey": "Failed to delete API key." "failedDeleteApiKey": "Failed to delete API key."
}, },
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
"privacyNotice": "We use anonymous telemetry data to improve the product. No personal data is collected.", "privacyNotice": "We use anonymous telemetry data to improve the product. No personal data is collected.",
"acceptAndContinue": "Accept and Continue", "acceptAndContinue": "Accept and Continue",
"shareAnonymousData": "Share anonymous data?", "shareAnonymousData": "Share anonymous data?",
"helpImprove": "Help improve Dyad with anonymous usage data.", "helpImprove": "Help improve bit-PM with anonymous usage data.",
"noCodeOrMessages": "Note: this does not log your code or messages.", "noCodeOrMessages": "Note: this does not log your code or messages.",
"learnMore": "Learn more", "learnMore": "Learn more",
"accept": "Accept", "accept": "Accept",
...@@ -178,7 +178,7 @@ ...@@ -178,7 +178,7 @@
}, },
"azure": { "azure": {
"configured": "Azure OpenAI Configured", "configured": "Azure OpenAI Configured",
"configuredDescription": "Dyad will use the credentials saved in Settings for Azure OpenAI models.", "configuredDescription": "bit-PM will use the credentials saved in Settings for Azure OpenAI models.",
"usingEnvVars": "Using Environment Variables", "usingEnvVars": "Using Environment Variables",
"usingEnvVarsDescription": "AZURE_API_KEY and AZURE_RESOURCE_NAME are set. Values saved below will override them.", "usingEnvVarsDescription": "AZURE_API_KEY and AZURE_RESOURCE_NAME are set. Values saved below will override them.",
"configRequired": "Azure OpenAI Configuration Required", "configRequired": "Azure OpenAI Configuration Required",
...@@ -193,8 +193,8 @@ ...@@ -193,8 +193,8 @@
"configNeededDescription": "Azure OpenAI requests require both a resource name and API key. Enter them above or supply the environment variables instead.", "configNeededDescription": "Azure OpenAI requests require both a resource name and API key. Enter them above or supply the environment variables instead.",
"saveError": "Save Error", "saveError": "Save Error",
"envVarsOptional": "Environment Variables (optional)", "envVarsOptional": "Environment Variables (optional)",
"envVarsHelpText": "You can continue to configure Azure via environment variables. If both variables are present and no settings are saved, Dyad will use them automatically.", "envVarsHelpText": "You can continue to configure Azure via environment variables. If both variables are present and no settings are saved, bit-PM will use them automatically.",
"envVarsPrecedence": "Values saved in Settings take precedence over environment variables. Restart Dyad after changing environment variables." "envVarsPrecedence": "Values saved in Settings take precedence over environment variables. Restart bit-PM after changing environment variables."
}, },
"vertex": { "vertex": {
"projectId": "Project ID", "projectId": "Project ID",
...@@ -268,6 +268,6 @@ ...@@ -268,6 +268,6 @@
"updateProvider": "Update Provider", "updateProvider": "Update Provider",
"failedCreate": "Failed to create custom provider" "failedCreate": "Failed to create custom provider"
}, },
"manageDyadPro": "Manage Dyad Pro Subscription", "manageDyadPro": "Manage bit-PM Pro Subscription",
"setupDyadPro": "Setup Dyad Pro Subscription" "setupDyadPro": "Setup bit-PM Pro Subscription"
} }
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
"deleteChatNote": "Nota: Quaisquer alterações de código já aceitas serão mantidas.", "deleteChatNote": "Nota: Quaisquer alterações de código já aceitas serão mantidas.",
"scrollToBottom": "Rolar para o final", "scrollToBottom": "Rolar para o final",
"dismissError": "Dispensar erro", "dismissError": "Dispensar erro",
"askDyadToBuild": "Peça ao Dyad para construir...", "askDyadToBuild": "Peça ao bit-PM para construir...",
"cancelGeneration": "Cancelar geração", "cancelGeneration": "Cancelar geração",
"sendMessage": "Enviar mensagem", "sendMessage": "Enviar mensagem",
"loadingProposal": "Carregando proposta...", "loadingProposal": "Carregando proposta...",
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
"total": "Total", "total": "Total",
"failedCountTokens": "Falha ao contar tokens", "failedCountTokens": "Falha ao contar tokens",
"optimizeTokens": "Otimize seus tokens com", "optimizeTokens": "Otimize seus tokens com",
"dyadProSmartContext": "Contexto Inteligente do Dyad Pro", "dyadProSmartContext": "Contexto Inteligente do bit-PM Pro",
"attachFiles": "Anexar arquivos", "attachFiles": "Anexar arquivos",
"themes": "Temas", "themes": "Temas",
"noTheme": "Sem Tema", "noTheme": "Sem Tema",
...@@ -156,7 +156,7 @@ ...@@ -156,7 +156,7 @@
"otherProviders": "Outros provedores de IA", "otherProviders": "Outros provedores de IA",
"providerCount_one": "{{count}} provedor", "providerCount_one": "{{count}} provedor",
"providerCount_other": "{{count}} provedores", "providerCount_other": "{{count}} provedores",
"dyadTurbo": "Dyad Turbo", "dyadTurbo": "bit-PM Turbo",
"modelCount_one": "{{count}} modelo", "modelCount_one": "{{count}} modelo",
"modelCount_other": "{{count}} modelos", "modelCount_other": "{{count}} modelos",
"providerModels": "Modelos {{name}}", "providerModels": "Modelos {{name}}",
...@@ -190,29 +190,29 @@ ...@@ -190,29 +190,29 @@
"versionCount": "Versão {{count}}" "versionCount": "Versão {{count}}"
}, },
"errorBox": { "errorBox": {
"accessWithDyadPro": "Acessar com Dyad Pro", "accessWithDyadPro": "Acessar com bit-PM Pro",
"orSwitchModel": "ou mudar para outro modelo.", "orSwitchModel": "ou mudar para outro modelo.",
"upgradeToDyadPro": "Atualizar para Dyad Pro", "upgradeToDyadPro": "Atualizar para bit-PM Pro",
"troubleshootingGuide": "Guia de solução de problemas", "troubleshootingGuide": "Guia de solução de problemas",
"invalidProKey": "Parece que você não tem uma chave válida do Dyad Pro.", "invalidProKey": "Parece que você não tem uma chave válida do bit-PM Pro.",
"today": "hoje.", "today": "hoje.",
"creditsUsed": "Você utilizou todos os seus créditos de IA do Dyad neste mês.", "creditsUsed": "Você utilizou todos os seus créditos de IA do bit-PM neste mês.",
"reloadOrUpgrade": "Recarregue ou atualize sua assinatura", "reloadOrUpgrade": "Recarregue ou atualize sua assinatura",
"getMoreCredits": "e obtenha mais créditos de IA", "getMoreCredits": "e obtenha mais créditos de IA",
"readDocs": "Ler documentação" "readDocs": "Ler documentação"
}, },
"promo": { "promo": {
"tiredOfWaiting": "Cansado de esperar pela IA?", "tiredOfWaiting": "Cansado de esperar pela IA?",
"getDyadPro": "Obtenha o Dyad Pro", "getDyadPro": "Obtenha o bit-PM Pro",
"fasterEdits": "para edições mais rápidas com Turbo Edits.", "fasterEdits": "para edições mais rápidas com Turbo Edits.",
"saveOnCosts": "Economize até 3x nos custos de IA com", "saveOnCosts": "Economize até 3x nos custos de IA com",
"debuggingLoop": "Preso em um loop de depuração? Tente um modelo diferente.", "debuggingLoop": "Preso em um loop de depuração? Tente um modelo diferente.",
"joinBuilders": "Junte-se a mais de 600 criadores no", "joinBuilders": "Junte-se a mais de 600 criadores no",
"dyadSubreddit": "subreddit do Dyad", "dyadSubreddit": "subreddit do bit-PM",
"foundBug": "Encontrou um bug? Clique em Ajuda > Reportar um Bug", "foundBug": "Encontrou um bug? Clique em Ajuda > Reportar um Bug",
"reportBadResponse": "Quer reportar uma resposta ruim da IA? Envie o chat clicando em Ajuda", "reportBadResponse": "Quer reportar uma resposta ruim da IA? Envie o chat clicando em Ajuda",
"watch": "Assista", "watch": "Assista",
"creatorBuildApp": "o criador do Dyad construir um app bíblico passo a passo", "creatorBuildApp": "o criador do bit-PM construir um app bíblico passo a passo",
"gettingStuck": "Travando? Leia nossas", "gettingStuck": "Travando? Leia nossas",
"debuggingTips": "dicas de depuração", "debuggingTips": "dicas de depuração",
"advancedTip": "Dica avançada: Personalize suas", "advancedTip": "Dica avançada: Personalize suas",
...@@ -220,7 +220,7 @@ ...@@ -220,7 +220,7 @@
"keepFocused": "Quer manter a IA focada? Inicie um novo chat.", "keepFocused": "Quer manter a IA focada? Inicie um novo chat.",
"whatsNext": "Quer saber o que vem a seguir? Confira nosso", "whatsNext": "Quer saber o que vem a seguir? Confira nosso",
"roadmap": "roadmap", "roadmap": "roadmap",
"likeDyad": "Gostou do Dyad? Dê uma estrela no", "likeDyad": "Gostou do bit-PM? Dê uma estrela no",
"gitHub": "GitHub" "gitHub": "GitHub"
}, },
"consent": { "consent": {
......
...@@ -29,13 +29,13 @@ ...@@ -29,13 +29,13 @@
"installCommand": "Comando de instalação", "installCommand": "Comando de instalação",
"startCommand": "Comando de inicialização", "startCommand": "Comando de inicialização",
"bothCommandsRequired": "Ambos os comandos são obrigatórios ao personalizar.", "bothCommandsRequired": "Ambos os comandos são obrigatórios ao personalizar.",
"noAiRulesFound": "Nenhum AI_RULES.md encontrado. O Dyad gerará um automaticamente após a importação.", "noAiRulesFound": "Nenhum AI_RULES.md encontrado. O bit-PM gerará um automaticamente após a importação.",
"importingApp": "Importando app...", "importingApp": "Importando app...",
"import": "Importar", "import": "Importar",
"noRepositoriesFound": "Nenhum repositório encontrado", "noRepositoriesFound": "Nenhum repositório encontrado",
"repositoryUrl": "URL do Repositório", "repositoryUrl": "URL do Repositório",
"repositoryUrlPlaceholder": "https://github.com/usuario/repo.git", "repositoryUrlPlaceholder": "https://github.com/usuario/repo.git",
"appImportedWithRules": "App importado com sucesso. O Dyad gerará automaticamente um AI_RULES.md agora.", "appImportedWithRules": "App importado com sucesso. O bit-PM gerará automaticamente um AI_RULES.md agora.",
"appImported": "App importado com sucesso", "appImported": "App importado com sucesso",
"successfullyImported": "{{name}} importado com sucesso", "successfullyImported": "{{name}} importado com sucesso",
"failedFetchRepos": "Falha ao buscar repositórios.", "failedFetchRepos": "Falha ao buscar repositórios.",
...@@ -54,16 +54,16 @@ ...@@ -54,16 +54,16 @@
"cpu": "CPU:", "cpu": "CPU:",
"systemMetrics": "Métricas do Sistema", "systemMetrics": "Métricas do Sistema",
"communityCodeNotice": "Aviso sobre Código da Comunidade", "communityCodeNotice": "Aviso sobre Código da Comunidade",
"communityCodeWarning": "Este código foi criado por um membro da comunidade Dyad, não pela nossa equipe principal.", "communityCodeWarning": "Este código foi criado por um membro da comunidade bit-PM, não pela nossa equipe principal.",
"communityCodeRisk": "O código da comunidade pode ser muito útil, mas como é desenvolvido de forma independente, pode conter bugs, riscos de segurança ou causar problemas no seu sistema. Não podemos oferecer suporte oficial caso ocorram problemas.", "communityCodeRisk": "O código da comunidade pode ser muito útil, mas como é desenvolvido de forma independente, pode conter bugs, riscos de segurança ou causar problemas no seu sistema. Não podemos oferecer suporte oficial caso ocorram problemas.",
"communityCodeReview": "Recomendamos revisar o código no GitHub primeiro. Prossiga apenas se estiver confortável com esses riscos.", "communityCodeReview": "Recomendamos revisar o código no GitHub primeiro. Prossiga apenas se estiver confortável com esses riscos.",
"deleteItemTitle": "Excluir {{itemType}}", "deleteItemTitle": "Excluir {{itemType}}",
"deleteItemConfirmation": "Tem certeza de que deseja excluir \"{{itemName}}\"? Esta ação não pode ser desfeita.", "deleteItemConfirmation": "Tem certeza de que deseja excluir \"{{itemName}}\"? Esta ação não pode ser desfeita.",
"proBanner": { "proBanner": {
"manageDyadPro": "Gerenciar Dyad Pro", "manageDyadPro": "Gerenciar bit-PM Pro",
"alreadyHavePro": "Já tem o Dyad Pro? Adicione sua chave", "alreadyHavePro": "Já tem o bit-PM Pro? Adicione sua chave",
"accessLeadingModels": "Acesse os melhores modelos de IA com um único plano", "accessLeadingModels": "Acesse os melhores modelos de IA com um único plano",
"getDyadPro": "Obtenha o Dyad Pro", "getDyadPro": "Obtenha o bit-PM Pro",
"upTo3xCheaper": "Até 3x mais barato", "upTo3xCheaper": "Até 3x mais barato",
"byUsingSmartContext": "usando o Contexto Inteligente", "byUsingSmartContext": "usando o Contexto Inteligente",
"generateCode4x": "Gere código 4-10x mais rápido", "generateCode4x": "Gere código 4-10x mais rápido",
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
}, },
"setup": { "setup": {
"buildNewApp": "Criar um novo app", "buildNewApp": "Criar um novo app",
"setupDyad": "Configurar Dyad", "setupDyad": "Configurar bit-PM",
"installNodeJs": "1. Instalar Node.js (Runtime do App)", "installNodeJs": "1. Instalar Node.js (Runtime do App)",
"errorCheckingNode": "Erro ao verificar o status do Node.js. Tente instalar o Node.js.", "errorCheckingNode": "Erro ao verificar o status do Node.js. Tente instalar o Node.js.",
"nodeInstalled": "Node.js ({{version}}) instalado.", "nodeInstalled": "Node.js ({{version}}) instalado.",
...@@ -86,12 +86,12 @@ ...@@ -86,12 +86,12 @@
"installNodeRuntime": "Instalar Runtime do Node.js", "installNodeRuntime": "Instalar Runtime do Node.js",
"checkingNodeSetup": "Verificando configuração do Node.js...", "checkingNodeSetup": "Verificando configuração do Node.js...",
"continueInstalled": "Continuar | Instalei o Node.js", "continueInstalled": "Continuar | Instalei o Node.js",
"nodeNotDetected": "Node.js não detectado. Fechar e reabrir o Dyad geralmente resolve isso.", "nodeNotDetected": "Node.js não detectado. Fechar e reabrir o bit-PM geralmente resolve isso.",
"setupAiAccess": "2. Configurar Acesso à IA", "setupAiAccess": "2. Configurar Acesso à IA",
"notSureWatchVideo": "Não sabe o que fazer? Assista ao vídeo de introdução acima", "notSureWatchVideo": "Não sabe o que fazer? Assista ao vídeo de introdução acima",
"setupGeminiApiKey": "Configurar Chave de API do Google Gemini", "setupGeminiApiKey": "Configurar Chave de API do Google Gemini",
"setupOpenRouterApiKey": "Configurar Chave de API do OpenRouter", "setupOpenRouterApiKey": "Configurar Chave de API do OpenRouter",
"setupDyadPro": "Configurar Dyad Pro", "setupDyadPro": "Configurar bit-PM Pro",
"accessAllModels": "Acesse todos os modelos de IA com um único plano", "accessAllModels": "Acesse todos os modelos de IA com um único plano",
"setupOtherProviders": "Configurar outros provedores", "setupOtherProviders": "Configurar outros provedores",
"openAiAnthropicMore": "OpenAI, Anthropic e mais", "openAiAnthropicMore": "OpenAI, Anthropic e mais",
...@@ -139,10 +139,10 @@ ...@@ -139,10 +139,10 @@
"contentPlaceholder": "Conteúdo" "contentPlaceholder": "Conteúdo"
}, },
"help": { "help": {
"needHelp": "Precisa de ajuda com o Dyad?", "needHelp": "Precisa de ajuda com o bit-PM?",
"helpOptions": "Se precisar de ajuda ou quiser reportar um problema, aqui estão algumas opções:", "helpOptions": "Se precisar de ajuda ou quiser reportar um problema, aqui estão algumas opções:",
"chatWithHelpBot": "Conversar com o bot de ajuda do Dyad (Pro)", "chatWithHelpBot": "Conversar com o bot de ajuda do bit-PM (Pro)",
"helpBotDescription": "Abre um assistente de chat de ajuda no app que pesquisa a documentação do Dyad.", "helpBotDescription": "Abre um assistente de chat de ajuda no app que pesquisa a documentação do bit-PM.",
"openDocs": "Abrir Documentação", "openDocs": "Abrir Documentação",
"openDocsDescription": "Obtenha ajuda com perguntas e problemas comuns.", "openDocsDescription": "Obtenha ajuda com perguntas e problemas comuns.",
"reportBug": "Reportar um Bug", "reportBug": "Reportar um Bug",
...@@ -151,8 +151,8 @@ ...@@ -151,8 +151,8 @@
"uploadChatSession": "Enviar Sessão de Chat", "uploadChatSession": "Enviar Sessão de Chat",
"uploadChatDescription": "Compartilhe logs de chat e código para solução de problemas. Os dados são usados apenas para resolver seu problema e excluídos automaticamente após um tempo limitado.", "uploadChatDescription": "Compartilhe logs de chat e código para solução de problemas. Os dados são usados apenas para resolver seu problema e excluídos automaticamente após um tempo limitado.",
"preparingUpload": "Preparando Envio...", "preparingUpload": "Preparando Envio...",
"helpBotTitle": "Bot de Ajuda do Dyad", "helpBotTitle": "Bot de Ajuda do bit-PM",
"askQuestion": "Faça uma pergunta sobre o uso do Dyad.", "askQuestion": "Faça uma pergunta sobre o uso do bit-PM.",
"conversationLogged": "Esta conversa pode ser registrada e usada para melhorar o produto. Por favor, não insira informações sensíveis aqui.", "conversationLogged": "Esta conversa pode ser registrada e usada para melhorar o produto. Por favor, não insira informações sensíveis aqui.",
"typeQuestion": "Digite sua pergunta...", "typeQuestion": "Digite sua pergunta...",
"sending": "Enviando...", "sending": "Enviando...",
...@@ -168,7 +168,7 @@ ...@@ -168,7 +168,7 @@
"assistant": "Assistente", "assistant": "Assistente",
"codebaseSnapshot": "Snapshot da Base de Código", "codebaseSnapshot": "Snapshot da Base de Código",
"systemInformation": "Informações do Sistema", "systemInformation": "Informações do Sistema",
"dyadVersion": "Versão do Dyad:", "dyadVersion": "Versão do bit-PM:",
"platform": "Plataforma:", "platform": "Plataforma:",
"architecture": "Arquitetura:", "architecture": "Arquitetura:",
"nodeVersion": "Versão do Node:", "nodeVersion": "Versão do Node:",
...@@ -333,8 +333,8 @@ ...@@ -333,8 +333,8 @@
"addToChat": "Adicionar ao Chat", "addToChat": "Adicionar ao Chat",
"closeAnnotator": "Fechar Anotador", "closeAnnotator": "Fechar Anotador",
"proFeatureTitle": "O Anotador é um Recurso Pro", "proFeatureTitle": "O Anotador é um Recurso Pro",
"proFeatureDescription": "Desbloqueie a capacidade de anotar capturas de tela e aprimore seu fluxo de trabalho com o Dyad Pro.", "proFeatureDescription": "Desbloqueie a capacidade de anotar capturas de tela e aprimore seu fluxo de trabalho com o bit-PM Pro.",
"getDyadPro": "Obtenha o Dyad Pro" "getDyadPro": "Obtenha o bit-PM Pro"
} }
}, },
"integrations": { "integrations": {
......
...@@ -81,10 +81,10 @@ ...@@ -81,10 +81,10 @@
"errorLoadingSettings": "Erro ao Carregar Configurações", "errorLoadingSettings": "Erro ao Carregar Configurações",
"couldNotLoadProvider": "Não foi possível carregar os dados do provedor: {{message}}", "couldNotLoadProvider": "Não foi possível carregar os dados do provedor: {{message}}",
"couldNotLoadSettings": "Não foi possível carregar os dados de configuração: {{message}}", "couldNotLoadSettings": "Não foi possível carregar os dados de configuração: {{message}}",
"enableDyadPro": "Ativar Dyad Pro", "enableDyadPro": "Ativar bit-PM Pro",
"toggleDyadPro": "Alternar para ativar o Dyad Pro", "toggleDyadPro": "Alternar para ativar o bit-PM Pro",
"apiKeyEmpty": "A Chave de API não pode estar vazia.", "apiKeyEmpty": "A Chave de API não pode estar vazia.",
"errorTogglingPro": "Erro ao alternar Dyad Pro: {{error}}", "errorTogglingPro": "Erro ao alternar bit-PM Pro: {{error}}",
"failedSaveApiKey": "Falha ao salvar a chave de API.", "failedSaveApiKey": "Falha ao salvar a chave de API.",
"failedDeleteApiKey": "Falha ao excluir a chave de API." "failedDeleteApiKey": "Falha ao excluir a chave de API."
}, },
...@@ -168,7 +168,7 @@ ...@@ -168,7 +168,7 @@
}, },
"azure": { "azure": {
"configured": "Azure OpenAI Configurado", "configured": "Azure OpenAI Configurado",
"configuredDescription": "O Dyad usará as credenciais salvas nas Configurações para os modelos Azure OpenAI.", "configuredDescription": "O bit-PM usará as credenciais salvas nas Configurações para os modelos Azure OpenAI.",
"usingEnvVars": "Usando Variáveis de Ambiente", "usingEnvVars": "Usando Variáveis de Ambiente",
"usingEnvVarsDescription": "AZURE_API_KEY e AZURE_RESOURCE_NAME estão definidas. Os valores salvos abaixo as substituirão.", "usingEnvVarsDescription": "AZURE_API_KEY e AZURE_RESOURCE_NAME estão definidas. Os valores salvos abaixo as substituirão.",
"configRequired": "Configuração do Azure OpenAI Necessária", "configRequired": "Configuração do Azure OpenAI Necessária",
...@@ -183,8 +183,8 @@ ...@@ -183,8 +183,8 @@
"configNeededDescription": "As requisições do Azure OpenAI exigem um nome de recurso e uma chave de API. Insira-os acima ou forneça as variáveis de ambiente.", "configNeededDescription": "As requisições do Azure OpenAI exigem um nome de recurso e uma chave de API. Insira-os acima ou forneça as variáveis de ambiente.",
"saveError": "Erro ao Salvar", "saveError": "Erro ao Salvar",
"envVarsOptional": "Variáveis de Ambiente (opcional)", "envVarsOptional": "Variáveis de Ambiente (opcional)",
"envVarsHelpText": "Você pode continuar configurando o Azure via variáveis de ambiente. Se ambas as variáveis estiverem presentes e nenhuma configuração estiver salva, o Dyad as usará automaticamente.", "envVarsHelpText": "Você pode continuar configurando o Azure via variáveis de ambiente. Se ambas as variáveis estiverem presentes e nenhuma configuração estiver salva, o bit-PM as usará automaticamente.",
"envVarsPrecedence": "Os valores salvos nas Configurações têm prioridade sobre as variáveis de ambiente. Reinicie o Dyad após alterar as variáveis de ambiente." "envVarsPrecedence": "Os valores salvos nas Configurações têm prioridade sobre as variáveis de ambiente. Reinicie o bit-PM após alterar as variáveis de ambiente."
}, },
"vertex": { "vertex": {
"projectId": "ID do Projeto", "projectId": "ID do Projeto",
...@@ -258,6 +258,6 @@ ...@@ -258,6 +258,6 @@
"updateProvider": "Atualizar Provedor", "updateProvider": "Atualizar Provedor",
"failedCreate": "Falha ao criar provedor personalizado" "failedCreate": "Falha ao criar provedor personalizado"
}, },
"manageDyadPro": "Gerenciar Assinatura Dyad Pro", "manageDyadPro": "Gerenciar Assinatura bit-PM Pro",
"setupDyadPro": "Configurar Assinatura Dyad Pro" "setupDyadPro": "Configurar Assinatura bit-PM Pro"
} }
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
"deleteChatNote": "注意:已接受的代码更改将被保留。", "deleteChatNote": "注意:已接受的代码更改将被保留。",
"scrollToBottom": "滚动到底部", "scrollToBottom": "滚动到底部",
"dismissError": "忽略错误", "dismissError": "忽略错误",
"askDyadToBuild": "让 Dyad 来构建...", "askDyadToBuild": "让 bit-PM 来构建...",
"voiceToText": "语音转文字", "voiceToText": "语音转文字",
"voiceToTextPro": "语音转文字(Pro)", "voiceToTextPro": "语音转文字(Pro)",
"voiceToTextRequiresPro": "语音转文字(需要 Pro)", "voiceToTextRequiresPro": "语音转文字(需要 Pro)",
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
"total": "总计", "total": "总计",
"failedCountTokens": "令牌计数失败", "failedCountTokens": "令牌计数失败",
"optimizeTokens": "通过以下方式优化您的令牌", "optimizeTokens": "通过以下方式优化您的令牌",
"dyadProSmartContext": "Dyad Pro 的智能上下文", "dyadProSmartContext": "bit-PM Pro 的智能上下文",
"attachFiles": "附加文件", "attachFiles": "附加文件",
"themes": "主题", "themes": "主题",
"noTheme": "无主题", "noTheme": "无主题",
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
"otherProviders": "其他 AI 提供商", "otherProviders": "其他 AI 提供商",
"providerCount_one": "{{count}} 个提供商", "providerCount_one": "{{count}} 个提供商",
"providerCount_other": "{{count}} 个提供商", "providerCount_other": "{{count}} 个提供商",
"dyadTurbo": "Dyad Turbo", "dyadTurbo": "bit-PM Turbo",
"modelCount_one": "{{count}} 个模型", "modelCount_one": "{{count}} 个模型",
"modelCount_other": "{{count}} 个模型", "modelCount_other": "{{count}} 个模型",
"providerModels": "{{name}} 模型", "providerModels": "{{name}} 模型",
...@@ -196,29 +196,29 @@ ...@@ -196,29 +196,29 @@
"versionCount": "版本 {{count}}" "versionCount": "版本 {{count}}"
}, },
"errorBox": { "errorBox": {
"accessWithDyadPro": "使用 Dyad Pro 访问", "accessWithDyadPro": "使用 bit-PM Pro 访问",
"orSwitchModel": "或切换到其他模型。", "orSwitchModel": "或切换到其他模型。",
"upgradeToDyadPro": "升级到 Dyad Pro", "upgradeToDyadPro": "升级到 bit-PM Pro",
"troubleshootingGuide": "故障排除指南", "troubleshootingGuide": "故障排除指南",
"invalidProKey": "您似乎没有有效的 Dyad Pro 密钥。", "invalidProKey": "您似乎没有有效的 bit-PM Pro 密钥。",
"today": "今天。", "today": "今天。",
"creditsUsed": "您本月的 Dyad AI 额度已用完。", "creditsUsed": "您本月的 bit-PM AI 额度已用完。",
"reloadOrUpgrade": "重新加载或升级您的订阅", "reloadOrUpgrade": "重新加载或升级您的订阅",
"getMoreCredits": "获取更多 AI 额度", "getMoreCredits": "获取更多 AI 额度",
"readDocs": "阅读文档" "readDocs": "阅读文档"
}, },
"promo": { "promo": {
"tiredOfWaiting": "厌倦了等待 AI?", "tiredOfWaiting": "厌倦了等待 AI?",
"getDyadPro": "获取 Dyad Pro", "getDyadPro": "获取 bit-PM Pro",
"fasterEdits": "使用 Turbo Edits 实现更快的编辑。", "fasterEdits": "使用 Turbo Edits 实现更快的编辑。",
"saveOnCosts": "使用以下功能节省高达 3 倍的 AI 成本", "saveOnCosts": "使用以下功能节省高达 3 倍的 AI 成本",
"debuggingLoop": "陷入调试循环?尝试换一个模型。", "debuggingLoop": "陷入调试循环?尝试换一个模型。",
"joinBuilders": "加入 600 多名开发者,访问", "joinBuilders": "加入 600 多名开发者,访问",
"dyadSubreddit": "Dyad 论坛", "dyadSubreddit": "bit-PM 论坛",
"foundBug": "发现了 Bug?点击「帮助」>「报告 Bug」", "foundBug": "发现了 Bug?点击「帮助」>「报告 Bug」",
"reportBadResponse": "想要报告不良的 AI 回复?点击「帮助」上传聊天", "reportBadResponse": "想要报告不良的 AI 回复?点击「帮助」上传聊天",
"watch": "观看", "watch": "观看",
"creatorBuildApp": "Dyad 创建者一步步构建圣经应用", "creatorBuildApp": "bit-PM 创建者一步步构建圣经应用",
"gettingStuck": "遇到困难?阅读我们的", "gettingStuck": "遇到困难?阅读我们的",
"debuggingTips": "调试技巧", "debuggingTips": "调试技巧",
"advancedTip": "高级技巧:自定义您的", "advancedTip": "高级技巧:自定义您的",
...@@ -226,7 +226,7 @@ ...@@ -226,7 +226,7 @@
"keepFocused": "想让 AI 更专注?开始新聊天。", "keepFocused": "想让 AI 更专注?开始新聊天。",
"whatsNext": "想知道接下来有什么?查看我们的", "whatsNext": "想知道接下来有什么?查看我们的",
"roadmap": "路线图", "roadmap": "路线图",
"likeDyad": "喜欢 Dyad?在 GitHub 上给个 Star", "likeDyad": "喜欢 bit-PM?在 GitHub 上给个 Star",
"gitHub": "GitHub" "gitHub": "GitHub"
}, },
"consent": { "consent": {
......
...@@ -35,14 +35,14 @@ ...@@ -35,14 +35,14 @@
"installCommandPlaceholder": "pnpm install", "installCommandPlaceholder": "pnpm install",
"startCommandPlaceholder": "pnpm dev", "startCommandPlaceholder": "pnpm dev",
"bothCommandsRequired": "自定义时两个命令都是必填的。", "bothCommandsRequired": "自定义时两个命令都是必填的。",
"aiRulesTooltip": "AI_RULES.md 会告诉 Dyad 在编辑此应用时应使用哪种技术栈", "aiRulesTooltip": "AI_RULES.md 会告诉 bit-PM 在编辑此应用时应使用哪种技术栈",
"noAiRulesFound": "未找到 AI_RULES.md。导入后 Dyad 将自动生成一个。", "noAiRulesFound": "未找到 AI_RULES.md。导入后 bit-PM 将自动生成一个。",
"importingApp": "正在导入应用...", "importingApp": "正在导入应用...",
"import": "导入", "import": "导入",
"noRepositoriesFound": "未找到仓库", "noRepositoriesFound": "未找到仓库",
"repositoryUrl": "仓库 URL", "repositoryUrl": "仓库 URL",
"repositoryUrlPlaceholder": "https://github.com/user/repo.git", "repositoryUrlPlaceholder": "https://github.com/user/repo.git",
"appImportedWithRules": "应用导入成功。Dyad 将自动生成 AI_RULES.md。", "appImportedWithRules": "应用导入成功。bit-PM 将自动生成 AI_RULES.md。",
"appImported": "应用导入成功", "appImported": "应用导入成功",
"successfullyImported": "成功导入 {{name}}", "successfullyImported": "成功导入 {{name}}",
"failedFetchRepos": "获取仓库失败。", "failedFetchRepos": "获取仓库失败。",
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
"cpu": "CPU:", "cpu": "CPU:",
"systemMetrics": "系统指标", "systemMetrics": "系统指标",
"communityCodeNotice": "社区代码通知", "communityCodeNotice": "社区代码通知",
"communityCodeWarning": "此代码由 Dyad 社区成员创建,并非我们的核心团队。", "communityCodeWarning": "此代码由 bit-PM 社区成员创建,并非我们的核心团队。",
"communityCodeRisk": "社区代码可能非常有用,但由于是独立构建的,可能存在缺陷、安全风险或导致系统问题。如果出现问题,我们无法提供官方支持。", "communityCodeRisk": "社区代码可能非常有用,但由于是独立构建的,可能存在缺陷、安全风险或导致系统问题。如果出现问题,我们无法提供官方支持。",
"communityCodeReview": "我们建议先在 GitHub 上查看代码。只有在您了解这些风险后再继续。", "communityCodeReview": "我们建议先在 GitHub 上查看代码。只有在您了解这些风险后再继续。",
"apps": { "apps": {
...@@ -95,10 +95,10 @@ ...@@ -95,10 +95,10 @@
"deleteItemTitle": "删除{{itemType}}", "deleteItemTitle": "删除{{itemType}}",
"deleteItemConfirmation": "确定要删除「{{itemName}}」吗?此操作无法撤销。", "deleteItemConfirmation": "确定要删除「{{itemName}}」吗?此操作无法撤销。",
"proBanner": { "proBanner": {
"manageDyadPro": "管理 Dyad Pro", "manageDyadPro": "管理 bit-PM Pro",
"alreadyHavePro": "已有 Dyad Pro?添加您的密钥", "alreadyHavePro": "已有 bit-PM Pro?添加您的密钥",
"accessLeadingModels": "一个计划即可访问领先的 AI 模型", "accessLeadingModels": "一个计划即可访问领先的 AI 模型",
"getDyadPro": "获取 Dyad Pro", "getDyadPro": "获取 bit-PM Pro",
"upTo3xCheaper": "便宜高达 3 倍", "upTo3xCheaper": "便宜高达 3 倍",
"byUsingSmartContext": "通过使用智能上下文", "byUsingSmartContext": "通过使用智能上下文",
"generateCode4x": "代码生成速度提升 4-10 倍", "generateCode4x": "代码生成速度提升 4-10 倍",
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
}, },
"setup": { "setup": {
"buildNewApp": "构建新应用", "buildNewApp": "构建新应用",
"setupDyad": "设置 Dyad", "setupDyad": "设置 bit-PM",
"installNodeJs": "1. 安装 Node.js(应用运行时)", "installNodeJs": "1. 安装 Node.js(应用运行时)",
"errorCheckingNode": "检查 Node.js 状态出错。请尝试安装 Node.js。", "errorCheckingNode": "检查 Node.js 状态出错。请尝试安装 Node.js。",
"nodeInstalled": "Node.js ({{version}}) 已安装。", "nodeInstalled": "Node.js ({{version}}) 已安装。",
...@@ -124,12 +124,12 @@ ...@@ -124,12 +124,12 @@
"installNodeRuntime": "安装 Node.js 运行时", "installNodeRuntime": "安装 Node.js 运行时",
"checkingNodeSetup": "正在检查 Node.js 设置...", "checkingNodeSetup": "正在检查 Node.js 设置...",
"continueInstalled": "继续 | 我已安装 Node.js", "continueInstalled": "继续 | 我已安装 Node.js",
"nodeNotDetected": "未检测到 Node.js。关闭并重新打开 Dyad 通常可以解决此问题。", "nodeNotDetected": "未检测到 Node.js。关闭并重新打开 bit-PM 通常可以解决此问题。",
"setupAiAccess": "2. 设置 AI 访问", "setupAiAccess": "2. 设置 AI 访问",
"notSureWatchVideo": "不确定该怎么做?观看上方的入门视频", "notSureWatchVideo": "不确定该怎么做?观看上方的入门视频",
"setupGeminiApiKey": "设置 Google Gemini API 密钥", "setupGeminiApiKey": "设置 Google Gemini API 密钥",
"setupOpenRouterApiKey": "设置 OpenRouter API 密钥", "setupOpenRouterApiKey": "设置 OpenRouter API 密钥",
"setupDyadPro": "设置 Dyad Pro", "setupDyadPro": "设置 bit-PM Pro",
"accessAllModels": "一个计划即可访问所有 AI 模型", "accessAllModels": "一个计划即可访问所有 AI 模型",
"setupOtherProviders": "设置其他 AI 提供商", "setupOtherProviders": "设置其他 AI 提供商",
"openAiAnthropicMore": "OpenAI、Anthropic 等", "openAiAnthropicMore": "OpenAI、Anthropic 等",
...@@ -177,10 +177,10 @@ ...@@ -177,10 +177,10 @@
"contentPlaceholder": "内容" "contentPlaceholder": "内容"
}, },
"help": { "help": {
"needHelp": "需要 Dyad 帮助?", "needHelp": "需要 bit-PM 帮助?",
"helpOptions": "如果您需要帮助或想报告问题,以下是一些选项:", "helpOptions": "如果您需要帮助或想报告问题,以下是一些选项:",
"chatWithHelpBot": "与 Dyad 帮助机器人聊天 (Pro)", "chatWithHelpBot": "与 bit-PM 帮助机器人聊天 (Pro)",
"helpBotDescription": "打开应用内帮助聊天助手,搜索 Dyad 文档。", "helpBotDescription": "打开应用内帮助聊天助手,搜索 bit-PM 文档。",
"openDocs": "打开文档", "openDocs": "打开文档",
"openDocsDescription": "获取常见问题的帮助。", "openDocsDescription": "获取常见问题的帮助。",
"reportBug": "报告 Bug", "reportBug": "报告 Bug",
...@@ -189,8 +189,8 @@ ...@@ -189,8 +189,8 @@
"uploadChatSession": "上传聊天会话", "uploadChatSession": "上传聊天会话",
"uploadChatDescription": "分享聊天日志和代码以进行故障排除。数据仅用于解决您的问题,并在限定时间后自动删除。", "uploadChatDescription": "分享聊天日志和代码以进行故障排除。数据仅用于解决您的问题,并在限定时间后自动删除。",
"preparingUpload": "正在准备上传...", "preparingUpload": "正在准备上传...",
"helpBotTitle": "Dyad 帮助机器人", "helpBotTitle": "bit-PM 帮助机器人",
"askQuestion": "关于使用 Dyad 的问题。", "askQuestion": "关于使用 bit-PM 的问题。",
"conversationLogged": "此对话可能会被记录并用于改进产品。请勿在此输入敏感信息。", "conversationLogged": "此对话可能会被记录并用于改进产品。请勿在此输入敏感信息。",
"typeQuestion": "输入您的问题...", "typeQuestion": "输入您的问题...",
"sending": "发送中...", "sending": "发送中...",
...@@ -206,7 +206,7 @@ ...@@ -206,7 +206,7 @@
"assistant": "助手", "assistant": "助手",
"codebaseSnapshot": "代码库快照", "codebaseSnapshot": "代码库快照",
"systemInformation": "系统信息", "systemInformation": "系统信息",
"dyadVersion": "Dyad 版本:", "dyadVersion": "bit-PM 版本:",
"platform": "平台:", "platform": "平台:",
"architecture": "架构:", "architecture": "架构:",
"nodeVersion": "Node 版本:", "nodeVersion": "Node 版本:",
...@@ -371,8 +371,8 @@ ...@@ -371,8 +371,8 @@
"addToChat": "添加到聊天", "addToChat": "添加到聊天",
"closeAnnotator": "关闭标注器", "closeAnnotator": "关闭标注器",
"proFeatureTitle": "标注器是 Pro 功能", "proFeatureTitle": "标注器是 Pro 功能",
"proFeatureDescription": "解锁截图标注功能,使用 Dyad Pro 提升您的工作流程。", "proFeatureDescription": "解锁截图标注功能,使用 bit-PM Pro 提升您的工作流程。",
"getDyadPro": "获取 Dyad Pro" "getDyadPro": "获取 bit-PM Pro"
} }
}, },
"integrations": { "integrations": {
......
...@@ -81,10 +81,10 @@ ...@@ -81,10 +81,10 @@
"errorLoadingSettings": "加载设置出错", "errorLoadingSettings": "加载设置出错",
"couldNotLoadProvider": "无法加载提供商数据:{{message}}", "couldNotLoadProvider": "无法加载提供商数据:{{message}}",
"couldNotLoadSettings": "无法加载配置数据:{{message}}", "couldNotLoadSettings": "无法加载配置数据:{{message}}",
"enableDyadPro": "启用 Dyad Pro", "enableDyadPro": "启用 bit-PM Pro",
"toggleDyadPro": "切换以启用 Dyad Pro", "toggleDyadPro": "切换以启用 bit-PM Pro",
"apiKeyEmpty": "API 密钥不能为空。", "apiKeyEmpty": "API 密钥不能为空。",
"errorTogglingPro": "切换 Dyad Pro 时出错:{{error}}", "errorTogglingPro": "切换 bit-PM Pro 时出错:{{error}}",
"failedSaveApiKey": "保存 API 密钥失败。", "failedSaveApiKey": "保存 API 密钥失败。",
"failedDeleteApiKey": "删除 API 密钥失败。" "failedDeleteApiKey": "删除 API 密钥失败。"
}, },
...@@ -168,7 +168,7 @@ ...@@ -168,7 +168,7 @@
}, },
"azure": { "azure": {
"configured": "Azure OpenAI 已配置", "configured": "Azure OpenAI 已配置",
"configuredDescription": "Dyad 将使用设置中保存的凭据来访问 Azure OpenAI 模型。", "configuredDescription": "bit-PM 将使用设置中保存的凭据来访问 Azure OpenAI 模型。",
"usingEnvVars": "使用环境变量", "usingEnvVars": "使用环境变量",
"usingEnvVarsDescription": "AZURE_API_KEY 和 AZURE_RESOURCE_NAME 已设置。下方保存的值将覆盖它们。", "usingEnvVarsDescription": "AZURE_API_KEY 和 AZURE_RESOURCE_NAME 已设置。下方保存的值将覆盖它们。",
"configRequired": "需要配置 Azure OpenAI", "configRequired": "需要配置 Azure OpenAI",
...@@ -183,8 +183,8 @@ ...@@ -183,8 +183,8 @@
"configNeededDescription": "Azure OpenAI 请求需要资源名称和 API 密钥。请在上方输入,或提供环境变量。", "configNeededDescription": "Azure OpenAI 请求需要资源名称和 API 密钥。请在上方输入,或提供环境变量。",
"saveError": "保存错误", "saveError": "保存错误",
"envVarsOptional": "环境变量(可选)", "envVarsOptional": "环境变量(可选)",
"envVarsHelpText": "您可以继续通过环境变量配置 Azure。如果两个变量都存在且未保存设置,Dyad 将自动使用它们。", "envVarsHelpText": "您可以继续通过环境变量配置 Azure。如果两个变量都存在且未保存设置,bit-PM 将自动使用它们。",
"envVarsPrecedence": "设置中保存的值优先于环境变量。更改环境变量后请重启 Dyad。" "envVarsPrecedence": "设置中保存的值优先于环境变量。更改环境变量后请重启 bit-PM。"
}, },
"vertex": { "vertex": {
"projectId": "项目 ID", "projectId": "项目 ID",
...@@ -258,6 +258,6 @@ ...@@ -258,6 +258,6 @@
"updateProvider": "更新提供商", "updateProvider": "更新提供商",
"failedCreate": "创建自定义提供商失败" "failedCreate": "创建自定义提供商失败"
}, },
"manageDyadPro": "管理 Dyad Pro 订阅", "manageDyadPro": "管理 bit-PM Pro 订阅",
"setupDyadPro": "设置 Dyad Pro 订阅" "setupDyadPro": "设置 bit-PM Pro 订阅"
} }
...@@ -106,7 +106,7 @@ export const SETTINGS_SEARCH_INDEX: SearchableSettingItem[] = [ ...@@ -106,7 +106,7 @@ export const SETTINGS_SEARCH_INDEX: SearchableSettingItem[] = [
id: SETTING_IDS.customAppsFolder, id: SETTING_IDS.customAppsFolder,
label: "Customize Apps Folder", label: "Customize Apps Folder",
description: description:
"Set the top-level folder that Dyad will store new applications in", "Set the top-level folder that bit-PM will store new applications in",
keywords: ["customize", "apps", "path", "folder", "directory", "dyad-apps"], keywords: ["customize", "apps", "path", "folder", "directory", "dyad-apps"],
sectionId: SECTION_IDS.general, sectionId: SECTION_IDS.general,
sectionLabel: "General", sectionLabel: "General",
......
...@@ -146,7 +146,7 @@ export const showExtraFilesToast = ({ ...@@ -146,7 +146,7 @@ export const showExtraFilesToast = ({
}) => { }) => {
if (error) { if (error) {
showError( showError(
`Error committing files ${files.join(", ")} changed outside of Dyad: ${error}`, `Error committing files ${files.join(", ")} changed outside of bit-PM: ${error}`,
); );
posthog.capture("extra-files:error", { posthog.capture("extra-files:error", {
files: files, files: files,
...@@ -154,7 +154,7 @@ export const showExtraFilesToast = ({ ...@@ -154,7 +154,7 @@ export const showExtraFilesToast = ({
}); });
} else { } else {
showWarning( showWarning(
`Files changed outside of Dyad have automatically been committed: `Files changed outside of bit-PM have automatically been committed:
\n\n${files.join("\n")}`, \n\n${files.join("\n")}`,
); );
posthog.capture("extra-files:warning", { posthog.capture("extra-files:warning", {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论