Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 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
d067396
fix: raise backend readiness timeout for cold starts on slow disks
kartikmandar Jun 10, 2026
cdbaf6b
chore: rename pixi manifest table from [project] to [workspace]
kartikmandar Jun 10, 2026
11bc890
chore: sync package-lock version with package.json
kartikmandar Jun 10, 2026
c372576
chore: resolve npm audit vulnerabilities in runtime deps
kartikmandar Jun 10, 2026
336e4a8
chore: update python stack to stingray 2.3.2, numpy 2.4, gevent 26
kartikmandar Jun 10, 2026
64150ed
fix: disable hypothesis wall-clock deadline for file-I/O tests
kartikmandar Jun 10, 2026
4166435
chore: upgrade Electron 36 to 42 with electron-builder 26
kartikmandar Jun 10, 2026
d484b6e
fix: re-acquire window after splash handoff in e2e helper
kartikmandar Jun 10, 2026
ff5296b
feat: upgrade Plotly to 3.6.0
kartikmandar Jun 10, 2026
a321b1e
chore: update Vite build toolchain to v8 and remove dead fingerprint2…
kartikmandar Jun 10, 2026
0123019
fix: make legacy electron-builder config compatible with builder 26
kartikmandar Jun 10, 2026
9680535
feat: upgrade vendored jQuery 3.1.1 to 4.0.0 and jQuery UI 1.12.1 to …
kartikmandar Jun 10, 2026
dddd29c
feat: upgrade vendored Bootstrap 3.3.7 to 5.3.8
kartikmandar Jun 10, 2026
5dcfa95
chore: bump Electron 42.4.0, electron-builder 26.15, electron-updater…
kartikmandar Jun 10, 2026
2687609
fix: inset DAVE navbar brand clear of macOS traffic-light controls
kartikmandar Jun 10, 2026
f75fec1
feat: replace Timelab splash artwork with a text DAVE wordmark
kartikmandar Jun 10, 2026
3e7e65b
chore: gitignore brainstorming artifacts and local design specs
kartikmandar Jun 11, 2026
cf404f1
feat: add dave.css design tokens and retire sb-admin theme
kartikmandar Jun 11, 2026
60e052b
feat: bridge bootstrap theme variables and accent focus rings
kartikmandar Jun 11, 2026
04dc37b
feat: restyle navbar tabs and workflow rail to design tokens
kartikmandar Jun 11, 2026
6bf3e2a
fix: add tab pill focus ring and document dave.css token dependency
kartikmandar Jun 11, 2026
2e1d153
fix: make tab layout columns sum to full width and relax scrollbars
kartikmandar Jun 11, 2026
ffe0d02
fix: pin navbar height and zero tab row gutters for exact viewport fit
kartikmandar Jun 11, 2026
4335ea4
feat: unify buttons and inputs under single-accent control system
kartikmandar Jun 11, 2026
fcc1f9a
fix: drive button states through bootstrap variables instead of impor…
kartikmandar Jun 11, 2026
fb6829f
feat: restyle tool panel sections, file selector and analysis links
kartikmandar Jun 11, 2026
6312e1e
fix: correct tool panel header hierarchy and file selector chip states
kartikmandar Jun 11, 2026
5a1b229
fix: tighten model selector icon row instead of dead h3 margin
kartikmandar Jun 11, 2026
4331498
feat: reskin jQuery UI sliders, radios and dialogs to dark chrome
kartikmandar Jun 11, 2026
731d1c7
fix: raise checkboxradio skin specificity over vendored jquery-ui rules
kartikmandar Jun 11, 2026
4cce1ec
fix: complete jquery-ui dialog chrome and toggle state colors
kartikmandar Jun 11, 2026
26099a9
fix: let dialog form labels shrink so inputs share their line
kartikmandar Jun 11, 2026
0d1fffd
feat: turn plot containers and info panel into light cards with accen…
kartikmandar Jun 11, 2026
9f5bba8
fix: round the top corners of plot canvases to match their cards
kartikmandar Jun 11, 2026
23125ef
feat: align Plotly default font and margins with UI design system
kartikmandar Jun 11, 2026
23987e3
fix: unquote font stack so the styles dropdown option value parses
kartikmandar Jun 11, 2026
ccbfd3a
fix: swap vendored jquery-ui css to base theme matching shipped images
kartikmandar Jun 11, 2026
e6dd0d7
refactor: move waiting dialog inline styles into dave.css
kartikmandar Jun 11, 2026
4333f9e
refactor: move logger inline styles into dave.css and retune level co…
kartikmandar Jun 11, 2026
0793078
refactor: move settings tab inline styles to classes and token colors
kartikmandar Jun 11, 2026
e056e11
fix: scope clear-cache button spacing over the blanket btn rule
kartikmandar Jun 11, 2026
fd38ebd
fix: show waiting dialog via bootstrap 5 modal api with static backdrop
kartikmandar Jun 11, 2026
b810078
feat: align electron window and splash with dark chrome and restyle s…
kartikmandar Jun 11, 2026
b7af3d0
fix: scope splash warning bar color over the dialog progress rule
kartikmandar Jun 11, 2026
0836a89
fix: drop modal fade so same-tick waiting dialog hide is not swallowed
kartikmandar Jun 11, 2026
ddf680f
test: point file upload e2e at repo data and assert dataset loads
kartikmandar Jun 11, 2026
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