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:
Tomas Dvorak
2026-02-27 19:24:18 +01:00
parent 90f0b90cc7
commit 446bc7acfb
4 changed files with 104 additions and 103 deletions
+98 -97
View File
@@ -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.
+1 -1
View File
@@ -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();
+1 -1
View File
@@ -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');
+4 -4
View File
@@ -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;
} }
}; };