# Frontend Version Management

## Current Version: 0.1.30

The frontend version is managed independently from the backend.

## Version Locations

1. **Primary source**: `/frontend/src/version.js`
   - Contains the VERSION constant
   - Exports version info functions

2. **Package metadata**: `/frontend/package.json`
   - Standard npm version field
   - Should match version.js

## Updating the Version

### Option 1: Using the update script (Recommended)
```bash
# Updates both backend and frontend
./scripts/update-version.sh 0.1.31
```

### Option 2: Manual update
Edit `/frontend/src/version.js`:
```javascript
export const VERSION = '0.1.31'  // Update this
```

And `/frontend/package.json`:
```json
{
  "version": "0.1.31"  // Update this
}
```

## Git Commit Information

The git commit is injected via environment variable:
- Set `VITE_GIT_COMMIT` in `.env` or at build time
- Falls back to "unknown" if not set

Example `.env`:
```bash
VITE_GIT_COMMIT=d0c177b
```

## Usage in Components

```javascript
import { getVersion, getGitCommit, getVersionInfo } from '@/version'

// Get version string
const version = getVersion()  // "0.1.30"

// Get git commit
const commit = getGitCommit()  // "d0c177b" or "unknown"

// Get full info object
const info = getVersionInfo()  // { version: "0.1.30", gitCommit: "d0c177b" }
```

## Landing Page Display

The landing page shows both:
- **Frontend Version**: From `/frontend/src/version.js`
- **Backend Version**: Fetched from `/api/public/version`

This allows users to see if frontend and backend are in sync.

## Build-time Version Injection

To inject git commit at build time, update `vite.config.js`:

```javascript
import { defineConfig } from 'vite'
import { execSync } from 'child_process'

const gitCommit = execSync('git rev-parse --short HEAD').toString().trim()

export default defineConfig({
  define: {
    'import.meta.env.VITE_GIT_COMMIT': JSON.stringify(gitCommit)
  }
})
```
