From ba4702b99b2c80371ab4811e9fdf7680b1b30ebb Mon Sep 17 00:00:00 2001 From: Che <30403707+Che-Zhu@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:39:57 +0800 Subject: [PATCH 1/3] Refactor: Replace Lucide icons with Material Design icons --- CONTRIBUTING.md | 4 ++-- app/(auth)/auth-error/page.tsx | 12 +++++----- app/(auth)/login/page.tsx | 7 +++--- app/(dashboard)/projects/[id]/auth/page.tsx | 10 ++++---- app/(dashboard)/projects/[id]/github/page.tsx | 15 ++++++------ .../projects/[id]/payment/page.tsx | 6 ++--- app/error.tsx | 8 +++---- app/not-found.tsx | 8 +++---- components/config/env-var-section.tsx | 24 ++++++++++++------- components/dialog/create-project-dialog.tsx | 4 ++-- components/dialog/settings-dialog.tsx | 19 ++++++++------- .../features/projectList/EmptyProjectCard.tsx | 4 ++-- .../features/projectList/ProjectCard.tsx | 4 ++-- .../projectList/ProjectCardDropdown.tsx | 14 +++++------ .../projectList/ProjectListHeader.tsx | 6 ++--- components/layout/repo-status-indicator.tsx | 10 ++++---- components/sidebars/project-sidebar.tsx | 5 ++-- components/terminal/terminal-display.tsx | 8 +++---- components/terminal/toolbar/app-runner.tsx | 8 +++---- .../terminal/toolbar/directory-selector.tsx | 10 ++++---- .../terminal/toolbar/network-dialog.tsx | 10 ++++---- components/terminal/toolbar/terminal-tabs.tsx | 8 +++---- components/terminal/toolbar/toolbar.tsx | 4 ++-- components/terminal/xterm-terminal.tsx | 4 ++-- package.json | 9 ++++++- 25 files changed, 120 insertions(+), 101 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 45469a2..4c5156c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,8 +43,8 @@ By participating in this project, you agree to abide by our Code of Conduct. Ple 4. **Test Your Changes** ```bash - npm test - npm run lint + pnpm test + pnpm run lint ``` 5. **Commit Your Changes** diff --git a/app/(auth)/auth-error/page.tsx b/app/(auth)/auth-error/page.tsx index 631b566..08b90b9 100644 --- a/app/(auth)/auth-error/page.tsx +++ b/app/(auth)/auth-error/page.tsx @@ -1,7 +1,7 @@ 'use client'; import { Suspense } from 'react'; -import { AlertCircle, ArrowLeft, Home, RefreshCw } from 'lucide-react'; +import { MdArrowBack, MdErrorOutline, MdHome, MdRefresh } from 'react-icons/md'; import Link from 'next/link'; import { useSearchParams } from 'next/navigation'; @@ -47,7 +47,7 @@ function ErrorContent() { {/* Error Header - VSCode style */}
- +

{errorDetails.title}

@@ -71,7 +71,7 @@ function ErrorContent() { size="lg" className="w-full bg-blue-600 hover:bg-blue-700 text-white justify-start gap-3 rounded-md" > - + Try Again @@ -81,7 +81,7 @@ function ErrorContent() { variant="outline" className="w-full border-gray-700 text-gray-300 hover:bg-gray-900 hover:text-white justify-start gap-3 rounded-md" > - + Go to Home @@ -91,7 +91,7 @@ function ErrorContent() { variant="ghost" className="w-full text-gray-400 hover:text-white hover:bg-gray-900 justify-start gap-3 rounded-md" > - + Back to Projects @@ -116,7 +116,7 @@ export default function ErrorPage() {
- +
diff --git a/app/(auth)/login/page.tsx b/app/(auth)/login/page.tsx index afbc75f..c060920 100644 --- a/app/(auth)/login/page.tsx +++ b/app/(auth)/login/page.tsx @@ -1,7 +1,8 @@ 'use client'; import { useState } from 'react'; -import { Github, User } from 'lucide-react'; +import { FaGithub } from 'react-icons/fa'; +import { MdPerson } from 'react-icons/md'; import { useRouter } from 'next/navigation'; import { signIn } from 'next-auth/react'; @@ -96,7 +97,7 @@ export default function LoginPage() { className="w-full bg-primary hover:bg-primary-hover text-primary-foreground rounded-md" size="lg" > - + {isLoading ? 'Signing in...' : 'Sign in / Register'} @@ -121,7 +122,7 @@ export default function LoginPage() { size="lg" variant="outline" > - + Continue with GitHub diff --git a/app/(dashboard)/projects/[id]/auth/page.tsx b/app/(dashboard)/projects/[id]/auth/page.tsx index 7ab31ca..69e2053 100644 --- a/app/(dashboard)/projects/[id]/auth/page.tsx +++ b/app/(dashboard)/projects/[id]/auth/page.tsx @@ -5,8 +5,8 @@ 'use client'; -import { ExternalLink, Key } from 'lucide-react'; -import { Github } from 'lucide-react'; +import { FaGithub } from 'react-icons/fa'; +import { MdOpenInNew, MdVpnKey } from 'react-icons/md'; import { useParams } from 'next/navigation'; import { EnvVarSection } from '@/components/config/env-var-section'; @@ -97,7 +97,7 @@ function AuthPageContent() {
@@ -139,7 +139,7 @@ function AuthPageContent() { {/* NextAuth Configuration Section */}
- +

NextAuth Configuration

diff --git a/app/(dashboard)/projects/[id]/github/page.tsx b/app/(dashboard)/projects/[id]/github/page.tsx index 25b7de2..6fff018 100644 --- a/app/(dashboard)/projects/[id]/github/page.tsx +++ b/app/(dashboard)/projects/[id]/github/page.tsx @@ -1,7 +1,8 @@ 'use client'; import { useState } from 'react'; -import { ExternalLink, Github, Loader2, RefreshCw } from 'lucide-react'; +import { FaGithub } from 'react-icons/fa'; +import { MdOpenInNew, MdRefresh } from 'react-icons/md'; import { useParams, useRouter } from 'next/navigation'; import { toast } from 'sonner'; @@ -84,7 +85,7 @@ export default function GithubPage() { {/* Visual Header */}
- +

@@ -111,7 +112,7 @@ export default function GithubPage() { className="flex items-center gap-2 hover:underline text-primary hover:text-primary-hover font-mono text-sm break-all" > {project.githubRepo} - +

@@ -123,12 +124,12 @@ export default function GithubPage() { > {isCommitting ? ( <> - + Pushing... ) : ( <> - + Push Changes )} @@ -149,12 +150,12 @@ export default function GithubPage() { > {isInitializing ? ( <> - + Creating Repository... ) : ( <> - + Initialize & Push to GitHub )} diff --git a/app/(dashboard)/projects/[id]/payment/page.tsx b/app/(dashboard)/projects/[id]/payment/page.tsx index 381dad9..94e91eb 100644 --- a/app/(dashboard)/projects/[id]/payment/page.tsx +++ b/app/(dashboard)/projects/[id]/payment/page.tsx @@ -5,7 +5,7 @@ 'use client'; -import { ExternalLink } from 'lucide-react'; +import { MdOpenInNew } from 'react-icons/md'; import { useParams } from 'next/navigation'; import { EnvVarSection } from '@/components/config/env-var-section'; @@ -100,7 +100,7 @@ function PaymentPageContent() { className="text-xs text-primary hover:text-primary/80 flex items-center gap-1.5 transition-colors" > Stripe Dashboard - +
@@ -142,7 +142,7 @@ function PaymentPageContent() { className="text-xs text-primary hover:text-primary/80 flex items-center gap-1.5 transition-colors" > PayPal Developer - +
diff --git a/app/error.tsx b/app/error.tsx index 0b77ad4..69a9318 100644 --- a/app/error.tsx +++ b/app/error.tsx @@ -1,7 +1,7 @@ 'use client'; import { useEffect } from 'react'; -import { AlertCircle, Home,RefreshCw } from 'lucide-react'; +import { MdErrorOutline, MdHome, MdRefresh } from 'react-icons/md'; import Link from 'next/link'; import { Button } from '@/components/ui/button'; @@ -24,7 +24,7 @@ export default function Error({ {/* Error Header */}
- +

Something went wrong

@@ -52,7 +52,7 @@ export default function Error({ onClick={reset} className="w-full bg-blue-600 hover:bg-blue-700 text-white justify-start gap-3 rounded-md" > - + Try Again @@ -61,7 +61,7 @@ export default function Error({ variant="outline" className="w-full border-gray-700 text-gray-300 hover:bg-gray-900 hover:text-white justify-start gap-3 rounded-md" > - + Go to Home diff --git a/app/not-found.tsx b/app/not-found.tsx index 49ea5ce..28c0de1 100644 --- a/app/not-found.tsx +++ b/app/not-found.tsx @@ -1,4 +1,4 @@ -import { ArrowLeft,FileQuestion, Home } from 'lucide-react'; +import { MdArrowBack, MdHelpOutline, MdHome } from 'react-icons/md'; import Link from 'next/link'; import { Button } from '@/components/ui/button'; @@ -10,7 +10,7 @@ export default function NotFound() { {/* Header */}
- +

Page Not Found

@@ -36,7 +36,7 @@ export default function NotFound() { size="lg" className="w-full bg-blue-600 hover:bg-blue-700 text-white justify-start gap-3 rounded-md" > - + Go to Home @@ -46,7 +46,7 @@ export default function NotFound() { variant="outline" className="w-full border-gray-700 text-gray-300 hover:bg-gray-900 hover:text-white justify-start gap-3 rounded-md" > - + Back to Projects diff --git a/components/config/env-var-section.tsx b/components/config/env-var-section.tsx index 024d537..6eee7e9 100644 --- a/components/config/env-var-section.tsx +++ b/components/config/env-var-section.tsx @@ -7,7 +7,15 @@ 'use client'; import { useState } from 'react'; -import { Copy, Eye, EyeOff, Hash, Plus, Save, X } from 'lucide-react'; +import { + MdAdd, + MdClose, + MdContentCopy, + MdSave, + MdTag, + MdVisibility, + MdVisibilityOff, +} from 'react-icons/md'; import { toast } from 'sonner'; import { @@ -194,9 +202,9 @@ export function EnvVarSection({ onClick={() => handleCopyKey(variable.key)} className="flex items-center gap-1.5 text-xs bg-[#2d2d30] border border-[#3e3e42] px-2 py-0.5 rounded text-[#3794ff] font-mono hover:bg-[#37373d] hover:border-[#3794ff]/50 transition-colors cursor-pointer group" > - + {variable.key} - + @@ -247,9 +255,9 @@ export function EnvVarSection({ className="absolute right-2 top-1/2 -translate-y-1/2 text-[#858585] hover:text-[#cccccc]" > {showSecrets[index] ? ( - + ) : ( - + )} )} @@ -277,7 +285,7 @@ export function EnvVarSection({ disabled={!canUpdate || saving} className="text-[#858585] hover:text-[#f48771] opacity-0 group-hover:opacity-100 transition-opacity disabled:opacity-40 disabled:cursor-not-allowed" > - + )}
@@ -309,7 +317,7 @@ export function EnvVarSection({ size="sm" className="text-[#cccccc] hover:text-white hover:bg-[#37373d] h-8" > - + Add Variable )} @@ -322,7 +330,7 @@ export function EnvVarSection({ disabled={!canUpdate || saving || !hasChanges} className="bg-[#3794ff] hover:bg-[#4fc1ff] text-white h-8" > - + {saving ? 'Saving...' : 'Save Changes'}
diff --git a/components/dialog/create-project-dialog.tsx b/components/dialog/create-project-dialog.tsx index e81a9ce..3a371a8 100644 --- a/components/dialog/create-project-dialog.tsx +++ b/components/dialog/create-project-dialog.tsx @@ -8,7 +8,7 @@ 'use client'; import { useState } from 'react'; -import { Save } from 'lucide-react'; +import { MdSave } from 'react-icons/md'; import { useRouter } from 'next/navigation'; import { toast } from 'sonner'; @@ -137,7 +137,7 @@ export default function CreateProjectDialog({ open, onOpenChange }: CreateProjec disabled={isCreating || !projectName.trim()} className="bg-primary hover:bg-primary/90 text-primary-foreground disabled:opacity-50" > - + {isCreating ? 'Creating...' : 'Create Project'}
@@ -589,7 +590,7 @@ export default function SettingsDialog({ } className="bg-primary hover:bg-primary/90 text-primary-foreground" > - + {isAnthropicLoading ? 'Saving...' : 'Save Configuration'}
@@ -659,7 +660,7 @@ export default function SettingsDialog({ disabled={isGithubLoading} className="bg-primary hover:bg-primary/90 text-primary-foreground" > - + {isGithubLoading ? 'Connecting...' : 'Connect GitHub Account'}
diff --git a/components/features/projectList/EmptyProjectCard.tsx b/components/features/projectList/EmptyProjectCard.tsx index fcc4bd0..222a0e9 100644 --- a/components/features/projectList/EmptyProjectCard.tsx +++ b/components/features/projectList/EmptyProjectCard.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState } from 'react'; -import { Plus } from 'lucide-react'; +import { MdAdd } from 'react-icons/md'; import CreateProjectDialog from '@/components/dialog/create-project-dialog'; import { Card } from '@/components/ui/card'; @@ -22,7 +22,7 @@ export default function EmptyProjectCard() { onClick={() => setCreateModalOpen(true)} >
- +
Create new project diff --git a/components/features/projectList/ProjectCard.tsx b/components/features/projectList/ProjectCard.tsx index 9f1b69e..c38ceb0 100644 --- a/components/features/projectList/ProjectCard.tsx +++ b/components/features/projectList/ProjectCard.tsx @@ -6,7 +6,7 @@ import { memo } from 'react'; import type { Prisma } from '@prisma/client'; -import { Clock } from 'lucide-react'; +import { MdAccessTime } from 'react-icons/md'; import Link from 'next/link'; import { Badge } from '@/components/ui/badge'; @@ -70,7 +70,7 @@ const ProjectCard = memo(({ project }: ProjectCardProps) => {
- + {new Date(project.updatedAt).toLocaleDateString('en-US', { month: 'short', diff --git a/components/features/projectList/ProjectCardDropdown.tsx b/components/features/projectList/ProjectCardDropdown.tsx index 0a5379b..c4363d7 100644 --- a/components/features/projectList/ProjectCardDropdown.tsx +++ b/components/features/projectList/ProjectCardDropdown.tsx @@ -9,7 +9,7 @@ import { useState } from 'react'; import type { Prisma } from '@prisma/client'; -import { Loader2, MoreVertical, Play, Square, Trash2 } from 'lucide-react'; +import { MdDeleteOutline, MdMoreVert, MdPlayArrow, MdRefresh, MdStop } from 'react-icons/md'; import { AlertDialog, @@ -66,7 +66,7 @@ export default function ProjectCardDropdown({ project }: ProjectCardDropdownProp className="h-8 w-8" onClick={(e) => e.stopPropagation()} > - + Open menu @@ -81,12 +81,12 @@ export default function ProjectCardDropdown({ project }: ProjectCardDropdownProp > {loading === 'START' ? ( <> - + Starting... ) : ( <> - + Start )} @@ -102,12 +102,12 @@ export default function ProjectCardDropdown({ project }: ProjectCardDropdownProp > {loading === 'STOP' ? ( <> - + Stopping... ) : ( <> - + Stop )} @@ -122,7 +122,7 @@ export default function ProjectCardDropdown({ project }: ProjectCardDropdownProp disabled={loading !== null} className="text-destructive" > - + Delete )} diff --git a/components/features/projectList/ProjectListHeader.tsx b/components/features/projectList/ProjectListHeader.tsx index c3d89ab..d7016d3 100644 --- a/components/features/projectList/ProjectListHeader.tsx +++ b/components/features/projectList/ProjectListHeader.tsx @@ -7,7 +7,7 @@ 'use client'; import { useState } from 'react'; -import { Plus, Settings } from 'lucide-react'; +import { MdAdd, MdSettings } from 'react-icons/md'; import CreateProjectDialog from '@/components/dialog/create-project-dialog'; import SettingsDialog from '@/components/dialog/settings-dialog'; @@ -29,7 +29,7 @@ const ProjectListHeader = () => { onClick={() => setShowCreateProject(true)} className="whitespace-nowrap px-4 py-2 text-sm" > - + New Project @@ -41,7 +41,7 @@ const ProjectListHeader = () => { className="ml-1 rounded-full border-border text-muted-foreground hover:text-foreground hover:border-primary shadow-sm" aria-label="User Settings" > - +
diff --git a/components/layout/repo-status-indicator.tsx b/components/layout/repo-status-indicator.tsx index 1e5b814..45a6388 100644 --- a/components/layout/repo-status-indicator.tsx +++ b/components/layout/repo-status-indicator.tsx @@ -2,7 +2,7 @@ import { useState } from 'react' import { Project } from '@prisma/client' -import { Loader2, RefreshCw } from 'lucide-react' +import { MdRefresh } from 'react-icons/md' import { useRouter } from 'next/navigation' import { toast } from 'sonner' @@ -77,9 +77,9 @@ export function RepoStatusIndicator({ project }: RepoStatusIndicatorProps) {
{(!project.githubRepo && isInitializing) ? ( - + ) : ( - + )}
@@ -111,9 +111,9 @@ export function RepoStatusIndicator({ project }: RepoStatusIndicatorProps) { disabled={isCommitting} > {isLoading ? ( - + ) : ( - + )} )} diff --git a/components/sidebars/project-sidebar.tsx b/components/sidebars/project-sidebar.tsx index 0a25896..4c8ee34 100644 --- a/components/sidebars/project-sidebar.tsx +++ b/components/sidebars/project-sidebar.tsx @@ -3,6 +3,8 @@ import { useState } from 'react'; import { IconType } from 'react-icons'; import { + MdChevronLeft, + MdChevronRight, MdOutlineCode, MdOutlineCreditCard, MdOutlineDns, @@ -11,7 +13,6 @@ import { MdOutlineTerminal, MdOutlineVpnKey, } from 'react-icons/md'; -import { ChevronLeft, ChevronRight } from 'lucide-react'; import Link from 'next/link'; import { usePathname } from 'next/navigation'; @@ -80,7 +81,7 @@ export default function ProjectSidebar({ projectId }: ProjectSidebarProps) { onClick={() => setIsCollapsed(!isCollapsed)} className="absolute -right-2 top-1/2 -translate-y-1/2 z-20 h-10 w-4 rounded-md border border-border bg-sidebar-background flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors shadow-sm" > - {isCollapsed ? : } + {isCollapsed ? : } {/* Header */} diff --git a/components/terminal/terminal-display.tsx b/components/terminal/terminal-display.tsx index de8071f..76fadad 100644 --- a/components/terminal/terminal-display.tsx +++ b/components/terminal/terminal-display.tsx @@ -14,7 +14,7 @@ 'use client'; import { useCallback, useState } from 'react'; -import { AlertCircle, Terminal as TerminalIcon } from 'lucide-react'; +import { MdErrorOutline, MdTerminal } from 'react-icons/md'; import { Spinner } from '@/components/ui/spinner'; import { @@ -171,7 +171,7 @@ export function TerminalDisplay({ {showErrorIndicator && (
- + Connection failed
)} @@ -187,8 +187,8 @@ export function TerminalDisplay({ const StatusIcon = shouldShowSpinner(status) ? Spinner : isErrorStatus(status) - ? AlertCircle - : TerminalIcon; + ? MdErrorOutline + : MdTerminal; return (
diff --git a/components/terminal/toolbar/app-runner.tsx b/components/terminal/toolbar/app-runner.tsx index 4a327b2..b391a83 100644 --- a/components/terminal/toolbar/app-runner.tsx +++ b/components/terminal/toolbar/app-runner.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import type { Prisma } from '@prisma/client'; -import { Loader2, Play, Square } from 'lucide-react'; +import { MdPlayArrow, MdRefresh, MdStop } from 'react-icons/md'; import { useAppRunner } from '@/hooks/use-app-runner'; import { cn } from '@/lib/utils'; @@ -70,11 +70,11 @@ export function AppRunner({ sandbox }: AppRunnerProps) { } > {isStartingApp || isStoppingApp ? ( - + ) : isAppRunning ? ( - + ) : ( - + )} {isStartingApp ? 'Starting...' : isStoppingApp ? 'Stopping...' : isAppRunning ? 'Running' : 'Run App'} diff --git a/components/terminal/toolbar/directory-selector.tsx b/components/terminal/toolbar/directory-selector.tsx index 17ced40..e41bc6c 100644 --- a/components/terminal/toolbar/directory-selector.tsx +++ b/components/terminal/toolbar/directory-selector.tsx @@ -1,7 +1,7 @@ 'use client'; import { useEffect,useState } from 'react'; -import { ChevronDown, Folder, Loader2 } from 'lucide-react'; +import { MdFolder, MdKeyboardArrowDown, MdRefresh } from 'react-icons/md'; import { DropdownMenu, @@ -92,14 +92,14 @@ export function DirectorySelector({ >
{isLoading ? ( - + ) : ( - + )}
{value}
- +
@@ -113,7 +113,7 @@ export function DirectorySelector({ onClick={() => handleSelect(dir)} className="text-xs font-mono text-[#cccccc] hover:bg-[#37373d] hover:text-white focus:bg-[#37373d] focus:text-white cursor-pointer" > - + {dir} ))} diff --git a/components/terminal/toolbar/network-dialog.tsx b/components/terminal/toolbar/network-dialog.tsx index 77804da..9e55f19 100644 --- a/components/terminal/toolbar/network-dialog.tsx +++ b/components/terminal/toolbar/network-dialog.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState } from 'react'; -import { Copy, Eye, EyeOff } from 'lucide-react'; +import { MdContentCopy, MdVisibility, MdVisibilityOff } from 'react-icons/md'; import { Dialog, @@ -110,7 +110,7 @@ export function NetworkDialog({ {copiedField === 'username' ? ( ) : ( - + )}
@@ -129,9 +129,9 @@ export function NetworkDialog({ title={showPassword ? 'Hide password' : 'Show password'} > {showPassword ? ( - + ) : ( - + )}
diff --git a/components/terminal/toolbar/terminal-tabs.tsx b/components/terminal/toolbar/terminal-tabs.tsx index 2f786c8..5f900de 100644 --- a/components/terminal/toolbar/terminal-tabs.tsx +++ b/components/terminal/toolbar/terminal-tabs.tsx @@ -1,6 +1,6 @@ 'use client'; -import { Plus, Terminal as TerminalIcon, X } from 'lucide-react'; +import { MdAdd, MdClose, MdTerminal } from 'react-icons/md'; import { cn } from '@/lib/utils'; @@ -50,7 +50,7 @@ export function TerminalTabs({
)} - - + )}
@@ -78,7 +78,7 @@ export function TerminalTabs({ className="h-full aspect-square flex items-center justify-center text-[#c5c5c5] hover:bg-[#37373d] transition-colors border-r border-transparent" title="Add new terminal" > - +
); diff --git a/components/terminal/toolbar/toolbar.tsx b/components/terminal/toolbar/toolbar.tsx index 918bccd..4e22f8f 100644 --- a/components/terminal/toolbar/toolbar.tsx +++ b/components/terminal/toolbar/toolbar.tsx @@ -8,7 +8,7 @@ import { useState } from 'react'; import type { Prisma } from '@prisma/client'; -import { Network } from 'lucide-react'; +import { MdLan } from 'react-icons/md'; import { AppRunner } from './app-runner'; import { NetworkDialog } from './network-dialog'; @@ -97,7 +97,7 @@ export function TerminalToolbar({ className="px-2 py-1 text-xs text-foreground font-semibold hover:text-white hover:bg-zinc-800 rounded transition-colors flex items-center gap-1" title="View network endpoints" > - + Network
diff --git a/components/terminal/xterm-terminal.tsx b/components/terminal/xterm-terminal.tsx index df391d4..e74703e 100644 --- a/components/terminal/xterm-terminal.tsx +++ b/components/terminal/xterm-terminal.tsx @@ -34,7 +34,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import type { ITerminalOptions, Terminal as ITerminal } from '@xterm/xterm'; -import { ArrowDown } from 'lucide-react'; +import { MdArrowDownward } from 'react-icons/md'; import { toast } from 'sonner'; import { useFileDrop } from './hooks/use-file-drop'; @@ -769,7 +769,7 @@ export function XtermTerminal({ animate-fade-in" aria-label={`Scroll to bottom (${newLineCount} new lines)`} > - + {newLineCount} new {newLineCount === 1 ? 'line' : 'lines'} diff --git a/package.json b/package.json index 6b32522..cd0cff2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,13 @@ { "name": "fulling", - "version": "0.4.1", + "version": "1.0.0", + "description": "AI-Powered Full-Stack Development Platform", + "author": "fanux", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/FullAgent/fulling.git" + }, "private": true, "scripts": { "prepare": "prisma generate", From 37b34317c13a41956471551c2738126682c5f8bc Mon Sep 17 00:00:00 2001 From: Che <30403707+Che-Zhu@users.noreply.github.com> Date: Fri, 30 Jan 2026 12:56:15 +0800 Subject: [PATCH 2/3] Docs: Prepare README and CONTRIBUTING for v1.0.0 release --- CONTRIBUTING.md | 12 ++++++------ README.md | 5 ++++- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4c5156c..ab85ea0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,8 +27,8 @@ By participating in this project, you agree to abide by our Code of Conduct. Ple 1. **Fork the Repository** ```bash - git clone https://github.com/FullstackAgent/FullstackAgent.git - cd FullstackAgent + git clone https://github.com/FullAgent/fulling.git + cd fulling ``` 2. **Create a Feature Branch** @@ -78,7 +78,7 @@ By participating in this project, you agree to abide by our Code of Conduct. Ple ### Local Development ```bash # Install dependencies -cd fullstack-agent +cd fulling npm install # Set up environment @@ -209,9 +209,9 @@ We follow Semantic Versioning (SemVer): ## Getting Help ### Resources -- [Documentation](https://github.com/FullstackAgent/FullstackAgent/wiki) -- [Issue Tracker](https://github.com/FullstackAgent/FullstackAgent/issues) -- [Discussions](https://github.com/FullstackAgent/FullstackAgent/discussions) +- [Documentation](https://github.com/FullAgent/fulling/wiki) +- [Issue Tracker](https://github.com/FullAgent/fulling/issues) +- [Discussions](https://github.com/FullAgent/fulling/discussions) ### Contact - GitHub Issues for bugs and features diff --git a/README.md b/README.md index a7656b6..672fb1a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Fulling - AI-Powered Full-Stack Development Platform
+ Version 1.0.0 Next.js TypeScript PostgreSQL @@ -68,7 +69,7 @@ Fulling automatically sets up the following for your project, ready in a minute: ### Prerequisites -- Node.js 20.x or higher +- Node.js 22.9.0 or higher - PostgreSQL database - Kubernetes cluster with KubeBlocks installed - GitHub OAuth application credentials @@ -235,6 +236,8 @@ See [Contributing Guidelines](CONTRIBUTING.md) for details. MIT License - see [LICENSE](LICENSE). +See [CHANGELOG.md](CHANGELOG.md) for release history. + ## Acknowledgments - [Anthropic](https://www.anthropic.com/) for Claude Code From d2be379797a6590f41ab1a73cf5aacf520a98644 Mon Sep 17 00:00:00 2001 From: Che <30403707+Che-Zhu@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:03:44 +0800 Subject: [PATCH 3/3] chore: fix lint issue --- components/features/projectList/ProjectCard.tsx | 2 +- components/features/projectList/ProjectCardDropdown.tsx | 2 +- components/layout/repo-status-indicator.tsx | 2 +- components/terminal/toolbar/app-runner.tsx | 2 +- components/terminal/toolbar/toolbar.tsx | 2 +- components/terminal/xterm-terminal.tsx | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/components/features/projectList/ProjectCard.tsx b/components/features/projectList/ProjectCard.tsx index c38ceb0..fbb4692 100644 --- a/components/features/projectList/ProjectCard.tsx +++ b/components/features/projectList/ProjectCard.tsx @@ -5,8 +5,8 @@ */ import { memo } from 'react'; -import type { Prisma } from '@prisma/client'; import { MdAccessTime } from 'react-icons/md'; +import type { Prisma } from '@prisma/client'; import Link from 'next/link'; import { Badge } from '@/components/ui/badge'; diff --git a/components/features/projectList/ProjectCardDropdown.tsx b/components/features/projectList/ProjectCardDropdown.tsx index c4363d7..0709f1c 100644 --- a/components/features/projectList/ProjectCardDropdown.tsx +++ b/components/features/projectList/ProjectCardDropdown.tsx @@ -8,8 +8,8 @@ 'use client'; import { useState } from 'react'; -import type { Prisma } from '@prisma/client'; import { MdDeleteOutline, MdMoreVert, MdPlayArrow, MdRefresh, MdStop } from 'react-icons/md'; +import type { Prisma } from '@prisma/client'; import { AlertDialog, diff --git a/components/layout/repo-status-indicator.tsx b/components/layout/repo-status-indicator.tsx index 45a6388..7e6997b 100644 --- a/components/layout/repo-status-indicator.tsx +++ b/components/layout/repo-status-indicator.tsx @@ -1,8 +1,8 @@ 'use client' import { useState } from 'react' -import { Project } from '@prisma/client' import { MdRefresh } from 'react-icons/md' +import { Project } from '@prisma/client' import { useRouter } from 'next/navigation' import { toast } from 'sonner' diff --git a/components/terminal/toolbar/app-runner.tsx b/components/terminal/toolbar/app-runner.tsx index b391a83..5cd929f 100644 --- a/components/terminal/toolbar/app-runner.tsx +++ b/components/terminal/toolbar/app-runner.tsx @@ -1,8 +1,8 @@ 'use client'; import { useState } from 'react'; -import type { Prisma } from '@prisma/client'; import { MdPlayArrow, MdRefresh, MdStop } from 'react-icons/md'; +import type { Prisma } from '@prisma/client'; import { useAppRunner } from '@/hooks/use-app-runner'; import { cn } from '@/lib/utils'; diff --git a/components/terminal/toolbar/toolbar.tsx b/components/terminal/toolbar/toolbar.tsx index 4e22f8f..048bbe2 100644 --- a/components/terminal/toolbar/toolbar.tsx +++ b/components/terminal/toolbar/toolbar.tsx @@ -7,8 +7,8 @@ 'use client'; import { useState } from 'react'; -import type { Prisma } from '@prisma/client'; import { MdLan } from 'react-icons/md'; +import type { Prisma } from '@prisma/client'; import { AppRunner } from './app-runner'; import { NetworkDialog } from './network-dialog'; diff --git a/components/terminal/xterm-terminal.tsx b/components/terminal/xterm-terminal.tsx index e74703e..6e572e5 100644 --- a/components/terminal/xterm-terminal.tsx +++ b/components/terminal/xterm-terminal.tsx @@ -33,8 +33,8 @@ 'use client'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import type { ITerminalOptions, Terminal as ITerminal } from '@xterm/xterm'; import { MdArrowDownward } from 'react-icons/md'; +import type { ITerminalOptions, Terminal as ITerminal } from '@xterm/xterm'; import { toast } from 'sonner'; import { useFileDrop } from './hooks/use-file-drop';