Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
d5c2677
feat: add Electron desktop app with full UI and FastAPI backend
kartikmandar Dec 14, 2025
c39733c
feat: enhance data ingestion with full CRUD operations and notifications
kartikmandar Feb 2, 2026
689b136
fix: improve data ingestion with GTI validation and bug fixes
kartikmandar Feb 2, 2026
8273eef
refactor: consolidate Footer into RightToolbar for more vertical space
kartikmandar Feb 2, 2026
e2ca74a
fix: improve resource monitoring accuracy and reduce log noise
kartikmandar Feb 3, 2026
2e97480
feat: add SSE streaming for batch file loading with real-time progress
kartikmandar Feb 3, 2026
d2a9fa0
feat: add real-time log streaming from Python backend via SSE
kartikmandar Feb 4, 2026
60823ab
feat: add last loaded files persistence and data validation improvements
kartikmandar Feb 4, 2026
0f998af
feat: add HEASARC archive browser and file browser dialog
kartikmandar Feb 4, 2026
fee685a
fix: prevent single file loading from blocking event loop
kartikmandar Feb 4, 2026
1f221c9
feat: add job management system with SSE streaming and improve log ha…
kartikmandar Feb 5, 2026
02ff84c
feat: improve HEASARC file browsing with RXTE support, date sorting, …
kartikmandar Feb 6, 2026
b129ff7
fix: correct python:dev port arg and narrow dev.sh pkill scope
kartikmandar Feb 6, 2026
f2c0de4
feat: add IXPE, Suzaku, ASCA, XRISM, and Hitomi missions to HEASARC b…
kartikmandar Feb 6, 2026
0421e54
feat: add ObsID search, filters, and NICER status to HEASARC browser
kartikmandar Feb 6, 2026
7a48b06
fix: improve NuSTAR HEASARC browser UX with conditional FPMA labels a…
kartikmandar Feb 6, 2026
18d79f8
feat: add XMM-Newton and Chandra mission-specific columns to HEASARC …
kartikmandar Mar 25, 2026
9fcdabc
chore: add macOS resource fork dotfiles to gitignore
kartikmandar Mar 25, 2026
5025a97
feat: Observatory Dark UI overhaul and remove test files
kartikmandar Mar 27, 2026
3928976
fix: extend backend cold-start timeout and keep backend alive on macO…
kartikmandar Jun 10, 2026
652f8e7
chore: gitignore AI_DOCS local reference material
kartikmandar Jun 10, 2026
add7598
chore: add vitest + testing-library infrastructure
kartikmandar Jun 10, 2026
83b62da
chore: add eslint config and polish test utilities
kartikmandar Jun 10, 2026
43cd2f4
chore: add pytest scaffolding for python backend
kartikmandar Jun 10, 2026
1a36162
chore: point pytest config at backend tests
kartikmandar Jun 10, 2026
9e81e59
fix: serialize complex cross-spectrum power as magnitude and phase
kartikmandar Jun 10, 2026
8260e12
perf: fast-path finite serialization and sanitize dynamical power spe…
kartikmandar Jun 10, 2026
577bab2
fix: use stingray coherence() and time_lag() with uncertainties
kartikmandar Jun 10, 2026
1737436
test: pin timing service contracts and harden coherence bounds
kartikmandar Jun 10, 2026
7e6504d
feat: add server-side plot decimation for large lightcurves
kartikmandar Jun 10, 2026
9d437db
fix: validate max_points and pin full-resolution stats invariant
kartikmandar Jun 10, 2026
60349e9
fix: run analysis routes in worker threads to keep event loop responsive
kartikmandar Jun 10, 2026
99b4d7b
test: measure event-loop block from before the scheduler yield
kartikmandar Jun 10, 2026
29d3082
fix: clear pre-existing typecheck errors in electron and file browser
kartikmandar Jun 10, 2026
72f2291
feat: extend api types for phase, uncertainties, and plot decimation
kartikmandar Jun 10, 2026
faad03c
fix: allow nulls in power colors band arrays
kartikmandar Jun 10, 2026
7adbe1f
feat: add theme-aware lazy-loaded PlotlyChart component
kartikmandar Jun 10, 2026
fae350e
test: pin both-axis merge contract and stabilize plotly config
kartikmandar Jun 10, 2026
3702b51
feat: add event list query hook and selector component
kartikmandar Jun 10, 2026
4078152
fix: harden event list selector for shared-cache fan-out
kartikmandar Jun 10, 2026
702e116
feat: add useAnalysisRunner request-lifecycle hook
kartikmandar Jun 10, 2026
aff1d6b
fix: treat undefined response data as failure in analysis runner
kartikmandar Jun 10, 2026
5d85163
feat: implement EventList QuickLook page
kartikmandar Jun 10, 2026
711d770
fix: harden EventList page delete flow and list accessibility
kartikmandar Jun 10, 2026
58c5868
feat: implement Light Curve page with rebin and stored-curve viewer
kartikmandar Jun 10, 2026
1f58f0c
fix: correct lightcurve rebin factor semantics and harden viewer
kartikmandar Jun 10, 2026
29fec82
feat: implement Power Spectrum page
kartikmandar Jun 10, 2026
d9e7e42
fix: correct spectrum linear rebin semantics and harden rebin anchor
kartikmandar Jun 10, 2026
e252ee5
feat: implement Averaged Power Spectrum page
kartikmandar Jun 10, 2026
f34fae2
fix: reject degenerate segment sizes with readable errors
kartikmandar Jun 10, 2026
4b10cf8
feat: implement Cross Spectrum page with magnitude and phase
kartikmandar Jun 10, 2026
1c535a5
feat: implement Averaged Cross Spectrum page
kartikmandar Jun 10, 2026
9be4559
fix: reject non-overlapping event lists with readable errors
kartikmandar Jun 10, 2026
c842110
feat: implement Dynamical Power Spectrum page
kartikmandar Jun 10, 2026
271a7e6
feat: implement Bispectrum page with magnitude/phase heatmaps
kartikmandar Jun 10, 2026
a20412f
perf: memoize heatmap matrices in dynamical power spectrum page
kartikmandar Jun 10, 2026
73a6a22
fix: cap bispectrum maxlag and drop unused cum3 from payload
kartikmandar Jun 10, 2026
6084544
feat: implement Coherence page with uncertainties
kartikmandar Jun 10, 2026
d3122ca
feat: add Time Lags page with route and navigation
kartikmandar Jun 10, 2026
e8edd85
fix: surface invalid frequency-range input on time lags page
kartikmandar Jun 10, 2026
b321005
fix: disable compute while frequency fields are unparseable
kartikmandar Jun 10, 2026
161f7ac
feat: add Power Colors page with band powers and PC diagram
kartikmandar Jun 10, 2026
7041cd5
fix: state band-mean power convention and warn on Nyquist overflow
kartikmandar Jun 10, 2026
090d223
fix: apply review follow-ups across api encoding and overlap guards
kartikmandar Jun 10, 2026
1aeed9a
docs: record quicklook core implementation plan completion
kartikmandar Jun 10, 2026
b43c9b1
fix: final polish from cross-cutting review
kartikmandar Jun 11, 2026
2ec2be4
style: format test conftest with black
kartikmandar Jun 11, 2026
9bb4463
fix: emit preload as .cjs so Electron 41 loads it under type:module
kartikmandar Jun 11, 2026
8c96387
fix: fall back to SVG scatter when WebGL is unavailable
kartikmandar Jun 11, 2026
a7d5916
fix: allow unsafe-eval and data: images in CSP for plotly WebGL traces
kartikmandar Jun 11, 2026
dd82bc3
fix: drop global !important plotly sizing rule that collapsed charts
kartikmandar Jun 11, 2026
b34bd24
fix: clear macOS traffic lights and wire header drag region
kartikmandar Jun 11, 2026
edaf4b0
fix: use a spacer element to clear macOS traffic lights
kartikmandar Jun 11, 2026
56b3c2f
fix: pin traffic light position and widen header spacer
kartikmandar Jun 11, 2026
c534f1b
fix: widen traffic-light spacer to 96px after visual review
kartikmandar Jun 11, 2026
b3cdaf6
fix: size titlebar inset from Window Controls Overlay env var
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
41 changes: 41 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
module.exports = {
root: true,
env: {
browser: true,
es2022: true,
node: true,
},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
ecmaFeatures: { jsx: true },
},
plugins: ['@typescript-eslint', 'react', 'react-hooks'],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
],
settings: {
react: { version: 'detect' },
},
ignorePatterns: ['dist', 'dist-electron', 'node_modules'],
rules: {
// Vite's automatic JSX runtime makes React imports unnecessary
'react/react-in-jsx-scope': 'off',
// TypeScript types make prop-types redundant
'react/prop-types': 'off',
// Downgraded: existing code uses `any` in a few places; flag without failing the build
'@typescript-eslint/no-explicit-any': 'warn',
// Downgraded: existing code has unused vars; `_`-prefix is the in-repo convention
// for intentionally unused bindings, so ignore those entirely
'@typescript-eslint/no-unused-vars': [
'warn',
{ argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
],
// Stylistic: literal quotes in JSX prose are fine in this app
'react/no-unescaped-entities': 'off',
},
};
53 changes: 53 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/.DS_Store
.DS_Store
._*
.idea/
__pycache__/
files/loaded-data/
Expand All @@ -13,3 +15,54 @@ files/data/SE1_*.evt.gz
files/data/data_small*.hdf5
files/data/data_smaller*.hdf5
files/data/test.rmf

# Large NICER event file (2.4 GB) - download from https://zenodo.org/record/6785435
files/data/ni1200120106_0mpu7_cl_bary.evt.gz

# Node.js
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.npm
.pnpm-debug.log*

# Electron
dist/
dist-electron/
out/
*.asar
*.snap

# Build output
*.tsbuildinfo
*.log

# Python virtual environment
.venv/
venv/
*.pyc
*.pyo
*.egg-info/
*.egg
.eggs/

# Environment files
.env
.env.local
.env.*.local

# IDE
*.swp
*.swo
*~

# Test coverage
coverage/
.nyc_output/

# Pixi
.pixi/

# AI reference documentation (local-only)
AI_DOCS/
Loading
Loading