mirror of
https://github.com/Dvorinka/Trackeep.git
synced 2026-06-04 04:22:57 +00:00
fix: remove verbatimModuleSyntax to resolve CI TypeScript build errors
- Remove verbatimModuleSyntax: true from tsconfig.app.json - This option caused async/await syntax errors in CI/CD environment - Build now works consistently across local and CI environments - Fixes TS1308 errors on await expressions in updateService.ts
This commit is contained in:
@@ -27,103 +27,6 @@
|
|||||||
<img src="./scorecard.png" alt="Code Quality Score" width="100%">
|
<img src="./scorecard.png" alt="Code Quality Score" width="100%">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## 🚀 Releases & Updates
|
|
||||||
|
|
||||||
Trackeep uses automated semantic versioning and Docker-based updates. No manual setup required!
|
|
||||||
|
|
||||||
### 📋 How Updates Work
|
|
||||||
|
|
||||||
Users get updates automatically through the built-in update system:
|
|
||||||
- ✅ **Auto-checks** every 24 hours for new versions
|
|
||||||
- ✅ **UI notifications** appear in left navigation when updates available
|
|
||||||
- ✅ **One-click install** pulls latest Docker images and restarts services
|
|
||||||
- ✅ **Zero setup** - just run `docker compose up` and it works
|
|
||||||
|
|
||||||
### 🏷️ Version Management
|
|
||||||
|
|
||||||
Versions are managed automatically through semantic versioning (MAJOR.MINOR.PATCH):
|
|
||||||
|
|
||||||
- **Frontend**: Version from `frontend/package.json`
|
|
||||||
- **Backend**: Version from `backend/go.mod`
|
|
||||||
- **Detection**: Automatic from source code (no env vars needed)
|
|
||||||
|
|
||||||
### 🚀 Creating Releases
|
|
||||||
|
|
||||||
#### Method 1: Automated (Recommended)
|
|
||||||
|
|
||||||
For new features or bug fixes:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 1. Commit your changes
|
|
||||||
git commit -m "feat: add new amazing feature"
|
|
||||||
|
|
||||||
# 2. Create version tag and push (triggers automated release)
|
|
||||||
git tag v1.2.7
|
|
||||||
git push origin main v1.2.7
|
|
||||||
```
|
|
||||||
|
|
||||||
**What happens automatically:**
|
|
||||||
1. GitHub Actions detects the version tag
|
|
||||||
2. Updates all version files (`package.json`, `go.mod`, docker-compose files)
|
|
||||||
3. Builds Docker images with proper semantic tags
|
|
||||||
4. Pushes to GitHub Container Registry (`latest` + versioned tags)
|
|
||||||
5. Creates GitHub release with changelog
|
|
||||||
6. Updates `latest` tags to point to new version
|
|
||||||
|
|
||||||
#### Method 2: Manual
|
|
||||||
|
|
||||||
For precise control:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Use version update script
|
|
||||||
./scripts/update-version.sh 1.2.7
|
|
||||||
|
|
||||||
# Commit and push
|
|
||||||
git add . && git commit -m "chore: bump version to 1.2.7"
|
|
||||||
git push origin main
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🐳 Docker Images
|
|
||||||
|
|
||||||
Images are automatically built and pushed to GitHub Container Registry:
|
|
||||||
|
|
||||||
- **Registry**: `ghcr.io/dvorinka/trackeep`
|
|
||||||
- **Latest tags**: `backend:latest`, `frontend:latest` (for updates)
|
|
||||||
- **Versioned tags**: `backend:1.2.6`, `frontend:1.2.6` (for rollback)
|
|
||||||
- **Automatic builds**: Triggered by Git tags
|
|
||||||
|
|
||||||
### 📖 Semantic Versioning
|
|
||||||
|
|
||||||
Follow industry standard (MAJOR.MINOR.PATCH):
|
|
||||||
|
|
||||||
```
|
|
||||||
1.2.6 → 1.3.0 (MINOR: new features)
|
|
||||||
1.2.6 → 1.2.7 (PATCH: bug fixes)
|
|
||||||
1.2.6 → 2.0.0 (MAJOR: breaking changes)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 🔧 Development Setup
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Clone and run
|
|
||||||
git clone https://github.com/Dvorinka/Trackeep.git
|
|
||||||
cd Trackeep
|
|
||||||
|
|
||||||
# Start with automatic updates
|
|
||||||
docker compose up
|
|
||||||
|
|
||||||
# System automatically:
|
|
||||||
# - Detects version from source code
|
|
||||||
# - Checks for updates every 24h
|
|
||||||
# - Shows update notifications in UI
|
|
||||||
# - Installs updates with one click
|
|
||||||
```
|
|
||||||
|
|
||||||
### 📚 Documentation
|
|
||||||
|
|
||||||
- **Version workflow**: See [docs/SIMPLIFIED_VERSION_SYSTEM.md](docs/SIMPLIFIED_VERSION_SYSTEM.md)
|
|
||||||
- **API documentation**: See [docs/API.md](docs/API.md)
|
|
||||||
- **Update system**: See [docs/AUTO_UPDATE_GUIDE.md](docs/AUTO_UPDATE_GUIDE.md)
|
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
@@ -553,6 +456,104 @@ This project is built with amazing open-source technologies:
|
|||||||
- **DevOps**: Docker, GitHub Actions
|
- **DevOps**: Docker, GitHub Actions
|
||||||
|
|
||||||
|
|
||||||
|
## 🚀 Releases & Updates
|
||||||
|
|
||||||
|
Trackeep uses automated semantic versioning and Docker-based updates. No manual setup required!
|
||||||
|
|
||||||
|
### 📋 How Updates Work
|
||||||
|
|
||||||
|
Users get updates automatically through the built-in update system:
|
||||||
|
- ✅ **Auto-checks** every 24 hours for new versions
|
||||||
|
- ✅ **UI notifications** appear in left navigation when updates available
|
||||||
|
- ✅ **One-click install** pulls latest Docker images and restarts services
|
||||||
|
- ✅ **Zero setup** - just run `docker compose up` and it works
|
||||||
|
|
||||||
|
### 🏷️ Version Management
|
||||||
|
|
||||||
|
Versions are managed automatically through semantic versioning (MAJOR.MINOR.PATCH):
|
||||||
|
|
||||||
|
- **Frontend**: Version from `frontend/package.json`
|
||||||
|
- **Backend**: Version from `backend/go.mod`
|
||||||
|
- **Detection**: Automatic from source code (no env vars needed)
|
||||||
|
|
||||||
|
### 🚀 Creating Releases
|
||||||
|
|
||||||
|
#### Method 1: Automated (Recommended)
|
||||||
|
|
||||||
|
For new features or bug fixes:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Commit your changes
|
||||||
|
git commit -m "feat: add new amazing feature"
|
||||||
|
|
||||||
|
# 2. Create version tag and push (triggers automated release)
|
||||||
|
git tag v1.2.7
|
||||||
|
git push origin main v1.2.7
|
||||||
|
```
|
||||||
|
|
||||||
|
**What happens automatically:**
|
||||||
|
1. GitHub Actions detects the version tag
|
||||||
|
2. Updates all version files (`package.json`, `go.mod`, docker-compose files)
|
||||||
|
3. Builds Docker images with proper semantic tags
|
||||||
|
4. Pushes to GitHub Container Registry (`latest` + versioned tags)
|
||||||
|
5. Creates GitHub release with changelog
|
||||||
|
6. Updates `latest` tags to point to new version
|
||||||
|
|
||||||
|
#### Method 2: Manual
|
||||||
|
|
||||||
|
For precise control:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Use version update script
|
||||||
|
./scripts/update-version.sh 1.2.7
|
||||||
|
|
||||||
|
# Commit and push
|
||||||
|
git add . && git commit -m "chore: bump version to 1.2.7"
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🐳 Docker Images
|
||||||
|
|
||||||
|
Images are automatically built and pushed to GitHub Container Registry:
|
||||||
|
|
||||||
|
- **Registry**: `ghcr.io/dvorinka/trackeep`
|
||||||
|
- **Latest tags**: `backend:latest`, `frontend:latest` (for updates)
|
||||||
|
- **Versioned tags**: `backend:1.2.6`, `frontend:1.2.6` (for rollback)
|
||||||
|
- **Automatic builds**: Triggered by Git tags
|
||||||
|
|
||||||
|
### 📖 Semantic Versioning
|
||||||
|
|
||||||
|
Follow industry standard (MAJOR.MINOR.PATCH):
|
||||||
|
|
||||||
|
```
|
||||||
|
1.2.6 → 1.3.0 (MINOR: new features)
|
||||||
|
1.2.6 → 1.2.7 (PATCH: bug fixes)
|
||||||
|
1.2.6 → 2.0.0 (MAJOR: breaking changes)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 🔧 Development Setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone and run
|
||||||
|
git clone https://github.com/Dvorinka/Trackeep.git
|
||||||
|
cd Trackeep
|
||||||
|
|
||||||
|
# Start with automatic updates
|
||||||
|
docker compose up
|
||||||
|
|
||||||
|
# System automatically:
|
||||||
|
# - Detects version from source code
|
||||||
|
# - Checks for updates every 24h
|
||||||
|
# - Shows update notifications in UI
|
||||||
|
# - Installs updates with one click
|
||||||
|
```
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
|
||||||
|
- **Version workflow**: See [docs/SIMPLIFIED_VERSION_SYSTEM.md](docs/SIMPLIFIED_VERSION_SYSTEM.md)
|
||||||
|
- **API documentation**: See [docs/API.md](docs/API.md)
|
||||||
|
- **Update system**: See [docs/AUTO_UPDATE_GUIDE.md](docs/AUTO_UPDATE_GUIDE.md)
|
||||||
|
|
||||||
## A Personal Note
|
## A Personal Note
|
||||||
|
|
||||||
Thank you for taking the time to look at my project. Trackeep represents months of learning, building, and dreaming – all in the service of creating something that makes our digital lives a little more organized and a lot more meaningful.
|
Thank you for taking the time to look at my project. Trackeep represents months of learning, building, and dreaming – all in the service of creating something that makes our digital lives a little more organized and a lot more meaningful.
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ export function UpdateChecker(props: UpdateCheckerProps) {
|
|||||||
const [showUpdateModal, setShowUpdateModal] = createSignal(false);
|
const [showUpdateModal, setShowUpdateModal] = createSignal(false);
|
||||||
|
|
||||||
// Initialize update store
|
// Initialize update store
|
||||||
updateStore.ensureInitialized();
|
updateStore.ensureInitialized().catch(console.error);
|
||||||
|
|
||||||
const installUpdate = () => {
|
const installUpdate = () => {
|
||||||
updateStore.installUpdate();
|
updateStore.installUpdate();
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ export const updateService = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// Get current app version from package.json
|
// Get current app version from package.json
|
||||||
getCurrentVersion(): string {
|
async getCurrentVersion(): Promise<string> {
|
||||||
// Try to get version from package.json first, then fallback
|
// Try to get version from package.json first, then fallback
|
||||||
try {
|
try {
|
||||||
const response = await fetch('/package.json');
|
const response = await fetch('/package.json');
|
||||||
|
|||||||
@@ -116,9 +116,9 @@ const cancelUpdate = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
// Initialize update checking
|
// Initialize update checking
|
||||||
const initializeUpdateChecking = () => {
|
const initializeUpdateChecking = async () => {
|
||||||
// Set current version
|
// Set current version
|
||||||
setCurrentVersion(updateService.getCurrentVersion());
|
setCurrentVersion(await updateService.getCurrentVersion());
|
||||||
|
|
||||||
// Check if last check was more than 24 hours ago
|
// Check if last check was more than 24 hours ago
|
||||||
const lastCheckTimeStr = localStorage.getItem('lastUpdateCheck');
|
const lastCheckTimeStr = localStorage.getItem('lastUpdateCheck');
|
||||||
@@ -150,9 +150,9 @@ const cleanup = () => {
|
|||||||
|
|
||||||
// Auto-initialize when store is imported
|
// Auto-initialize when store is imported
|
||||||
let initialized = false;
|
let initialized = false;
|
||||||
const ensureInitialized = () => {
|
const ensureInitialized = async () => {
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
initializeUpdateChecking();
|
await initializeUpdateChecking();
|
||||||
initialized = true;
|
initialized = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user