citrascope 0.3.0__py3-none-any.whl → 0.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,13 +20,13 @@
20
20
  <div class="container">
21
21
  <header class="d-flex flex-wrap justify-content-center py-3 mb-4 border-bottom align-items-center">
22
22
  <span class="d-flex align-items-center mb-3 mb-md-0 me-md-auto link-body-emphasis text-decoration-none">
23
- <span class="fs-4 d-flex align-items-center gap-2">
23
+ <span class="fs-4 d-flex align-items-baseline gap-2">
24
24
  <img src="/static/img/citra.png" alt="CitraScope Logo" class="logo-img" />
25
25
  CitraScope
26
-
27
- </span>
28
- <span class="ms-2 me-3 d-flex align-items-center status-badge-container">
29
- <span id="wsStatus"><span class="badge rounded-pill bg-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Dashboard connection status">Connecting...</span></span>
26
+ <small class="text-muted" style="font-size: 0.875rem;">
27
+ <span id="headerVersion" style="cursor: pointer; user-select: none;" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Click to check for updates">v...</span>
28
+ <span id="updateIndicator" class="badge bg-info text-dark ms-1" style="display: none; font-size: 0.7rem;"></span>
29
+ </small>
30
30
  </span>
31
31
  </span>
32
32
 
@@ -34,6 +34,7 @@
34
34
  <li class="nav-item"><a href="#" class="nav-link px-2 text-white" data-section="monitoring"
35
35
  aria-current="page">Monitoring</a></li>
36
36
  <li class="nav-item"><a href="#" class="nav-link px-2" data-section="config">Config</a></li>
37
+ <li class="nav-item"><a href="https://docs.citra.space/citrascope/" class="nav-link px-2" target="_blank">Docs</a></li>
37
38
  <li class="nav-item"><a href="#" class="nav-link bg-success text-white btn" style="display: none;"
38
39
  id="taskScopeButton" target="_blank">Task my Scope</a></li>
39
40
  </ul>
@@ -57,8 +58,8 @@
57
58
  </div>
58
59
  <div class="card-body">
59
60
  <div class="row mb-2">
60
- <div class="col-6 fw-semibold">Hardware</div>
61
- <div class="col-6" id="hardwareAdapter">-</div>
61
+ <div class="col-6 fw-semibold">Daemon</div>
62
+ <div class="col-6" id="wsStatus"><span class="badge rounded-pill bg-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Dashboard connection status">Connecting...</span></div>
62
63
  </div>
63
64
  <div class="row mb-2">
64
65
  <div class="col-6 fw-semibold">Telescope</div>
@@ -68,6 +69,15 @@
68
69
  <div class="col-6 fw-semibold">Camera</div>
69
70
  <div class="col-6" id="cameraConnected"><span class="badge rounded-pill bg-secondary">Unknown</span></div>
70
71
  </div>
72
+ <div class="row">
73
+ <div class="col-6 fw-semibold">Task Processing</div>
74
+ <div class="col-6 d-flex align-items-center gap-2">
75
+ <span id="processingStatus"><span class="badge rounded-pill bg-success">Active</span></span>
76
+ <button id="toggleProcessingButton" class="btn btn-sm btn-secondary" title="Pause task processing">
77
+ <span id="processingButtonIcon">Pause</span>
78
+ </button>
79
+ </div>
80
+ </div>
71
81
  </div>
72
82
  </div>
73
83
  </div>
@@ -77,6 +87,10 @@
77
87
  Telescope
78
88
  </div>
79
89
  <div class="card-body">
90
+ <div class="row mb-2">
91
+ <div class="col-6 fw-semibold">Adapter</div>
92
+ <div class="col-6" id="hardwareAdapter">-</div>
93
+ </div>
80
94
  <div class="row mb-2">
81
95
  <div class="col-6 fw-semibold">Right Ascension</div>
82
96
  <div class="col-6" id="telescopeRA">-</div>
@@ -165,6 +179,32 @@
165
179
  </div>
166
180
  <div class="card-body">
167
181
  <div class="row g-3">
182
+ <div class="col-12">
183
+ <label for="apiEndpoint" class="form-label">API Endpoint</label>
184
+ <select id="apiEndpoint" class="form-select">
185
+ <option value="production">Production (api.citra.space)</option>
186
+ <option value="development">Development (dev.api.citra.space)</option>
187
+ <option value="custom">Custom</option>
188
+ </select>
189
+ </div>
190
+ <div class="col-12" id="customHostContainer" style="display: none;">
191
+ <label for="customHost" class="form-label">Custom API Host</label>
192
+ <input type="text" id="customHost" class="form-control" placeholder="api.example.com">
193
+ <div class="row g-2 mt-2">
194
+ <div class="col-6">
195
+ <label for="customPort" class="form-label small">Port</label>
196
+ <input type="number" id="customPort" class="form-control" value="443" placeholder="443">
197
+ </div>
198
+ <div class="col-6 d-flex align-items-end">
199
+ <div class="form-check">
200
+ <input class="form-check-input" type="checkbox" id="customUseSsl" checked>
201
+ <label class="form-check-label" for="customUseSsl">
202
+ Use SSL
203
+ </label>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ </div>
168
208
  <div class="col-12 col-md-6">
169
209
  <label for="personal_access_token" class="form-label">Personal Access Token <span class="text-danger">*</span></label>
170
210
  <input type="password" id="personal_access_token" class="form-control" placeholder="Enter your Citra API token" required>
@@ -198,6 +238,38 @@
198
238
 
199
239
  <!-- Dynamic Adapter Settings Container -->
200
240
  <div id="adapter-settings-container"></div>
241
+
242
+ <!-- Filter Configuration Section (shown when adapter supports filters) -->
243
+ <div id="filterConfigSection" style="display: none; margin-top: 1.5rem;">
244
+ <hr class="border-secondary">
245
+ <div class="d-flex justify-content-between align-items-center mb-3">
246
+ <h5 class="mb-0">Filter Configuration</h5>
247
+ <div class="text-end">
248
+ <button type="button" class="btn btn-sm btn-outline-primary" id="runAutofocusButton">
249
+ <span id="autofocusButtonText">Run Autofocus</span>
250
+ <span id="autofocusButtonSpinner" class="spinner-border spinner-border-sm ms-2" style="display: none;" role="status"></span>
251
+ </button>
252
+ <div><small class="text-muted">Note: Pause task processing before running autofocus</small></div>
253
+ </div>
254
+ </div>
255
+ <div id="filterTableContainer">
256
+ <table class="table table-dark table-sm">
257
+ <thead>
258
+ <tr>
259
+ <th>Filter ID</th>
260
+ <th>Name</th>
261
+ <th>Focus Position</th>
262
+ </tr>
263
+ </thead>
264
+ <tbody id="filterTableBody">
265
+ <!-- Filter rows will be populated by JavaScript -->
266
+ </tbody>
267
+ </table>
268
+ <div id="noFiltersMessage" class="text-muted small" style="display: none;">
269
+ No filters configured. Connect to hardware to discover filters.
270
+ </div>
271
+ </div>
272
+ </div>
201
273
  </div>
202
274
  </div>
203
275
  </div>
@@ -315,6 +387,23 @@
315
387
  data-bs-toggle="collapse" data-bs-target="#logAccordionCollapse" aria-expanded="false"
316
388
  aria-controls="logAccordionCollapse">
317
389
  <span id="latestLogLine" class="log-latest-line">Log Terminal</span>
390
+ <div class="accordion-social-links">
391
+ <a href="https://github.com/citra-space/citrascope/issues/new" target="_blank" class="social-link" title="Report an Issue" onclick="event.stopPropagation();">
392
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
393
+ <path d="M16 8c0 3.866-3.582 7-8 7a9 9 0 0 1-2.347-.306c-.584.296-1.925.864-4.181 1.234-.2.032-.352-.176-.273-.362.354-.836.674-1.95.77-2.966C.744 11.37 0 9.76 0 8c0-3.866 3.582-7 8-7s8 3.134 8 7M5 8a1 1 0 1 0-2 0 1 1 0 0 0 2 0m4 0a1 1 0 1 0-2 0 1 1 0 0 0 2 0m3 1a1 1 0 1 0 0-2 1 1 0 0 0 0 2"/>
394
+ </svg>
395
+ </a>
396
+ <a href="https://discord.gg/STgJQkWe9y" target="_blank" class="social-link" title="Join Discord" onclick="event.stopPropagation();">
397
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
398
+ <path d="M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"/>
399
+ </svg>
400
+ </a>
401
+ <a href="https://github.com/citra-space/citrascope" target="_blank" class="social-link" title="View on GitHub" onclick="event.stopPropagation();">
402
+ <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 16 16">
403
+ <path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8z"/>
404
+ </svg>
405
+ </a>
406
+ </div>
318
407
  </button>
319
408
  </h2>
320
409
  <div id="logAccordionCollapse" class="accordion-collapse collapse" aria-labelledby="logAccordionHeader"
@@ -346,6 +435,53 @@
346
435
  </div>
347
436
 
348
437
 
438
+ <!-- Version Check Modal -->
439
+ <div class="modal fade" id="versionModal" tabindex="-1" aria-labelledby="versionModalLabel" aria-hidden="true">
440
+ <div class="modal-dialog modal-dialog-centered">
441
+ <div class="modal-content bg-dark text-light border-secondary">
442
+ <div class="modal-header border-secondary">
443
+ <h5 class="modal-title" id="versionModalLabel">Version Check</h5>
444
+ <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button>
445
+ </div>
446
+ <div class="modal-body">
447
+ <div id="versionCheckLoading" style="text-align: center;">
448
+ <div class="spinner-border text-primary" role="status">
449
+ <span class="visually-hidden">Checking...</span>
450
+ </div>
451
+ <p class="mt-2">Checking for updates...</p>
452
+ </div>
453
+ <div id="versionCheckUpToDate" style="display: none;">
454
+ <p class="text-success">✓ You're up to date!</p>
455
+ <p>
456
+ <strong>Current version:</strong> <span id="modalCurrentVersionUpToDate">-</span>
457
+ </p>
458
+ </div>
459
+ <div id="versionCheckUpdateAvailable" style="display: none;">
460
+ <p class="text-warning">A new version of CitraScope is available!</p>
461
+ <p class="mb-3">
462
+ <strong>Current:</strong> <span id="modalCurrentVersion">-</span><br>
463
+ <strong>Latest:</strong> <span id="modalLatestVersion">-</span>
464
+ </p>
465
+ <p class="mb-2">To upgrade, run:</p>
466
+ <pre class="bg-secondary p-2 rounded"><code>pip install -U citrascope</code></pre>
467
+ <p class="mb-0">
468
+ <a href="#" id="releaseNotesLink" target="_blank" class="text-info">View release notes on GitHub →</a>
469
+ </p>
470
+ </div>
471
+ <div id="versionCheckError" style="display: none;">
472
+ <p class="text-muted">Unable to check for updates. You may be offline or GitHub is unreachable.</p>
473
+ <p>
474
+ <strong>Current version:</strong> <span id="modalCurrentVersionError">-</span>
475
+ </p>
476
+ </div>
477
+ </div>
478
+ <div class="modal-footer border-secondary">
479
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
480
+ </div>
481
+ </div>
482
+ </div>
483
+ </div>
484
+
349
485
  <script type="module" src="/static/app.js"></script>
350
486
 
351
487
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: citrascope
3
- Version: 0.3.0
3
+ Version: 0.5.0
4
4
  Summary: Remotely control a telescope while it polls for tasks, collects and edge processes data, and delivers results and data for further processing.
5
5
  Author-email: Patrick McDavid <patrick@citra.space>
6
6
  License-Expression: MIT
@@ -9,13 +9,9 @@ Requires-Dist: click
9
9
  Requires-Dist: fastapi>=0.104.0
10
10
  Requires-Dist: httpx
11
11
  Requires-Dist: platformdirs>=4.0.0
12
- Requires-Dist: pydantic-settings
13
- Requires-Dist: pytest-cov
14
12
  Requires-Dist: python-dateutil
15
- Requires-Dist: python-json-logger
16
13
  Requires-Dist: requests
17
14
  Requires-Dist: skyfield
18
- Requires-Dist: types-python-dateutil
19
15
  Requires-Dist: uvicorn[standard]>=0.24.0
20
16
  Requires-Dist: websockets>=12.0
21
17
  Provides-Extra: all
@@ -38,10 +34,7 @@ Requires-Dist: mypy; extra == 'dev'
38
34
  Requires-Dist: pre-commit; extra == 'dev'
39
35
  Requires-Dist: pytest; extra == 'dev'
40
36
  Requires-Dist: pytest-cov; extra == 'dev'
41
- Provides-Extra: docs
42
- Requires-Dist: sphinx; extra == 'docs'
43
- Requires-Dist: sphinx-autodoc-typehints; extra == 'docs'
44
- Requires-Dist: sphinx-markdown-builder; extra == 'docs'
37
+ Requires-Dist: types-python-dateutil; extra == 'dev'
45
38
  Provides-Extra: indi
46
39
  Requires-Dist: pixelemon; extra == 'indi'
47
40
  Requires-Dist: plotly; extra == 'indi'
@@ -65,33 +58,46 @@ Remotely control a telescope while it polls for tasks, collects observations, an
65
58
  - Connects to configured telescope and camera hardware
66
59
  - Acts as a task daemon carrying out and remitting photography tasks
67
60
 
61
+ ## Documentation
62
+
63
+ Full documentation is available at [docs.citra.space](https://docs.citra.space/citrascope/).
64
+
65
+ Documentation source is maintained in the [citra-space/docs](https://github.com/citra-space/docs) repository.
66
+
68
67
  ## Installation
69
68
 
70
- ### Install with pipx
69
+ **Important:** CitraScope requires Python 3.10, 3.11, or 3.12.
71
70
 
72
- [pipx](https://pipx.pypa.io/) installs the CLI tool in an isolated environment while making it globally available:
71
+ ### Check Your Python Version
73
72
 
74
73
  ```sh
75
- pipx install citrascope
74
+ python3 --version
76
75
  ```
77
76
 
78
- ### Optional Dependencies
77
+ If you don't have a compatible version, install one with [pyenv](https://github.com/pyenv/pyenv):
79
78
 
80
- CitraScope supports different hardware adapters through optional dependency groups:
79
+ ```sh
80
+ pyenv install 3.12.0
81
+ pyenv local 3.12.0 # Sets Python 3.12.0 for the current directory
82
+ ```
81
83
 
82
- - **INDI adapter** (for Linux-based telescope control):
83
- ```sh
84
- pipx install citrascope[indi]
85
- # or with pip: pip install citrascope[indi]
86
- ```
84
+ ### Install CitraScope
87
85
 
88
- - **All optional dependencies**:
89
- ```sh
90
- pipx install citrascope[all]
91
- # or with pip: pip install citrascope[all]
92
- ```
86
+ **Recommended: Using pip in a virtual environment**
93
87
 
94
- The base installation without optional dependencies supports the NINA adapter, which works via HTTP API calls and does not require additional Python packages.
88
+ ```sh
89
+ python3 -m venv citrascope-env
90
+ source citrascope-env/bin/activate # On Windows: citrascope-env\Scripts\activate
91
+ pip install citrascope
92
+ ```
93
+
94
+ ### Optional Dependencies
95
+
96
+ For Linux-based telescope control (INDI):
97
+
98
+ ```sh
99
+ pip install citrascope[indi]
100
+ ```
95
101
 
96
102
  This provides the `citrascope` command-line tool. To see available commands:
97
103
 
@@ -101,16 +107,18 @@ citrascope --help
101
107
 
102
108
  ## Usage
103
109
 
104
- Run the CLI tool:
110
+ ### Starting the Daemon
111
+
112
+ Run the daemon with:
105
113
 
106
114
  ```sh
107
- citrascope start
115
+ citrascope
108
116
  ```
109
117
 
110
- To connect to the Citra Dev server:
118
+ By default, this starts the web interface on `http://localhost:24872`. You can customize the port:
111
119
 
112
120
  ```sh
113
- citrascope start --dev
121
+ citrascope --web-port 8080
114
122
  ```
115
123
 
116
124
  ## Developer Setup
@@ -174,10 +182,10 @@ Then create a release in the GitHub UI from the new tag. This triggers automatic
174
182
 
175
183
  If you are using Visual Studio Code, you can run or debug the project directly using the pre-configured launch options in `.vscode/launch.json`:
176
184
 
177
- - **Python: citrascope dev start** — Runs the main entry point with development options.
178
- - **Python: citrascope dev start DEBUG logging** — Runs with development options and sets log level to DEBUG for more detailed output.
185
+ - **Python: citrascope** — Runs the daemon with default settings
186
+ - **Python: citrascope (custom port)** — Runs with web interface on port 8080
179
187
 
180
- To use these, open the Run and Debug panel in VS Code, select the desired configuration, and click the Run or Debug button. This is a convenient way to start or debug the app without manually entering commands.
188
+ To use these, open the Run and Debug panel in VS Code, select the desired configuration, and click the Run or Debug button.
181
189
 
182
190
  ## Running Tests
183
191
 
@@ -1,38 +1,38 @@
1
1
  citrascope/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- citrascope/__main__.py,sha256=r8y3_mgY2fm5XOzPgkDjq-a8uQFgdrxLrzup11UEB-I,1091
3
- citrascope/citra_scope_daemon.py,sha256=e4PGeoBRzO14PN-g4bm_14WOugRhNQtUW-QzrBXvePQ,10598
2
+ citrascope/__main__.py,sha256=W7uY30MOuIlmhzVEoiZ_6BMmKrsqIvxcAxqw4-pOT3k,596
3
+ citrascope/citra_scope_daemon.py,sha256=XPskPbtenx-WNenlnbb5QhvvH_amK4vST-Uw6Pg2cts,13567
4
+ citrascope/constants.py,sha256=Mc7SLzCelUMDV96BIwP684fFLGANCOEO_mM3GCeRDVY,968
4
5
  citrascope/api/abstract_api_client.py,sha256=gjmA9mw1O-TK16nYahOWClAwqPc_L1E3F2llZJeKTPw,624
5
- citrascope/api/citra_api_client.py,sha256=FBxqVLIhozBycFqHcx_348ZvYFjWTIFiVbIKkTrgEEU,5253
6
- citrascope/hardware/abstract_astro_hardware_adapter.py,sha256=BdQrZkLSh2siszG8fGNEWpknC5wyZXZWgbaq7Zc7cAo,6131
6
+ citrascope/api/citra_api_client.py,sha256=8rpz25Diy8YhuCiQ9HqMi4TIqxAc6BbrvqoFu8u-orQ,6007
7
+ citrascope/hardware/abstract_astro_hardware_adapter.py,sha256=Xc1zNuvlyYapWto37dzFfaKM62pKDN7VC8r4oGF8Up4,8140
7
8
  citrascope/hardware/adapter_registry.py,sha256=fFIZhXYphZ_p480c6hICpcx9fNOeX-EG2tvLHm372dM,3170
8
9
  citrascope/hardware/indi_adapter.py,sha256=uNrjkfxD0zjOPfar6J-frb6A87VkEjsL7SD9N9bEsC8,29903
9
10
  citrascope/hardware/kstars_dbus_adapter.py,sha256=Nv6ijVDvgTCTZUmRFh3Wh-YS7ChiztiXF17OWlzJwoo,7001
10
- citrascope/hardware/nina_adv_http_adapter.py,sha256=RCvCefwd4RWQke8AxAlafZX6vkAY26zHPO9rWOtrQB0,26217
11
+ citrascope/hardware/nina_adv_http_adapter.py,sha256=Jzg9j74bEFdY77XX-O-UE-e3Q3Y8PQ-xL7-igXMqbwg,27637
11
12
  citrascope/hardware/nina_adv_http_survey_template.json,sha256=beg4H6Bzby-0x5uDc_eRJQ_rKs8VT64sDJyAzS_q1l4,14424
12
13
  citrascope/logging/__init__.py,sha256=YU38HLMWfbXh_H-s7W7Zx2pbCR4f_tRk7z0G8xqz4_o,179
13
14
  citrascope/logging/_citrascope_logger.py,sha256=GkqNpFJWiatqrBr8t4o2nHt7V9bBDJ8mysM0F4AXMa8,3479
14
- citrascope/logging/web_log_handler.py,sha256=PhltZ4l6kWQDL3ALrPeGmwMNZ1iEyWE_Lb5-F5CF82w,2599
15
+ citrascope/logging/web_log_handler.py,sha256=d0XQzHJZ5M1v3H351tdkBYg7EOwFzXpp7PA9nYejIV0,2659
15
16
  citrascope/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- citrascope/settings/citrascope_settings.py,sha256=hNy25dp7suh4F9kYsxIycSVBwpshjPLSHvytAPzzcpk,5930
17
+ citrascope/settings/citrascope_settings.py,sha256=C9BgX3vKDnsbwZF1NskUmkczB5ESdOSWPaHrq4rA0aQ,5635
17
18
  citrascope/settings/settings_file_manager.py,sha256=Yijb-I9hbbVJ2thkr7OrfkNknSPt1RDpsE7VvqAs0a8,4193
18
- citrascope/tasks/runner.py,sha256=Y_dySx0IXnhK6lzipzqRlC9ti5EZPEixri8FXYBWun0,12426
19
+ citrascope/tasks/runner.py,sha256=-1xSrM2Kvckmn2dg3rs2w-ljsKAbCgrftdvEkZrGaKs,13697
19
20
  citrascope/tasks/task.py,sha256=0u0oN56E6KaNz19ba_7WuY43Sk4CTXc8UPT7sdUpRXo,1287
20
21
  citrascope/tasks/scope/base_telescope_task.py,sha256=wIdyUxplFNhf_YMdCXOK6pG7HF7tZn_id59TvYyWZAY,9674
21
22
  citrascope/tasks/scope/static_telescope_task.py,sha256=XP53zYVcyLHLvebDU06Jx0ghPK3tb0c_XmO60yj_XSA,1132
22
23
  citrascope/tasks/scope/tracking_telescope_task.py,sha256=k5LEmEi_xnFHNjqPNYb8_tqDdCFD3YGe25Wh_brJXHk,1130
23
24
  citrascope/web/__init__.py,sha256=CgU36fyNSxGXjUy3hsHwx7UxF8UO4Qsb7PjC9-6tRmY,38
24
- citrascope/web/app.py,sha256=SPFtQTs8XJ_MijH8LMNO8SuIVg7AkibMEktJdIFnXbI,20146
25
- citrascope/web/server.py,sha256=9nyrjep2yajZzelWKgDUwowhRRvyo-X3nCNGt2nex8Y,4758
25
+ citrascope/web/app.py,sha256=LGimBCHWmaPrLkh6JDpJ7IoC__423lhO7NldQGTFzKI,26181
26
+ citrascope/web/server.py,sha256=IJJk4HgEwcsjHercL-Q5z39NmJRbkNk_51HIUKKhtRE,5242
26
27
  citrascope/web/static/api.js,sha256=s-b1FIw-pTo3A8kLlLINVqHhIvfHwTWA7cEvz4N8Gqc,1924
27
- citrascope/web/static/app.js,sha256=shzo_dtmTF7pu4S3bBtWo2EpIdFp5vzq8sefF8OFgl0,17620
28
- citrascope/web/static/config.js,sha256=fF9Hnd_TLJWogGP_ZnsvNzLlZBRjmmgDg9w13uMUCps,12814
29
- citrascope/web/static/style.css,sha256=wlxeWN4j5OKg9DDFnBX_WFlgNytAL61H2Mt3-NcXEZU,2155
28
+ citrascope/web/static/app.js,sha256=yvthXW68B0JedxuE8cF6HYfcH7ukDQ7g959o0DNhY80,26214
29
+ citrascope/web/static/config.js,sha256=l0brTgkQ4UW-C9a2wabkvVGwb-wPnJSmM4lb63s0KbY,21500
30
+ citrascope/web/static/style.css,sha256=haVMnKlULZ-SL_qmLyqnrwHdX28s6KzVK9uE_R5nlLo,2877
30
31
  citrascope/web/static/websocket.js,sha256=UITw1DDfehOKpjlltn5MXhewZYGKzPFmaTtMFtC0-Ps,3931
31
32
  citrascope/web/static/img/citra.png,sha256=Bq8dPWB6fNz7a_H0FuEtNmZWcPHH2iV2OC-fMg4REbQ,205570
32
33
  citrascope/web/static/img/favicon.png,sha256=zrbUlpFXDB_zmsIdhhn8_klnc2Ma3N6Q8ouBMAxFjbM,24873
33
- citrascope/web/templates/dashboard.html,sha256=pRaD8Dzxo9BqDxMktBz24xbTkWpeC6_Wa41yJdJFV48,18293
34
- docs/index.md,sha256=YQDeVrN9AcbRzo88Jc4iRCO70gAh_4GSgImrJMwcSCo,1402
35
- citrascope-0.3.0.dist-info/METADATA,sha256=8tWhBpEf785kKyW5aPkA-MxNwof6-MWqDLQQWEp7-iQ,6650
36
- citrascope-0.3.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
37
- citrascope-0.3.0.dist-info/entry_points.txt,sha256=fP22Lt8bNZ_whBowDnOWSADf_FUrgAWnIhqqPf5Xo2g,55
38
- citrascope-0.3.0.dist-info/RECORD,,
34
+ citrascope/web/templates/dashboard.html,sha256=7N5JPlihK3WNDe8fnFMfIRfCgp4ZZJLbl2TVc_nY0SU,30119
35
+ citrascope-0.5.0.dist-info/METADATA,sha256=dgATUjmZWMhRrItDYeCkZ-oy-AQz63BDdbeZHsWY12A,6481
36
+ citrascope-0.5.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
37
+ citrascope-0.5.0.dist-info/entry_points.txt,sha256=fP22Lt8bNZ_whBowDnOWSADf_FUrgAWnIhqqPf5Xo2g,55
38
+ citrascope-0.5.0.dist-info/RECORD,,
docs/index.md DELETED
@@ -1,47 +0,0 @@
1
- # CitraScope Documentation
2
-
3
- Welcome to the CitraScope documentation.
4
-
5
- ## Overview
6
-
7
- CitraScope is a Python application for remote telescope control, task automation, and data collection.
8
- It connects to the Citra.space API and INDI hardware to execute observation tasks.
9
-
10
- ## Architecture
11
-
12
- - **CLI Entrypoint:** `citrascope/__main__.py`
13
- Handles configuration, authentication, and starts the task daemon.
14
- - **API Client:** `citrascope/api/client.py`
15
- Communicates with Citra.space for authentication, telescope, satellite, and ground station data.
16
- - **Task Management:** `citrascope/tasks/runner.py`
17
- Polls for tasks, schedules, and executes observations.
18
- - **Settings:** `citrascope/settings/_citrascope_settings.py`
19
- Loads configuration from environment variables.
20
-
21
- ## Configuration
22
-
23
- See [README.md](../README.md) for installation and environment setup.
24
- Environment variables are documented in `.env.example`.
25
-
26
- ## Usage
27
-
28
- Run the CLI:
29
- ```sh
30
- python -m citrascope start
31
- ```
32
- Or use VS Code launch configurations for development and debugging.
33
-
34
- ## Testing
35
-
36
- - **Unit tests** are written using [pytest](https://pytest.org/) and are located in the `tests/` directory.
37
- - To run tests manually, use:
38
-
39
- ```bash
40
- pytest
41
- ```
42
-
43
- ## Further Documentation
44
-
45
- - [API Reference](https://api.citra.space/docs)
46
- - [Contributing Guide](contributing.md) (coming soon)
47
- - [Troubleshooting](troubleshooting.md) (coming soon)