Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
2e5b346
Complete Phase 2: Backend Migration to Python 3.13
kartikmandar May 27, 2025
c18c4af
Complete Phase 3: Frontend Migration to Modern Stack
kartikmandar May 28, 2025
8fd139d
fix: Resolve upload functionality and missing UI components
kartikmandar May 30, 2025
efebf23
docs: Comprehensive README overhaul with migration details
kartikmandar May 30, 2025
f303519
fix: Add macOS libmagic support and update documentation
kartikmandar May 30, 2025
5ae7ca8
fix libmagic issue in windows
kartikmandar May 30, 2025
87f2019
fix: Resolve port 5000 conflict on macOS and add missing pylru depend…
kartikmandar May 30, 2025
2bf7733
docs: Update setup instructions to include Node.js dependencies
kartikmandar May 30, 2025
282a348
Check inconsistencies in naming of Dataset and apply_filter
matteobachetti May 30, 2025
ddd5010
Fix port and enable debugging
matteobachetti Jun 3, 2025
185b5b2
Fix bad substitution
matteobachetti Jun 4, 2025
3b84f4b
Solve hanging of light curve plot due to bad JSON
matteobachetti Jun 4, 2025
64c8e71
Solve hanging of light curve plot due to bad JSON
matteobachetti Jun 4, 2025
0b57fc4
Merge pull request #2 from StingraySoftware/fix_port_and_enable_debug…
kartikmandar Jun 5, 2025
21f1798
Merge pull request #3 from StingraySoftware/solve_hang
kartikmandar Jun 5, 2025
f1b52f4
refactor: Move all tests to temp/tests-backup for future reference
kartikmandar Jun 5, 2025
8b6e400
Merge branch 'modernization-2025' of https://github.com/kartikmandar/…
kartikmandar Jun 5, 2025
8ac8933
security: Remove Google Analytics and enhance CSP policy
kartikmandar Jun 7, 2025
2f9e566
Edit .gitignore for temp .md files removal
kartikmandar Jun 7, 2025
6300309
fix: Replace deprecated daveAPI.onBrowserReady with modern electronAPI
kartikmandar Jun 7, 2025
64c002e
fix: resolve Electron 36 sandbox errors and upgrade dependencies
kartikmandar Jun 7, 2025
23ec0bd
fix: Resolve file upload validation and size limit issues
kartikmandar Jun 7, 2025
ba7812a
Temporarily disable webgl and sandbox
matteobachetti Jun 10, 2025
eda9f37
feat: Fix linting errors and modernize build system
kartikmandar Jul 17, 2025
dfa108a
fix: Update GitHub workflows and resolve build issues
kartikmandar Jul 17, 2025
4417aa6
Clean up unused Docker configs and test dependencies
kartikmandar Jul 17, 2025
3e5fee9
Add workflows files
kartikmandar Jul 17, 2025
666b37b
fix: Change [workspace] to [project] in pixi.toml for proper parsing
kartikmandar Jul 17, 2025
859af7c
fix: Update Pixi version to v0.40.0 to support lockfile version 6
kartikmandar Jul 17, 2025
8f7af42
fix: Add conftest.py to configure matplotlib Agg backend for headless CI
kartikmandar Jul 17, 2025
896a88b
fix: Add trailing newlines and fix linting issues
kartikmandar Jul 17, 2025
bc61511
fix: Change matplotlib backend from TkAgg to Agg in fixture.py for CI…
kartikmandar Jul 17, 2025
988af8a
fix: Update E2E test tasks to install npm dependencies before Playwright
kartikmandar Jul 17, 2025
d63db2e
fix: resolve Electron sandbox issues in E2E tests
kartikmandar Jul 17, 2025
b532a56
fix: add comprehensive headless support for E2E tests in CI environments
kartikmandar Jul 17, 2025
43e1745
fix: handle python-magic runtime errors on Windows
kartikmandar Jul 17, 2025
a339151
fix: skip python-magic import on Windows CI to prevent hanging
kartikmandar Jul 17, 2025
f77b88d
Fix import and linting errors
kartikmandar Jul 17, 2025
5fca1ae
fix: use updated logger method name
kartikmandar Jul 17, 2025
3909586
fix: correct file type detection without magic module
kartikmandar Jul 17, 2025
6a9b738
fix: path comparison to handle windows short vs long path names
kartikmandar Jul 17, 2025
991cb6c
fix: resolve Windows test failures and standardize logging to warn()
kartikmandar Jul 18, 2025
1de6fa7
better logging in the terminal
kartikmandar Oct 17, 2025
802c9fa
merge remote with local
kartikmandar Oct 17, 2025
1f3ad3c
fix: update Stingray GTI API and add X-ray file extensions
kartikmandar Dec 13, 2025
0c4e650
ci: add multi-platform release workflow
kartikmandar Dec 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# DAVE Security Configuration Template
# Copy this file to .env and configure for your environment

# Flask Configuration
FLASK_ENV=production
FLASK_DEBUG=False
FLASK_SECRET_KEY=your-secret-key-here-min-32-chars

# Session Security
SESSION_COOKIE_SECURE=True
SESSION_LIFETIME_HOURS=24

# CORS Configuration
CORS_ENABLED=True
CORS_ORIGINS=http://localhost:3000,https://your-domain.com

# Upload Limits
MAX_UPLOAD_SIZE_MB=100

# Rate Limiting
RATELIMIT_ENABLED=True
RATELIMIT_DEFAULT=100 per hour
REDIS_URL=redis://localhost:6379

# Authentication (future)
AUTH_ENABLED=False
AUTH_METHOD=jwt
JWT_SECRET_KEY=your-jwt-secret-key
JWT_TOKEN_LIFETIME_HOURS=1

# API Keys (comma separated)
API_KEY_ENABLED=False
API_KEYS=key1,key2,key3

# Shutdown Protection
PROTECT_SHUTDOWN=True
SHUTDOWN_PASSWORD=secure-shutdown-password

# Logging
SANITIZE_LOGS=True

# Database (future)
DATABASE_URL=sqlite:///dave.db
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# SCM syntax highlighting & preventing 3-way merges
pixi.lock merge=binary linguist-language=YAML linguist-generated=true
42 changes: 42 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
version: 2
updates:
# Python dependencies via pixi
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "python"
commit-message:
prefix: "chore"
include: "scope"

# JavaScript dependencies
- package-ecosystem: "npm"
directory: "/src/main/js/electron"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "javascript"
commit-message:
prefix: "chore"
include: "scope"

# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
labels:
- "dependencies"
- "ci"
commit-message:
prefix: "ci"
include: "scope"
163 changes: 163 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
name: CD

on:
push:
tags:
- 'v*'
release:
types: [published]
workflow_dispatch:
inputs:
create_release:
description: 'Create release'
required: true
default: false
type: boolean

jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- os: ubuntu-latest
platform: linux
artifact_name: dave-linux
- os: macos-latest
platform: macos
artifact_name: dave-macos
- os: windows-latest
platform: windows
artifact_name: dave-windows

steps:
- uses: actions/checkout@v4

- name: Setup Pixi
uses: prefix-dev/setup-pixi@v0.6.0
with:
pixi-version: v0.40.0
cache: true

- name: Install dependencies
run: |
pixi install
pixi run install-node-deps

- name: Run tests (quick)
run: pixi run test

- name: Build application
run: python build.py --platform ${{ matrix.platform }} --legacy --no-tests

- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.artifact_name }}
path: |
dist/
build/
retention-days: 30

- name: Package artifacts for release
if: startsWith(github.ref, 'refs/tags/')
run: |
# Legacy builder creates zip files in dist/
if [ "${{ matrix.platform }}" = "linux" ]; then
cp dist/*.zip dave-${{ matrix.platform }}.zip 2>/dev/null || echo "No zip files found for Linux"
find build/ -name "*.deb" -exec cp {} dave-${{ matrix.platform }}.deb \; 2>/dev/null || echo "No deb files found"
find build/ -name "*.rpm" -exec cp {} dave-${{ matrix.platform }}.rpm \; 2>/dev/null || echo "No rpm files found"
elif [ "${{ matrix.platform }}" = "macos" ]; then
cp dist/*.zip dave-${{ matrix.platform }}.zip 2>/dev/null || echo "No zip files found for macOS"
find build/ -name "*.dmg" -exec cp {} dave-${{ matrix.platform }}.dmg \; 2>/dev/null || echo "No dmg files found"
elif [ "${{ matrix.platform }}" = "windows" ]; then
cp dist/*.zip dave-${{ matrix.platform }}.zip 2>/dev/null || echo "No zip files found for Windows"
find build/ -name "*.exe" -exec cp {} dave-${{ matrix.platform }}.exe \; 2>/dev/null || echo "No exe files found"
fi
shell: bash

- name: Upload release artifacts
uses: actions/upload-artifact@v4
if: startsWith(github.ref, 'refs/tags/')
with:
name: release-${{ matrix.artifact_name }}
path: |
dave-${{ matrix.platform }}.*
retention-days: 90

release:
needs: build
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') || github.event.inputs.create_release == 'true'

steps:
- uses: actions/checkout@v4

- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: ./artifacts

- name: Display structure of downloaded files
run: ls -la ./artifacts/

- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
release_name: DAVE ${{ github.ref_name }}
body: |
## DAVE ${{ github.ref_name }}

### Changes
- See commit history for detailed changes

### Downloads
- **Linux**: dave-linux.zip
- **macOS**: dave-macos.zip
- **Windows**: dave-windows.zip

### Installation
1. Download the appropriate package for your platform
2. Extract the archive
3. Follow the installation instructions in the README

### Requirements
- Python 3.13+
- 8GB RAM minimum
- 10GB disk space
draft: false
prerelease: false

- name: Upload Linux Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./artifacts/release-dave-linux/dave-linux.zip
asset_name: dave-linux.zip
asset_content_type: application/zip

- name: Upload macOS Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./artifacts/release-dave-macos/dave-macos.zip
asset_name: dave-macos.zip
asset_content_type: application/zip

- name: Upload Windows Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./artifacts/release-dave-windows/dave-windows.zip
asset_name: dave-windows.zip
asset_content_type: application/zip
80 changes: 80 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: CI

on:
push:
branches: [ modernization-2025, master ]
pull_request:
branches: [ modernization-2025, master ]

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ['3.13']

steps:
- uses: actions/checkout@v4

- name: Setup Pixi
uses: prefix-dev/setup-pixi@v0.6.0
with:
pixi-version: v0.40.0
cache: true

- name: Install dependencies
run: |
pixi install
pixi run install-node-deps

- name: Run Python linting
run: pixi run lint

- name: Run Python tests
run: pixi run test

- name: Run Python tests with coverage
run: pixi run test-coverage

- name: Install Playwright browsers
run: pixi run test-e2e-install

- name: Run E2E tests
run: pixi run test-e2e

- name: Upload coverage reports
uses: codecov/codecov-action@v4
if: matrix.os == 'ubuntu-latest'
with:
file: ./coverage.xml
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false

security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Pixi
uses: prefix-dev/setup-pixi@v0.6.0
with:
pixi-version: v0.40.0
cache: true

- name: Install dependencies
run: pixi install

- name: Run security checks
run: |
pixi run lint
# Additional security checks can be added here

- name: Check for secrets
uses: trufflesecurity/trufflehog@main
with:
path: ./
base: main
head: HEAD
extra_args: --debug --only-verified
Loading