From 89d6dbccd7f30a790324d306c35b9ebb64f40dc5 Mon Sep 17 00:00:00 2001 From: HRiggs Date: Wed, 3 Dec 2025 22:04:09 -0500 Subject: [PATCH] remove deploy --- .gitea/workflows/deploy.yml | 86 ------------------------------- electron-app/src/assets/logo.png | Bin 0 -> 5597 bytes electron-app/src/main/index.ts | 28 +++++++--- 3 files changed, 21 insertions(+), 93 deletions(-) delete mode 100644 .gitea/workflows/deploy.yml create mode 100644 electron-app/src/assets/logo.png diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml deleted file mode 100644 index 6744607..0000000 --- a/.gitea/workflows/deploy.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: Deploy Backend to Docker - -on: - push: - branches: - - main - paths: - - 'backend/**' - - 'docker-compose.yml' - - '.gitea/workflows/deploy.yml' - workflow_dispatch: - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build backend image - working-directory: backend - run: docker build -t rmtpocketwatcher-backend:latest . - - - name: Save image to tar - run: docker save rmtpocketwatcher-backend:latest -o backend-image.tar - - - name: Deploy via SSH to Docker host - env: - DOCKER_HOST: ${{ secrets.DOCKER_HOST }} - DOCKER_SSH_KEY: ${{ secrets.DOCKER_SSH_KEY }} - DOCKER_USER: ${{ secrets.DOCKER_USER }} - run: | - # Setup SSH - mkdir -p ~/.ssh - echo "$DOCKER_SSH_KEY" > ~/.ssh/deploy_key - chmod 600 ~/.ssh/deploy_key - - # Copy image to remote host - scp -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ - backend-image.tar ${DOCKER_USER}@${DOCKER_HOST}:/tmp/ - - # Copy docker-compose to remote host - scp -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ - docker-compose.yml ${DOCKER_USER}@${DOCKER_HOST}:/opt/rmtpocketwatcher/ - - # Load image and restart services - ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no \ - ${DOCKER_USER}@${DOCKER_HOST} << 'EOF' - cd /opt/rmtpocketwatcher - docker load -i /tmp/backend-image.tar - docker-compose down backend - docker-compose up -d backend - rm /tmp/backend-image.tar - EOF - - deploy-portainer: - runs-on: ubuntu-latest - if: github.event_name == 'workflow_dispatch' - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Deploy via Portainer Webhook - env: - PORTAINER_WEBHOOK_URL: ${{ secrets.PORTAINER_WEBHOOK_URL }} - run: | - curl -X POST "$PORTAINER_WEBHOOK_URL" - - - name: Deploy via Portainer API - env: - PORTAINER_URL: ${{ secrets.PORTAINER_URL }} - PORTAINER_API_KEY: ${{ secrets.PORTAINER_API_KEY }} - PORTAINER_STACK_ID: ${{ secrets.PORTAINER_STACK_ID }} - run: | - # Pull latest from git and redeploy stack - curl -X PUT \ - "${PORTAINER_URL}/api/stacks/${PORTAINER_STACK_ID}/git/redeploy" \ - -H "X-API-Key: ${PORTAINER_API_KEY}" \ - -H "Content-Type: application/json" \ - -d '{ - "pullImage": true, - "prune": true - }' diff --git a/electron-app/src/assets/logo.png b/electron-app/src/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f139847e73945764e0f0ace404c760a5d3ef3e98 GIT binary patch literal 5597 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 literal 0 HcmV?d00001 diff --git a/electron-app/src/main/index.ts b/electron-app/src/main/index.ts index 82abe8a..3b11ace 100644 --- a/electron-app/src/main/index.ts +++ b/electron-app/src/main/index.ts @@ -20,6 +20,14 @@ let mainWindow: BrowserWindow | null = null; let tray: Tray | null = null; function createWindow(): void { + // In dev: __dirname = dist/main, logo is at root + // In prod: __dirname = resources/app.asar/dist/main + const iconPath = process.env.NODE_ENV === 'development' + ? path.join(__dirname, '../../logo.png') + : path.join(__dirname, '../assets/logo.png'); + + console.log('Window icon path:', iconPath); + mainWindow = new BrowserWindow({ width: 1400, height: 900, @@ -27,6 +35,7 @@ function createWindow(): void { minHeight: 700, frame: false, backgroundColor: '#0a0e27', + icon: iconPath, webPreferences: { preload: path.join(__dirname, 'preload.js'), nodeIntegration: false, @@ -54,10 +63,15 @@ function createWindow(): void { } function createTray(): void { - // Create a simple icon for the tray (16x16 cyan square) - const icon = nativeImage.createFromDataURL( - 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAAdgAAAHYBTnsmCAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAABNSURBVDiNY/z//z8DJYCJgUIwasCoAaMGjBowaMIAhv///zNQCpiYKASjBowaMGrAqAGDJgxGDRg1YNSAUQNGDRg0YTBqwKgBowYMmjAAALmyAwVYbMsAAAAASUVORK5CYII=' - ); + // In dev: __dirname = dist/main, logo is at root + // In prod: __dirname = resources/app.asar/dist/main + const iconPath = process.env.NODE_ENV === 'development' + ? path.join(__dirname, '../../logo.png') + : path.join(__dirname, '../assets/logo.png'); + + console.log('Tray icon path:', iconPath); + + const icon = nativeImage.createFromPath(iconPath).resize({ width: 16, height: 16 }); tray = new Tray(icon); @@ -97,9 +111,9 @@ app.whenReady().then(() => { createWindow(); }); -app.on('window-all-closed', (e: Event) => { - // Prevent app from quitting when window is closed (allow tray to keep it running) - e.preventDefault(); +app.on('window-all-closed', () => { + // Quit the app when all windows are closed + app.quit(); }); app.on('activate', () => {