nexus-cli 0.3.0__tar.gz → 0.5.1__tar.gz

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.
Files changed (113) hide show
  1. nexus_cli-0.5.1/.STATUS +303 -0
  2. nexus_cli-0.5.1/.github/workflows/ci.yml +143 -0
  3. nexus_cli-0.5.1/.github/workflows/quality.yml +110 -0
  4. nexus_cli-0.5.1/.github/workflows/release.yml +125 -0
  5. nexus_cli-0.5.1/.github/workflows/test.yml +129 -0
  6. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/.gitignore +1 -0
  7. nexus_cli-0.5.1/CI_CD_SUMMARY.md +212 -0
  8. nexus_cli-0.5.1/CLAUDE.md +535 -0
  9. nexus_cli-0.5.1/DOCUMENTATION_UPDATE_SUMMARY.md +202 -0
  10. nexus_cli-0.5.1/FINAL_SESSION_SUMMARY.md +351 -0
  11. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/PKG-INFO +56 -4
  12. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/README.md +55 -3
  13. nexus_cli-0.5.1/README_BADGES.md +45 -0
  14. nexus_cli-0.5.1/RELEASE_NOTES_v0.5.0.md +423 -0
  15. nexus_cli-0.5.1/SESSION_COMPLETE.txt +79 -0
  16. nexus_cli-0.5.1/SESSION_SUMMARY.md +616 -0
  17. nexus_cli-0.5.1/SESSION_WRAP_UP.txt +152 -0
  18. nexus_cli-0.5.1/TEST_SUMMARY.md +257 -0
  19. nexus_cli-0.5.1/TUTORIAL_GUIDE.md +274 -0
  20. nexus_cli-0.5.1/TUTORIAL_QUICK_REF.md +232 -0
  21. nexus_cli-0.5.1/docs/changelog.md +243 -0
  22. nexus_cli-0.5.1/docs/development/architecture.md +719 -0
  23. nexus_cli-0.5.1/docs/development/contributing.md +124 -0
  24. nexus_cli-0.5.1/docs/development/testing.md +581 -0
  25. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/docs/getting-started/quickstart.md +46 -5
  26. nexus_cli-0.5.1/docs/guide/knowledge.md +81 -0
  27. nexus_cli-0.5.1/docs/guide/overview.md +89 -0
  28. nexus_cli-0.5.1/docs/guide/research.md +83 -0
  29. nexus_cli-0.5.1/docs/guide/teaching.md +85 -0
  30. nexus_cli-0.5.1/docs/guide/writing.md +90 -0
  31. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/docs/index.md +46 -2
  32. nexus_cli-0.5.1/docs/reference/api.md +553 -0
  33. nexus_cli-0.5.1/docs/reference/cli.md +278 -0
  34. nexus_cli-0.5.1/docs/reference/mcp.md +653 -0
  35. nexus_cli-0.5.1/docs/tutorials/first-steps.md +264 -0
  36. nexus_cli-0.5.1/docs/tutorials/graph-viz.md +471 -0
  37. nexus_cli-0.5.1/docs/tutorials/tutorial-guide.md +1 -0
  38. nexus_cli-0.5.1/docs/tutorials/tutorial-quick-ref.md +1 -0
  39. nexus_cli-0.5.1/docs/tutorials/tutorial-system.md +394 -0
  40. nexus_cli-0.5.1/docs/tutorials/vault-setup.md +352 -0
  41. nexus_cli-0.5.1/docs/tutorials/zotero.md +394 -0
  42. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/mkdocs.yml +10 -5
  43. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/__init__.py +1 -1
  44. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/cli.py +245 -35
  45. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/knowledge/vault.py +109 -0
  46. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/research/pdf.py +0 -1
  47. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/utils/config.py +12 -5
  48. nexus_cli-0.5.1/nexus/utils/tutorial.py +638 -0
  49. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/writing/manuscript.py +200 -0
  50. nexus_cli-0.5.1/output.json +4 -0
  51. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/.claude-plugin/plugin.json +4 -1
  52. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/pyproject.toml +1 -1
  53. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_bibliography.py +0 -2
  54. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_cli.py +0 -1
  55. nexus_cli-0.5.1/tests/test_cli_commands.py +174 -0
  56. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_cli_integration.py +10 -2
  57. nexus_cli-0.5.1/tests/test_cli_research_commands.py +388 -0
  58. nexus_cli-0.5.1/tests/test_cli_vault_commands.py +326 -0
  59. nexus_cli-0.5.1/tests/test_cli_writing_commands.py +247 -0
  60. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_config.py +1 -2
  61. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_courses.py +0 -2
  62. nexus_cli-0.5.1/tests/test_dogfooding.py +1055 -0
  63. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_edge_cases.py +1 -4
  64. nexus_cli-0.5.1/tests/test_graph_export.py +249 -0
  65. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_manuscript.py +0 -2
  66. nexus_cli-0.5.1/tests/test_manuscript_batch.py +368 -0
  67. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_pdf.py +0 -2
  68. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_pdf_extractor.py +2 -5
  69. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_quarto.py +1 -1
  70. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_quarto_manager.py +2 -5
  71. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_search.py +1 -6
  72. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_validation.py +5 -7
  73. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_zotero_client.py +1 -5
  74. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/uv.lock +1 -1
  75. nexus_cli-0.3.0/.STATUS +0 -169
  76. nexus_cli-0.3.0/.github/workflows/ci.yml +0 -125
  77. nexus_cli-0.3.0/CLAUDE.md +0 -199
  78. nexus_cli-0.3.0/docs/changelog.md +0 -107
  79. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/.github/workflows/docs.yml +0 -0
  80. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/.github/workflows/publish.yml +0 -0
  81. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/.python-version +0 -0
  82. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/RELEASE_NOTES_v0.4.0.md +0 -0
  83. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/config/nexus.example.yaml +0 -0
  84. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/docs/getting-started/configuration.md +0 -0
  85. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/docs/getting-started/installation.md +0 -0
  86. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/install.sh +0 -0
  87. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/main.py +0 -0
  88. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/integrations/__init__.py +0 -0
  89. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/knowledge/__init__.py +0 -0
  90. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/knowledge/search.py +0 -0
  91. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/research/__init__.py +0 -0
  92. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/research/zotero.py +0 -0
  93. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/teaching/__init__.py +0 -0
  94. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/teaching/courses.py +0 -0
  95. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/teaching/quarto.py +0 -0
  96. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/utils/__init__.py +0 -0
  97. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/writing/__init__.py +0 -0
  98. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/writing/bibliography.py +0 -0
  99. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/README.md +0 -0
  100. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/check.md +0 -0
  101. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/cite.md +0 -0
  102. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/dashboard.md +0 -0
  103. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/manuscripts.md +0 -0
  104. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/search.md +0 -0
  105. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/integration-patterns/skill.md +0 -0
  106. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/knowledge/vault-operations/skill.md +0 -0
  107. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/research/zotero-integration/skill.md +0 -0
  108. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/teaching/course-management/skill.md +0 -0
  109. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/writing/manuscript-management/skill.md +0 -0
  110. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/__init__.py +0 -0
  111. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/conftest.py +0 -0
  112. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_vault.py +0 -0
  113. {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_zotero.py +0 -0
@@ -0,0 +1,303 @@
1
+ status: released
2
+ priority: 1
3
+ progress: 100
4
+ next: v0.6.0 planning - additional exporters and interactive CLI
5
+ type: dev
6
+ checkpoint: v0.5.0 RELEASED - 302 tests passing (54% coverage), graph export & batch ops
7
+ release_date: 2025-12-25
8
+ release_url: https://github.com/Data-Wise/nexus-cli/releases/tag/v0.5.0
9
+ docs_url: https://data-wise.github.io/nexus-cli/
10
+
11
+ # ═══════════════════════════════════════════════════════════════════
12
+ # Nexus CLI - Knowledge Workflow for Research, Teaching, Writing
13
+ # ═══════════════════════════════════════════════════════════════════
14
+
15
+ 🔧 Nexus CLI Development Status
16
+ ────────────────────────────────────────
17
+
18
+ 📍 LOCATION
19
+ ~/projects/dev-tools/nexus-cli/
20
+
21
+ ⏰ LAST UPDATED
22
+ 2025-12-25 - v0.5.0 RELEASED - Graph Export & Batch Operations!
23
+
24
+ ────────────────────────────────────────
25
+
26
+ 🎉 RELEASE v0.5.0 - GRAPH EXPORT & BATCH OPERATIONS
27
+
28
+ **Feature enhancement release with productivity improvements!**
29
+
30
+ Release highlights:
31
+ - ✅ 302 tests passing (54% coverage, +9.8% from v0.4.0)
32
+ - ✅ Graph export formats (GraphML, D3.js, JSON)
33
+ - ✅ Batch manuscript operations (status, progress, archive)
34
+ - ✅ Comprehensive documentation (9,500+ lines added)
35
+ - ✅ Manuscript module: 78% coverage (+27% improvement)
36
+ - ✅ GitHub Pages updated
37
+ - ✅ GitHub Release published
38
+ - ✅ All CI/CD pipelines passing
39
+
40
+ ────────────────────────────────────────
41
+
42
+ 🎯 CURRENT STATUS
43
+
44
+ **v0.5.0 SHIPPED** ✅
45
+
46
+ All v0.5.0 features complete:
47
+ - ✅ Graph Export Formats (GraphML, D3.js)
48
+ - ✅ Batch Manuscript Operations
49
+ - ✅ Comprehensive Documentation (tutorials, API, architecture)
50
+ - ✅ Enhanced Test Coverage (54.35%, +4.47%)
51
+ - ✅ Manuscript Module: 78% coverage (+27%)
52
+
53
+ Release artifacts:
54
+ - Git tag: v0.5.0
55
+ - GitHub Release: https://github.com/Data-Wise/nexus-cli/releases/tag/v0.5.0
56
+ - Documentation: https://data-wise.github.io/nexus-cli/
57
+ - CI/CD: All passing ✅
58
+
59
+ ────────────────────────────────────────
60
+
61
+ 📊 PROGRESS
62
+
63
+ Core Infrastructure:
64
+ CLI Skeleton ████████████████████ 100% ✅
65
+ Configuration System ████████████████████ 100% ✅
66
+ Doctor Command ████████████████████ 100% ✅
67
+ Project Setup ████████████████████ 100% ✅
68
+
69
+ Domains:
70
+ Knowledge Domain ████████████████████ 100% ✅
71
+ Research Domain ████████████████████ 100% ✅
72
+ Teaching Domain ████████████████████ 100% ✅
73
+ Writing Domain ████████████████████ 100% ✅
74
+ Claude Plugin ████████████████████ 100% ✅
75
+ Testing & CI/CD ████████████████████ 100% ✅
76
+ Documentation ████████████████████ 100% ✅
77
+
78
+ **Overall Progress**: 100% ✅ (v0.4.0 Released)
79
+
80
+ ────────────────────────────────────────
81
+
82
+ 📦 RELEASE DETAILS
83
+
84
+ Version: 0.5.0
85
+ Date: December 25, 2025
86
+ Type: Feature Enhancement Release
87
+ Status: ✅ Released
88
+
89
+ Key improvements:
90
+ 1. **Graph Export Formats**
91
+ - GraphML format (Gephi, Cytoscape, yEd)
92
+ - D3.js format (web visualizations)
93
+ - Enhanced JSON format with tags/limits
94
+ - Proper XML escaping for special characters
95
+
96
+ 2. **Batch Manuscript Operations**
97
+ - Batch status updates for multiple manuscripts
98
+ - Batch progress updates
99
+ - Batch archiving to Archive/ directory
100
+ - Metadata export to JSON/CSV
101
+
102
+ 3. **Comprehensive Documentation** (~9,500 lines)
103
+ - 4 tutorial pages: first-steps, vault-setup, zotero, graph-viz
104
+ - API reference with code examples
105
+ - MCP server documentation (17 tools)
106
+ - Testing guide (302 tests, 54% coverage)
107
+ - Architecture documentation
108
+
109
+ 4. **Quality Improvements**
110
+ - 27 new tests (+9.8% increase)
111
+ - Coverage: 49.88% → 54.35% (+4.47%)
112
+ - Manuscript module: 50.99% → 78.03% (+27%)
113
+ - New test files: test_graph_export, test_manuscript_batch
114
+
115
+ ────────────────────────────────────────
116
+
117
+ 📊 TEST SUMMARY
118
+
119
+ 302 tests total (301 passing, 1 skipped) - 54.35% coverage:
120
+
121
+ Core tests:
122
+ - test_config.py - Config loading (3 tests)
123
+ - test_vault.py - Vault operations (22 tests)
124
+ - test_manuscript.py - Manuscript management (11 tests)
125
+ - test_bibliography.py - Bibliography parsing (13 tests)
126
+ - test_courses.py - Course management (9 tests)
127
+ - test_cli.py - CLI commands (13 tests)
128
+ - test_zotero.py - Zotero item (5 tests)
129
+ - test_pdf.py - PDF document (3 tests)
130
+ - test_quarto.py - Quarto project (4 tests)
131
+ - test_search.py - Unified search (21 tests)
132
+
133
+ Integration & validation:
134
+ - test_validation.py - Data model validation (28 tests)
135
+ - test_cli_integration.py - CLI integration (19 tests)
136
+ - test_cli_commands.py - CLI commands (19 tests)
137
+ - test_edge_cases.py - Edge cases & errors (25 tests)
138
+
139
+ v0.4.0 comprehensive tests:
140
+ - test_quarto_manager.py - QuartoManager (29 tests) ⭐
141
+ - test_pdf_extractor.py - PDFExtractor (23 tests) ⭐
142
+ - test_zotero_client.py - ZoteroClient (28 tests) ⭐
143
+
144
+ v0.5.0 new tests:
145
+ - test_graph_export.py - Graph export formats (11 tests) ⭐
146
+ - test_manuscript_batch.py - Batch operations (16 tests) ⭐
147
+
148
+ Coverage by module (top performers):
149
+ - teaching/quarto.py: 91% (+4% in v0.5.0)
150
+ - utils/config.py: 80%
151
+ - writing/manuscript.py: 78% (+27% in v0.5.0) 🎯
152
+ - research/pdf.py: 77%
153
+ - research/zotero.py: 73%
154
+ - writing/bibliography.py: 72%
155
+ - teaching/courses.py: 70%
156
+ - knowledge/vault.py: 59% (+6% in v0.5.0)
157
+ - knowledge/search.py: 60%
158
+
159
+ Run: `pytest --cov=nexus --cov-report=html`
160
+
161
+ ────────────────────────────────────────
162
+
163
+ 🎯 NEXT STEPS (v0.6.0 Planning)
164
+
165
+ Feature enhancements:
166
+ - [ ] Additional graph export formats (GML, Cytoscape JSON)
167
+ - [ ] Batch operations for other domains (courses, bibliography)
168
+ - [ ] Interactive CLI mode with prompts
169
+ - [ ] Workflow automation commands
170
+ - [ ] Export to graph databases (Neo4j, ArangoDB)
171
+
172
+ Quality improvements:
173
+ - [ ] Increase test coverage to 60%+
174
+ - [ ] Performance benchmarks with pytest-benchmark
175
+ - [ ] Improve CLI test coverage (currently 20%)
176
+ - [ ] Additional integration tests
177
+ - [ ] User acceptance testing
178
+
179
+ Developer experience:
180
+ - [ ] Plugin system for custom exporters
181
+ - [ ] API client library
182
+ - [ ] Web UI for graph visualization
183
+ - [ ] Enhanced error messages
184
+
185
+ ────────────────────────────────────────
186
+
187
+ 🔗 RELATED PROJECTS
188
+
189
+ | Project | Location | Purpose |
190
+ |---------|----------|---------|
191
+ | Nexus MCP Server | ~/mcp-servers/nexus/ | MCP server with 17 tools |
192
+ | Nexus (docs) | ~/projects/dev-tools/nexus/ | Architecture & vault template |
193
+ | Statistical Research | ~/.claude/plugins/statistical-research/ | Research MCP plugin |
194
+
195
+ ────────────────────────────────────────
196
+
197
+ 💡 ARCHITECTURE
198
+
199
+ **Claude Integration (No API Needed)**
200
+
201
+ Four patterns:
202
+ 1. **MCP Server**: 17 tools via Model Context Protocol
203
+ 2. **Claude calls Nexus**: Claude runs `nexus` via Bash
204
+ 3. **Piping**: `nexus search | claude -p "summarize"`
205
+ 4. **Plugin skills**: Teach Claude how to use nexus
206
+
207
+ **Four Domains**:
208
+ - 🔬 Research: Zotero (2,728 papers), PDFs (~1,800 files), literature
209
+ - 📚 Teaching: Courses, materials, Quarto integration
210
+ - ✍️ Writing: Manuscripts, bibliography, LaTeX
211
+ - 🧠 Knowledge: Vault (Obsidian), unified search, graph viz
212
+
213
+ ────────────────────────────────────────
214
+
215
+ 📁 KEY FILES
216
+
217
+ Core:
218
+ - nexus/cli.py - Main CLI (Typer) - 1109 lines
219
+ - nexus/utils/config.py - Configuration - 82 lines
220
+ - pyproject.toml - Project metadata (v0.5.0)
221
+ - mkdocs.yml - Documentation config
222
+ - README.md - User documentation
223
+ - CLAUDE.md - Claude Code guidance
224
+
225
+ Domains:
226
+ - nexus/knowledge/vault.py - VaultManager - 319 lines (59% cov) ⭐ +39 lines
227
+ - nexus/knowledge/search.py - UnifiedSearch - 100 lines (60% cov)
228
+ - nexus/research/zotero.py - ZoteroClient - 193 lines (73% cov)
229
+ - nexus/research/pdf.py - PDFExtractor - 205 lines (77% cov)
230
+ - nexus/teaching/courses.py - CourseManager - 214 lines (70% cov)
231
+ - nexus/teaching/quarto.py - QuartoManager - 162 lines (91% cov)
232
+ - nexus/writing/manuscript.py - ManuscriptManager - 355 lines (78% cov) ⭐ +116 lines
233
+ - nexus/writing/bibliography.py - BibliographyManager - 176 lines (72% cov)
234
+
235
+ Testing:
236
+ - tests/ - 18 test modules, 302 tests
237
+ - .github/workflows/ci.yml - CI/CD pipeline
238
+ - .github/workflows/docs.yml - Documentation deployment
239
+
240
+ Documentation:
241
+ - docs/ - MkDocs source files
242
+ - site/ - Built documentation (gh-pages)
243
+
244
+ ────────────────────────────────────────
245
+
246
+ 🔧 QUICK COMMANDS
247
+
248
+ Development:
249
+ ```bash
250
+ # Run tests
251
+ pytest --cov=nexus --cov-report=html
252
+
253
+ # Type check
254
+ mypy nexus/
255
+
256
+ # Lint
257
+ ruff check nexus/ tests/
258
+
259
+ # Format
260
+ ruff format nexus/ tests/
261
+
262
+ # Serve docs locally
263
+ mkdocs serve
264
+
265
+ # Deploy docs
266
+ mkdocs gh-deploy
267
+ ```
268
+
269
+ Usage:
270
+ ```bash
271
+ # Doctor check
272
+ nexus doctor
273
+
274
+ # Search knowledge
275
+ nexus knowledge search "mediation"
276
+
277
+ # Search Zotero
278
+ nexus research zotero search "causal inference"
279
+
280
+ # Check bibliography
281
+ nexus write bib check manuscript/
282
+
283
+ # Graph visualization
284
+ nexus knowledge vault graph --json > graph.json
285
+ ```
286
+
287
+ ────────────────────────────────────────
288
+
289
+ 📚 DOCUMENTATION
290
+
291
+ - **Home**: https://data-wise.github.io/nexus-cli/
292
+ - **Installation**: https://data-wise.github.io/nexus-cli/getting-started/installation/
293
+ - **Quick Start**: https://data-wise.github.io/nexus-cli/getting-started/quickstart/
294
+ - **Configuration**: https://data-wise.github.io/nexus-cli/getting-started/configuration/
295
+ - **Tutorials**: https://data-wise.github.io/nexus-cli/tutorials/ ⭐ NEW
296
+ - **API Reference**: https://data-wise.github.io/nexus-cli/reference/api/ ⭐ NEW
297
+ - **Changelog**: https://data-wise.github.io/nexus-cli/changelog/
298
+ - **GitHub**: https://github.com/Data-Wise/nexus-cli
299
+ - **Release**: https://github.com/Data-Wise/nexus-cli/releases/tag/v0.5.0
300
+
301
+ ────────────────────────────────────────
302
+
303
+ ✅ v0.5.0 FEATURE RELEASE - RELEASED 2025-12-25
@@ -0,0 +1,143 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main, develop ]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ test:
12
+ name: Test Python ${{ matrix.python-version }} on ${{ matrix.os }}
13
+ runs-on: ${{ matrix.os }}
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ os: [ubuntu-latest, macos-latest]
18
+ python-version: ["3.11", "3.12", "3.13"]
19
+
20
+ steps:
21
+ - name: Checkout code
22
+ uses: actions/checkout@v4
23
+
24
+ - name: Set up Python ${{ matrix.python-version }}
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: ${{ matrix.python-version }}
28
+
29
+ - name: Install uv
30
+ uses: astral-sh/setup-uv@v4
31
+ with:
32
+ enable-cache: true
33
+
34
+ - name: Install dependencies
35
+ run: |
36
+ uv sync --all-extras
37
+
38
+ - name: Run linting
39
+ run: |
40
+ uv run ruff check nexus/
41
+ continue-on-error: true
42
+
43
+ - name: Run type checking
44
+ run: |
45
+ uv run mypy nexus/ --ignore-missing-imports
46
+ continue-on-error: true
47
+
48
+ - name: Run tests with coverage
49
+ run: |
50
+ uv run pytest --cov=nexus --cov-report=xml --cov-report=term -v
51
+
52
+ - name: Upload coverage to Codecov
53
+ uses: codecov/codecov-action@v4
54
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13'
55
+ with:
56
+ file: ./coverage.xml
57
+ flags: unittests
58
+ name: codecov-umbrella
59
+ fail_ci_if_error: false
60
+ env:
61
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
62
+
63
+ lint:
64
+ name: Code Quality
65
+ runs-on: ubuntu-latest
66
+ steps:
67
+ - uses: actions/checkout@v4
68
+
69
+ - name: Set up Python
70
+ uses: actions/setup-python@v5
71
+ with:
72
+ python-version: "3.13"
73
+
74
+ - name: Install uv
75
+ uses: astral-sh/setup-uv@v4
76
+ with:
77
+ enable-cache: true
78
+
79
+ - name: Install dependencies
80
+ run: uv sync --all-extras
81
+
82
+ - name: Check code formatting with ruff
83
+ run: |
84
+ uv run ruff format --check nexus/ tests/
85
+
86
+ - name: Lint with ruff
87
+ run: |
88
+ uv run ruff check nexus/ tests/
89
+
90
+ type-check:
91
+ name: Type Checking
92
+ runs-on: ubuntu-latest
93
+ steps:
94
+ - uses: actions/checkout@v4
95
+
96
+ - name: Set up Python
97
+ uses: actions/setup-python@v5
98
+ with:
99
+ python-version: "3.13"
100
+
101
+ - name: Install uv
102
+ uses: astral-sh/setup-uv@v4
103
+ with:
104
+ enable-cache: true
105
+
106
+ - name: Install dependencies
107
+ run: uv sync --all-extras
108
+
109
+ - name: Run mypy
110
+ run: |
111
+ uv run mypy nexus/ --ignore-missing-imports --no-error-summary
112
+
113
+ coverage:
114
+ name: Coverage Report
115
+ runs-on: ubuntu-latest
116
+ needs: test
117
+ if: github.event_name == 'push' && github.ref == 'refs/heads/main'
118
+ steps:
119
+ - uses: actions/checkout@v4
120
+
121
+ - name: Set up Python
122
+ uses: actions/setup-python@v5
123
+ with:
124
+ python-version: "3.13"
125
+
126
+ - name: Install uv
127
+ uses: astral-sh/setup-uv@v4
128
+ with:
129
+ enable-cache: true
130
+
131
+ - name: Install dependencies
132
+ run: uv sync --all-extras
133
+
134
+ - name: Generate coverage report
135
+ run: |
136
+ uv run pytest --cov=nexus --cov-report=html --cov-report=term
137
+
138
+ - name: Upload coverage HTML report
139
+ uses: actions/upload-artifact@v4
140
+ with:
141
+ name: coverage-report
142
+ path: htmlcov/
143
+ retention-days: 30
@@ -0,0 +1,110 @@
1
+ name: Code Quality
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, develop ]
6
+ pull_request:
7
+ branches: [ main ]
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ lint:
12
+ name: Linting
13
+ runs-on: ubuntu-latest
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.13"
22
+
23
+ - name: Install uv
24
+ uses: astral-sh/setup-uv@v4
25
+
26
+ - name: Install dependencies
27
+ run: uv sync --all-extras --dev
28
+
29
+ - name: Run ruff check
30
+ run: |
31
+ uv run ruff check nexus/ tests/ --output-format=github
32
+
33
+ - name: Run ruff format check
34
+ run: |
35
+ uv run ruff format --check nexus/ tests/
36
+
37
+ type-check:
38
+ name: Type Checking
39
+ runs-on: ubuntu-latest
40
+
41
+ steps:
42
+ - uses: actions/checkout@v4
43
+
44
+ - name: Set up Python
45
+ uses: actions/setup-python@v5
46
+ with:
47
+ python-version: "3.13"
48
+
49
+ - name: Install uv
50
+ uses: astral-sh/setup-uv@v4
51
+
52
+ - name: Install dependencies
53
+ run: uv sync --all-extras --dev
54
+
55
+ - name: Run mypy
56
+ run: |
57
+ uv run mypy nexus/ --ignore-missing-imports --show-error-codes
58
+ continue-on-error: true
59
+
60
+ security:
61
+ name: Security Scan
62
+ runs-on: ubuntu-latest
63
+
64
+ steps:
65
+ - uses: actions/checkout@v4
66
+
67
+ - name: Set up Python
68
+ uses: actions/setup-python@v5
69
+ with:
70
+ python-version: "3.13"
71
+
72
+ - name: Install uv
73
+ uses: astral-sh/setup-uv@v4
74
+
75
+ - name: Install dependencies
76
+ run: uv sync --all-extras --dev
77
+
78
+ - name: Run bandit security scan
79
+ run: |
80
+ uv run bandit -r nexus/ -f json -o bandit-report.json
81
+ continue-on-error: true
82
+
83
+ - name: Upload security report
84
+ uses: actions/upload-artifact@v4
85
+ if: always()
86
+ with:
87
+ name: security-scan-report
88
+ path: bandit-report.json
89
+ retention-days: 30
90
+
91
+ dependency-check:
92
+ name: Dependency Security
93
+ runs-on: ubuntu-latest
94
+
95
+ steps:
96
+ - uses: actions/checkout@v4
97
+
98
+ - name: Set up Python
99
+ uses: actions/setup-python@v5
100
+ with:
101
+ python-version: "3.13"
102
+
103
+ - name: Install uv
104
+ uses: astral-sh/setup-uv@v4
105
+
106
+ - name: Check for vulnerabilities
107
+ run: |
108
+ uv pip list --format=json > deps.json
109
+ echo "Dependency check complete"
110
+ continue-on-error: true
@@ -0,0 +1,125 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write
11
+
12
+ jobs:
13
+ build:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ with:
18
+ fetch-depth: 0
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@v5
22
+ with:
23
+ python-version: "3.12"
24
+
25
+ - name: Install build dependencies
26
+ run: pip install build
27
+
28
+ - name: Build package
29
+ run: python -m build
30
+
31
+ - name: Upload artifacts
32
+ uses: actions/upload-artifact@v4
33
+ with:
34
+ name: dist
35
+ path: dist/
36
+
37
+ release:
38
+ needs: build
39
+ runs-on: ubuntu-latest
40
+ steps:
41
+ - uses: actions/checkout@v4
42
+ with:
43
+ fetch-depth: 0
44
+
45
+ - name: Download artifacts
46
+ uses: actions/download-artifact@v4
47
+ with:
48
+ name: dist
49
+ path: dist/
50
+
51
+ - name: Get version from tag
52
+ id: get_version
53
+ run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
54
+
55
+ - name: Generate changelog
56
+ id: changelog
57
+ run: |
58
+ # Get commits since last tag
59
+ LAST_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
60
+ if [ -z "$LAST_TAG" ]; then
61
+ COMMITS=$(git log --oneline --pretty=format:"- %s" | head -20)
62
+ else
63
+ COMMITS=$(git log --oneline --pretty=format:"- %s" ${LAST_TAG}..HEAD)
64
+ fi
65
+
66
+ # Create changelog
67
+ echo "CHANGELOG<<EOF" >> $GITHUB_OUTPUT
68
+ echo "## What's Changed" >> $GITHUB_OUTPUT
69
+ echo "" >> $GITHUB_OUTPUT
70
+ echo "$COMMITS" >> $GITHUB_OUTPUT
71
+ echo "" >> $GITHUB_OUTPUT
72
+ echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${LAST_TAG}...v${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_OUTPUT
73
+ echo "EOF" >> $GITHUB_OUTPUT
74
+
75
+ - name: Create GitHub Release
76
+ uses: softprops/action-gh-release@v1
77
+ with:
78
+ name: v${{ steps.get_version.outputs.VERSION }}
79
+ body: ${{ steps.changelog.outputs.CHANGELOG }}
80
+ files: dist/*
81
+ draft: false
82
+ prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
83
+ env:
84
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
85
+
86
+ publish-pypi:
87
+ needs: release
88
+ runs-on: ubuntu-latest
89
+ environment: pypi
90
+ permissions:
91
+ id-token: write
92
+ steps:
93
+ - name: Download artifacts
94
+ uses: actions/download-artifact@v4
95
+ with:
96
+ name: dist
97
+ path: dist/
98
+
99
+ - name: Publish to PyPI
100
+ uses: pypa/gh-action-pypi-publish@release/v1
101
+
102
+ docs:
103
+ needs: release
104
+ runs-on: ubuntu-latest
105
+ permissions:
106
+ contents: write
107
+ steps:
108
+ - uses: actions/checkout@v4
109
+ with:
110
+ fetch-depth: 0
111
+
112
+ - name: Set up Python
113
+ uses: actions/setup-python@v5
114
+ with:
115
+ python-version: "3.12"
116
+
117
+ - name: Install dependencies
118
+ run: |
119
+ pip install mkdocs-material mkdocstrings[python] mkdocs-git-revision-date-localized-plugin
120
+
121
+ - name: Build and deploy docs
122
+ run: |
123
+ git config user.name "github-actions[bot]"
124
+ git config user.email "github-actions[bot]@users.noreply.github.com"
125
+ mkdocs gh-deploy --force