Skip to content

Commit 5277843

Browse files
Merge pull request #16 from etienneschalk/develop
Release 0.4.0
2 parents 69c74c3 + efb2b2e commit 5277843

File tree

61 files changed

+13114
-10843
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+13114
-10843
lines changed

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,7 @@ body:
106106
placeholder: |
107107
Go to VSCode Settings (Ctrl+,) and search for "Scientific Data Viewer", then copy the relevant settings:
108108
- scientificDataViewer.maxFileSize:
109-
- scientificDataViewer.allowMultipleTabsForSameFile:
110-
- scientificDataViewer.plottingCapabilities:
109+
- scientificDataViewer.allowMultipleTabsForSameFile:
111110
validations:
112111
required: false
113112

.prettierrc

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"tabWidth": 2,
3+
"singleQuote": true,
4+
"overrides": [
5+
{
6+
"files": "**/*.{json,ts,js}",
7+
"options": {
8+
"tabWidth": 4
9+
}
10+
},
11+
{
12+
"files": "*.{md}",
13+
"options": {
14+
"tabWidth": 2
15+
}
16+
}
17+
]
18+
}

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@
1515
"**/node_modules": true,
1616
"**/out": true,
1717
"**/.vscode-test": true
18-
}
18+
},
19+
"prettier.configPath": ".prettierrc"
1920
}

CHANGELOG.md

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,48 @@ All notable changes to the Scientific Data Viewer VSCode extension will be docum
66

77
<!-- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -->
88

9-
## [0.3.0] - 2025-01-27
9+
## [0.4.0] - 2025-10-06
10+
11+
### Added
12+
13+
- **Extension Virtual Environment**: Semi-standalone virtual environment stored in VSCode extension storage
14+
- **uv Required**: Only works if `uv` is installed on the system
15+
- **Python 3.13**: Uses uv to install and use Python 3.13 for latest features and performance
16+
- **Isolated Storage**: Stored in VSCode's extension storage space
17+
- **Fallback Support**: Falls back to Python extension behavior if uv is not available
18+
- **Management Commands**: Create, manage, update, and delete extension environment
19+
- **Status Display**: Shows extension environment status and creation tool in status bar
20+
- **Virtual Environment Management Command**:
21+
- `Manage Extension Virtual Environment`: Create, update, delete extension environment
22+
- **Configuration Settings**:
23+
- `scientificDataViewer.overridePythonInterpreter`: Override Python interpreter path (takes precedence over all other options)
24+
- `scientificDataViewer.python.useExtensionOwnEnvironment`: Activate the use extension's own virtual environment with `uv`
25+
- `scientificDataViewer.currentlyInUseInterpreter`: Currently active Python interpreter path (read-only, updated automatically)
26+
- **Split View**:
27+
- Works for files opened via the file explorer, because the webviewPanel is reused (`ScientificDataEditorProvider`)
28+
- Does not work with files/dirs opened via command nor context menu, because the webviewPanel is created from scratch
29+
30+
### Enhanced
31+
32+
- **Enhanced Status Bar**: Shows virtual environment type and interpreter information
33+
34+
### Removed
35+
36+
- Plotting Capabilities extension feature flag (always on)
37+
38+
### Technical Improvements
39+
40+
- Refactor zones of the code.
41+
42+
### Known Bugs
43+
44+
- Data Structure TreeView is not shown for manually created Webviews in Cursor. See when clause of `scientificDataViewer.outline`.
45+
- When VSCode doc: https://code.visualstudio.com/api/references/when-clause-contexts
46+
- Related: https://forum.cursor.com/t/webview-panels-and-commands-not-supported-in-cursor-breaks-extensions/115748
47+
48+
### Fixed
49+
50+
## [0.3.0] - 2025-10-03
1051

1152
### Added
1253

@@ -219,7 +260,6 @@ All notable changes to the Scientific Data Viewer VSCode extension will be docum
219260
- `scientificDataViewer.maxFileSize`: Maximum file size (MB) to load automatically
220261
- `scientificDataViewer.defaultView`: Default view mode
221262
- `scientificDataViewer.allowMultipleTabsForSameFile`: Allow multiple tabs for same file **(Experimental)**
222-
- `scientificDataViewer.plottingCapabilities`: Enable plotting capabilities **(Experimental)**
223263

224264
### Available Commands
225265

README.md

Lines changed: 129 additions & 58 deletions
Large diffs are not rendered by default.

docs/RELEASE_NOTES_0.4.0.md

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# Scientific Data Viewer v0.4.0 Release Notes
2+
3+
## 🎉 Major Release: Extension Virtual Environment with uv Support
4+
5+
Version 0.4.0 introduces a significant enhancement to the Scientific Data Viewer extension by adding support for a semi-standalone virtual environment managed by `uv`, providing better isolation and Python 3.13 support. This release transforms the extension from a Python extension-dependent tool into a more self-contained solution while maintaining full backward compatibility.
6+
7+
## ✨ What's New
8+
9+
### 🐍 Extension Virtual Environment System
10+
11+
- **uv Integration**: New virtual environment system using `uv` for Python 3.13 installation and management
12+
- **Semi-Standalone Operation**: Extension can run independently with only `uv` as a requirement
13+
- **Isolated Storage**: Environment stored in VSCode's extension storage space for complete isolation
14+
- **Fallback Support**: Gracefully falls back to Python extension behavior if `uv` is unavailable
15+
- **Management Commands**: Complete CRUD operations for extension environment through intuitive UI
16+
17+
### ⚙️ Enhanced Configuration System
18+
19+
- **`scientificDataViewer.python.overridePythonInterpreter`**: Override Python interpreter path (highest priority)
20+
- **`scientificDataViewer.python.useExtensionOwnEnvironment`**: Enable extension's own uv virtual environment
21+
- **`scientificDataViewer.python.currentlyInUseInterpreter`**: Read-only tracking of active interpreter
22+
- **Priority Order**: Clear precedence system for interpreter selection
23+
24+
### 🎯 Improved User Experience
25+
26+
- **Quick Pick Interface**: Replaced notification dialogs with intuitive quick pick menus for uv environment management
27+
- **Status Bar Integration**: Shows virtual environment type and interpreter information
28+
- **Split View Support**: Works for files opened via file explorer (webviewPanel reuse)
29+
- **Better Error Handling**: Improved error messages and recovery mechanisms
30+
31+
## 🔧 Technical Improvements
32+
33+
### 🏗️ New Architecture Components
34+
35+
- **`ExtensionVirtualEnvironmentManager`**: Core virtual environment management (701 lines)
36+
- **`ScientificDataEditorProvider`**: Handles file editor integration
37+
- **`utils.ts`**: Utility functions for path handling and quoting
38+
- **Refactored PythonManager**: Complete rewrite with improved initialization flow
39+
40+
### 📁 Code Quality Enhancements
41+
42+
- **API Surface Reduction**: PythonManager API simplified and streamlined
43+
- **Better Error Handling**: Enhanced error recovery for missing `uv` installation
44+
- **Path Quoting**: Fixed path quoting issues for spawn calls
45+
- **Test Updates**: All test suites updated to reflect new API changes
46+
47+
### 🧪 Testing and Reliability
48+
49+
- **Comprehensive Testing**: Updated all test suites for new architecture
50+
- **Error Scenarios**: Better handling of edge cases and missing dependencies
51+
- **Compilation Fixes**: Resolved test compilation issues
52+
53+
## 🐛 Bug Fixes
54+
55+
- **Path Handling**: Fixed path quoting issues for passing paths as args in spawn calls
56+
- **Environment Detection**: Improved Python interpreter detection and validation
57+
- **UI Consistency**: Better handling of environment switching and refresh scenarios
58+
- **Test Infrastructure**: Fixed compilation issues and removed obsolete tests
59+
60+
## 📊 Configuration Priority System
61+
62+
The extension now uses a clear priority system for Python interpreter selection:
63+
64+
1. **`overridePythonInterpreter`** (manual override - highest precedence)
65+
2. **Extension environment** (if uv available and enabled)
66+
3. **Python extension interpreter** (fallback)
67+
4. **System Python** (final fallback)
68+
69+
## 🎮 New Commands
70+
71+
| Command | Description |
72+
| -------------------------------------------------------------- | ------------------------------------------------------------------ |
73+
| `Scientific Data Viewer: Manage Extension Virtual Environment` | Create, update, delete, and view extension environment information |
74+
75+
## ⚙️ New Settings
76+
77+
### Python Environment Settings
78+
79+
- **`scientificDataViewer.python.overridePythonInterpreter`**
80+
81+
- Type: `string`
82+
- Default: `""`
83+
- Description: Override Python interpreter path (takes precedence over all other options)
84+
85+
- **`scientificDataViewer.python.useExtensionOwnEnvironment`**
86+
87+
- Type: `boolean`
88+
- Default: `false`
89+
- Description: Use the extension's own virtual environment (requires uv)
90+
91+
- **`scientificDataViewer.python.currentlyInUseInterpreter`**
92+
- Type: `string`
93+
- Default: `""`
94+
- Description: Currently active Python interpreter path (read-only, updated automatically)
95+
96+
## 🚀 Getting Started with Extension Environment
97+
98+
1. **Install uv**: Follow the [uv installation guide](https://docs.astral.sh/uv/getting-started/installation/)
99+
100+
2. **Enable Extension Environment**:
101+
102+
- Press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>
103+
- Type "Scientific Data Viewer: Show Settings"
104+
- Check "Scientific Data Viewer > Python > Use Extension Own Environment"
105+
106+
3. **Manage Environment**:
107+
- Press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>
108+
- Type "Scientific Data Viewer: Manage Extension Virtual Environment"
109+
- Choose from: Create, Update, Delete, or View Information
110+
111+
## ⚠️ Known Issues
112+
113+
- **Data Structure TreeView**: Not shown for manually created Webviews in Cursor (occurs sometimes)
114+
- **Environment Switching**: Some edge cases may require manual refresh (Ctrl+Shift+P -> SDV: Refresh) so that the status bar reflects the correct state, eg when deleting manually a virtual environment
115+
116+
## 🔄 Breaking Changes
117+
118+
- **PythonManager API**: Reduced API surface (some methods made private)
119+
- **UIController**: Constructor signature changed
120+
- **Test Interfaces**: Updated test interfaces to match new architecture
121+
122+
## 📈 Impact
123+
124+
This release significantly improves the extension's Python environment management capabilities:
125+
126+
- **Better Isolation**: Extension environment won't interfere with other projects
127+
- **Python 3.13 Support**: Latest Python version for optimal performance
128+
- **Almost Self-Contained**: Minimal external dependencies (only requires uv)
129+
- **Backward Compatible**: Falls back gracefully when uv is not available
130+
- **User Control**: Clear configuration options and management commands
131+
132+
## 📊 Statistics
133+
134+
- **23 files changed** with **2,419 additions** and **1,623 deletions**
135+
- **Net change**: +796 lines
136+
- **New Components**: 3 major new TypeScript files
137+
- **API Simplification**: Reduced PythonManager complexity
138+
- **Test Coverage**: Updated all test suites
139+
140+
## 🔮 What's Next
141+
142+
This release establishes a solid foundation for future enhancements:
143+
144+
- **Enhanced Environment Management**: More sophisticated environment switching
145+
- **Performance Improvements**: Optimized Python environment operations
146+
- **Better Integration**: Improved VSCode and Cursor compatibility
147+
- **Advanced Features**: More sophisticated data processing capabilities
148+
149+
## 🙏 Acknowledgments
150+
151+
Thank you to all users who provided feedback and contributed to this release.
152+
153+
---
154+
155+
**Download now**: [VSCode Marketplace](https://marketplace.visualstudio.com/items?itemName=eschalk0.scientific-data-viewer) | [Open VSX](https://open-vsx.org/extension/eschalk0/scientific-data-viewer)
156+
157+
**Documentation**: [GitHub Repository](https://github.com/etienneschalk/scientific-data-viewer)
158+
159+
**Report Issues**: [GitHub Issues](https://github.com/etienneschalk/scientific-data-viewer/issues)

docs/rfc/034-french-translation.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# RFC #034: French Translation Support
2+
3+
## Description
4+
5+
Implement comprehensive French translation for the Scientific Data Viewer extension using AI-powered string extraction and translation to make the extension accessible to French-speaking users.
6+
7+
## Requirements
8+
9+
- Extract all user-facing strings from the extension codebase
10+
- Use AI translation services to translate strings to French
11+
- Implement i18n (internationalization) framework
12+
- Support language switching between English and French
13+
- Maintain translation quality and consistency
14+
- Handle technical terms appropriately
15+
- Support dynamic language switching without restart
16+
17+
## Acceptance Criteria
18+
19+
- [ ] All UI strings are extracted to translation files
20+
- [ ] French translation covers 100% of user-facing text
21+
- [ ] Language can be switched via VS Code settings
22+
- [ ] Technical terms are translated appropriately
23+
- [ ] Translation quality is verified by native speakers
24+
- [ ] No hardcoded strings remain in the codebase
25+
- [ ] Language switching works without extension restart
26+
- [ ] Error messages are properly translated
27+
28+
## Priority
29+
30+
Medium - Accessibility enhancement
31+
32+
## Labels
33+
34+
i18n, translation, french, accessibility, localization, user-experience
35+
36+
## Status
37+
38+
**PENDING** 📋
39+
40+
## Implementation Notes
41+
42+
This feature requires:
43+
44+
- String extraction from TypeScript/JavaScript files
45+
- Translation service integration (AI-based)
46+
- i18n framework implementation
47+
- Language detection and switching
48+
- Quality assurance for translations
49+
- Testing with French-speaking users
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# RFC #035: Enhanced Error Handling System
2+
3+
## Description
4+
5+
Implement a comprehensive error handling system that provides better user feedback, error recovery mechanisms, and debugging information for the Scientific Data Viewer extension.
6+
7+
## Requirements
8+
9+
- Improve error messages with actionable guidance
10+
- Implement error recovery mechanisms
11+
- Add error logging and reporting
12+
- Provide better debugging information
13+
- Handle edge cases gracefully
14+
- Implement retry mechanisms for transient errors
15+
- Add error categorization and severity levels
16+
- Provide user-friendly error descriptions
17+
18+
## Acceptance Criteria
19+
20+
- [ ] All errors have clear, actionable messages
21+
- [ ] Error recovery mechanisms are implemented
22+
- [ ] Error logging is comprehensive and useful
23+
- [ ] Users can retry failed operations
24+
- [ ] Error severity levels are clearly indicated
25+
- [ ] Debugging information is accessible
26+
- [ ] Error messages are user-friendly
27+
- [ ] Error reporting system is functional
28+
29+
## Priority
30+
31+
High - User experience and reliability
32+
33+
## Labels
34+
35+
error-handling, user-experience, reliability, debugging, error-recovery
36+
37+
## Status
38+
39+
**PENDING** 📋
40+
41+
## Implementation Notes
42+
43+
This feature requires:
44+
45+
- Error categorization system
46+
- User-friendly error message templates
47+
- Retry mechanism implementation
48+
- Error logging infrastructure
49+
- Debug information collection
50+
- Error recovery strategies
51+
- User feedback mechanisms

0 commit comments

Comments
 (0)