mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-09 05:24:49 +09:00
The remote file browser was broken because handleFileList returned entries with only name/is_dir/size/modified and NO `path`. The frontend keys, selects, and navigates on entry.path, so remote browse was broken on every OS (entry.path was undefined), and Windows additionally had no way to reach drives other than the agent process's working drive. Agent (file_handlers.go + build-tagged helpers): - Emit an absolute, forward-slash `path` for every entry and for the directory itself (filepath.ToSlash), giving the panel one canonical separator regardless of the agent OS. - Normalize the inbound path with filepath.FromSlash before any os call so os.ReadDir and the allowlist validation work with Windows separators. - On Windows, an empty/"/" browse request enumerates logical drives (GetLogicalDrives) as virtual directory entries instead of silently listing one drive. enumerateDriveRoots() is build-tagged: real on windows, nil elsewhere (falls through to "/"). The allowlist still gates whether the panel can enter each drive. Frontend (FileManager.jsx): - deriveParent and breadcrumbs are drive-aware: "C:/Users" -> "C:/" (not "C:", which is Windows' "current dir on C:"), and a drive-rooted path builds crumbs from the drive list instead of bogus "/C:" paths. POSIX paths are untouched (changes are guarded by drive-letter regexes). Verified: go vet + go test ./... (host) green incl. new TestHandleFileListEmitsForwardSlashPaths; cross-builds linux/darwin/ windows-arm64; eslint + vite production build green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
React Dashboard Template
A modern React dashboard application boilerplate built with Vite, featuring routing, charts, and a sidebar layout for building data-driven web interfaces.
Features
- React 18 with functional components and hooks
- Vite for fast development and building
- React Router for client-side routing
- Recharts for data visualization
- Lucide React for icons
- ESLint for code linting
- Responsive sidebar layout
- Dashboard page with sample components
Getting Started
Prerequisites
- Node.js 16+ and npm
Installation
- Clone or download this template
- Install dependencies:
npm install
Development
Start the development server:
npm run dev
The app will be available at http://localhost:41921.
Building for Production
Build the app for deployment:
npm run build
The output will be in the dist/ directory.
Preview Production Build
npm run preview
Project Structure
src/
├── App.jsx # Main app with routing
├── main.jsx # Entry point
├── index.css # Global styles
├── components/
│ └── Sidebar.jsx # Navigation sidebar
├── layouts/
│ └── DashboardLayout.jsx # Main layout wrapper
└── pages/
└── Dashboard.jsx # Main dashboard page
Customization
- Modify components in
src/components/ - Add new pages in
src/pages/ - Update routes in
App.jsx - Customize styles in
index.cssor component files
Environment Variables
Create a .env file in the root for environment variables:
VITE_API_URL=https://api.example.com
Access them in code via import.meta.env.VITE_API_URL.
Contributing
See the documentation files for AI agent permissions and guidelines.