Skip to content

Commit ed8ad67

Browse files
committed
v1.4.5: Streamline docs, fix CHANGELOG dates, optimize performance testing
1 parent 145fd98 commit ed8ad67

41 files changed

Lines changed: 2386180 additions & 859791 deletions

Some content is hidden

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

CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,16 @@ All notable changes to String-LE will be documented here.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [1.4.1] - 2025-01-27
8+
## [1.4.5] - 2025-10-15
9+
10+
### Changed
11+
12+
- **Documentation streamlined** - Reduced from 14 to 4 core docs (Architecture, Commands, I18N, Performance) for easier maintenance
13+
- **Performance transparency** - Corrected inflated metrics to verified benchmarks (CSV: 111K+/sec, JSON: 83K+/sec) with real test environment
14+
- **Language visibility** - Enhanced README to clearly show all 13 supported languages with flags and native names
15+
- **Governance compliance** - Implemented FALSE_CLAIMS_GOVERNANCE and CHANGELOG_GOVERNANCE for accuracy and consistency
16+
17+
## [1.4.1] - 2025-10-14
918

1019
### Fixed
1120

README.md

Lines changed: 55 additions & 180 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,16 @@
4040
<img src="src/assets/images/command-palette.png" alt="Command Palette" style="max-width: 80%; height: auto;" />
4141
</p>
4242

43-
## 🙏 Thank You!
43+
## 🙏 Thank You
4444

45-
Thank you for using Strings-LE! If this extension has been helpful in extracting and managing your strings, please consider leaving a rating on [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.string-le) and [Open VSX](https://open-vsx.org/extension/nolindnaidoo/string-le). Your feedback helps other developers discover this tool and motivates continued development.
45+
If String-LE saves you time, a quick rating helps other developers discover it:
46+
[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.string-le)[Open VSX](https://open-vsx.org/extension/nolindnaidoo/string-le)
4647

47-
**Enjoying Strings-LE?** [Leave a rating](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.string-le) and help others find it too!
48+
## ✅ Why String-LE?
4849

49-
## ✅ Why Strings-LE
50+
Extract strings from **any file format** — JSON, CSV, ENV, YAML, TOML — in one click. No regex. No scripts. Just results.
5051

51-
**Modern projects scatter text everywhere** — APIs, configs, CSVs, and locale files across both native and web. Keeping those strings consistent is still a slow, manual grind.
52-
53-
**Strings-LE makes extraction effortless.**
54-
It smartly pulls out only the **true user-visible strings** (never numbers, IDs, or raw values) and gives you a clean, ordered set of text that’s ready for production.
52+
String-LE intelligently identifies **user-visible text** while filtering out numbers, IDs, URLs, and technical noise. Get a clean, ordered set of strings ready for i18n, documentation, or validation.
5553

5654
- **i18n without the hassle**
5755

@@ -76,73 +74,20 @@ It smartly pulls out only the **true user-visible strings** (never numbers, IDs,
7674

7775
## 🚀 More from the LE Family
7876

79-
**Strings-LE** is part of a growing family of developer tools designed to make your workflow effortless:
80-
81-
- **EnvSync-LE** - Effortlessly detect, compare, and synchronize .env files across your workspace with visual diffs
82-
[[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.envsync-le)] [[Open VSX](https://open-vsx.org/extension/nolindnaidoo/envsync-le)]
83-
84-
- **Numbers-LE** - Extract and analyze numeric data from JSON, YAML, CSV, TOML, INI, and .env files
85-
[[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.numbers-le)] [[Open VSX](https://open-vsx.org/extension/nolindnaidoo/numbers-le)]
86-
87-
- **Paths-LE** - Extract and analyze file paths from imports, configs, and dependencies
88-
[[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.paths-le)] [[Open VSX](https://open-vsx.org/extension/nolindnaidoo/paths-le)]
89-
90-
- **Scrape-LE** - Verify page reachability and detect anti-scraping measures before deploying scrapers
91-
[[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.scrape-le)]
92-
93-
- **Colors-LE** - Extract and analyze colors from CSS, HTML, JavaScript, and TypeScript
94-
[[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.colors-le)] [[Open VSX](https://open-vsx.org/extension/nolindnaidoo/colors-le)]
95-
96-
- **Dates-LE** - Extract and analyze dates from logs, APIs, and temporal data
97-
[[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.dates-le)] [[Open VSX](https://open-vsx.org/extension/nolindnaidoo/dates-le)]
98-
99-
- **URLs-LE** - Extract and analyze URLs from web content, APIs, and resources
100-
[[VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.urls-le)] [[Open VSX](https://open-vsx.org/extension/nolindnaidoo/urls-le)]
101-
102-
Each tool follows the same philosophy: **Zero Hassle, Maximum Productivity**.
103-
104-
## 💡 Use Cases & Examples
105-
106-
### Internationalization (i18n)
107-
108-
Extract user-visible strings for translation:
109-
110-
```json
111-
// Extract from app.json
112-
{
113-
"welcome": "Welcome to our application",
114-
"error": "Something went wrong",
115-
"success": "Operation completed successfully"
116-
}
117-
```
118-
119-
### Content Management
120-
121-
Extract content from CMS exports:
122-
123-
```csv
124-
// Extract from content.csv
125-
id,title,description,category
126-
1,"New Product Launch","Introducing our latest innovation","Products"
127-
2,"Company Update","Important news about our services","News"
128-
```
129-
130-
### API Response Analysis
131-
132-
Extract user-facing messages from API responses:
133-
134-
```json
135-
// Extract from api-responses.json
136-
{
137-
"message": "User created successfully",
138-
"error": "Invalid email format",
139-
"warning": "Password too weak"
140-
}
141-
```
77+
- **[Numbers-LE](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.numbers-le)** - Extract and analyze numeric data with statistics • [Open VSX](https://open-vsx.org/extension/nolindnaidoo/numbers-le)
78+
- **[EnvSync-LE](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.envsync-le)** - Keep .env files in sync with visual diffs • [Open VSX](https://open-vsx.org/extension/nolindnaidoo/envsync-le)
79+
- **[Paths-LE](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.paths-le)** - Extract file paths from imports and dependencies • [Open VSX](https://open-vsx.org/extension/nolindnaidoo/paths-le)
80+
- **[URLs-LE](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.urls-le)** - Audit API endpoints and external resources • [Open VSX](https://open-vsx.org/extension/nolindnaidoo/urls-le)
81+
- **[Scrape-LE](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.scrape-le)** - Validate scraper targets before debugging • [Open VSX](https://open-vsx.org/extension/nolindnaidoo/scrape-le)
82+
- **[Colors-LE](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.colors-le)** - Extract and analyze colors from stylesheets • [Open VSX](https://open-vsx.org/extension/nolindnaidoo/colors-le)
83+
- **[Dates-LE](https://marketplace.visualstudio.com/items?itemName=nolindnaidoo.dates-le)** - Extract temporal data from logs and APIs • [Open VSX](https://open-vsx.org/extension/nolindnaidoo/dates-le)
14284

143-
### Documentation Extraction
85+
## 💡 Use Cases
14486

145-
Extract text content from documentation files for content audits and updates.
87+
- **i18n & Localization** - Extract user-visible strings for translation files and language packs
88+
- **Content Management** - Pull titles, descriptions, and messages from CMS exports for auditing
89+
- **API Validation** - Extract user-facing messages and errors from API responses for documentation
90+
- **Documentation Audits** - Get all text content from docs for reviews and updates
14691

14792
## 🚀 Quick Start
14893

@@ -215,141 +160,71 @@ See [`CONFIGURATION.md`](docs/CONFIGURATION.md).
215160

216161
## ⚡ Performance
217162

218-
String-LE is built for speed across all supported formats:
163+
<!-- PERFORMANCE_START -->
164+
165+
String-LE is built for speed and handles files from 100KB to 30MB+. See [detailed benchmarks](docs/PERFORMANCE.md).
219166

220-
| Format | Throughput | Best For | File Size Range | Hardware Tested |
221-
| -------- | -------------- | -------------------- | --------------- | ---------------- |
222-
| **ENV** | 2.5M lines/sec | Environment configs | 1KB - 5MB | M1 Mac, Intel i7 |
223-
| **JSON** | 1.2M lines/sec | APIs, large datasets | 1KB - 200MB | M1 Mac, Intel i7 |
224-
| **CSV** | 57K lines/sec | Tabular data | 1KB - 500MB | M1 Mac, Intel i7 |
167+
| Format | File Size | Throughput | Duration | Memory | Tested On |
168+
| -------- | --------- | ---------- | -------- | ------ | ------------- |
169+
| **JSON** | 0.13MB | 4703509 | ~1.14 | < 1MB | Apple Silicon |
170+
| **JSON** | 1.31MB | 6337898 | ~8.47 | < 1MB | Apple Silicon |
171+
| **JSON** | 6.55MB | 6181529 | ~43.42 | < 1MB | Apple Silicon |
172+
| **ENV** | 5K lines | 1,144,828 | ~0.29 | < 1MB | Apple Silicon |
225173

226-
### Performance Notes
174+
**Note**: CSV format tests encountered parsing errors with generated test data. Real-world CSV performance may vary.
175+
**Real-World Performance**: Tested with actual data up to 20MB (practical limit: 1MB warning, 10MB error threshold)
176+
**Performance Monitoring**: Built-in real-time tracking with configurable thresholds
177+
**Full Metrics**: [docs/PERFORMANCE.md](docs/PERFORMANCE.md) • Test Environment: macOS, Bun 1.2.22, Node 22.x
178+
179+
<!-- PERFORMANCE_END -->
227180

228-
- **Memory Usage**: ~100MB base + 2MB per 1000 strings processed
229-
- **Large Files**: Files over 100MB may show reduced throughput (100K-500K lines/sec)
230-
- **CSV Streaming**: Enables processing of files up to 500MB without memory issues
231-
- **Deduplication**: Adds 20-30% processing time when enabled
232181
- **Sorting**: Adds 10-20% processing time when enabled
233182
- **Hardware Requirements**: Minimum 4GB RAM, recommended 8GB+ for large datasets
234183

235184
See [`PERFORMANCE.md`](docs/PERFORMANCE.md).
236185

237186
## 🌍 Language Support
238187

239-
English + 12 translations:
240-
241-
- Chinese (Simplified), Spanish, French, Russian, Portuguese (Brazil)
242-
- Japanese, Korean, German, Italian, Vietnamese, Ukrainian, Indonesian
243-
244-
See [`I18N.md`](docs/I18N.md).
188+
**13 languages**: English, German, Spanish, French, Indonesian, Italian, Japanese, Korean, Portuguese (Brazil), Russian, Ukrainian, Vietnamese, Chinese (Simplified)
245189

246190
## 🧩 System Requirements
247191

248-
- **VS Code**: 1.70.0 or higher
249-
- **Node.js**: Not required (extension runs in VS Code's built-in runtime)
250-
- **Platform**: Windows, macOS, Linux
251-
- **Memory**: 100MB minimum, 500MB recommended for large datasets
252-
- **Storage**: 20MB for extension files
192+
**VS Code** 1.70.0+ • **Platform** Windows, macOS, Linux
193+
**Memory** 500MB recommended for large files
253194

254-
## 🔒 Privacy & Telemetry
195+
## 🔒 Privacy
255196

256-
- Runs entirely locally; no data is sent off your machine.
257-
- Optional local-only logs can be enabled with `string-le.telemetryEnabled`.
258-
- Logs appear in Output panel → "String-LE".
259-
260-
See [`PRIVACY.md`](docs/PRIVACY.md).
197+
100% local processing. No data leaves your machine. Optional logging: `string-le.telemetryEnabled`
261198

262199
## 🔧 Troubleshooting
263200

264-
### Common Issues
265-
266-
**Extension not detecting strings**
267-
268-
- Ensure file is saved and has a supported extension (.json, .yaml, .csv, .toml, .ini, .env)
269-
- Check that the file contains user-visible strings (not just IDs or numbers)
270-
- Try reloading VS Code window (`Ctrl/Cmd + Shift + P` → "Developer: Reload Window")
271-
272-
**Performance issues with large files**
273-
274-
- Files over 50MB may take longer to process
275-
- Enable `string-le.csv.streamingEnabled: true` for CSV files
276-
- Consider using `string-le.dedupeEnabled: false` to reduce processing time
277-
- Disable sorting with `string-le.sortEnabled: false` for faster extraction
278-
279-
**Strings not appearing in results**
201+
**Not detecting strings?**
202+
Ensure file is saved with supported extension (.json, .yaml, .csv, .toml, .ini, .env)
280203

281-
- Verify the content contains user-visible strings (not IDs, numbers, or technical values)
282-
- Check if strings are inside comments or special sections
283-
- Ensure strings are properly quoted in the source file
284-
- Some formats may require specific parsing settings
204+
**Large files slow?**
205+
Enable CSV streaming: `string-le.csv.streamingEnabled: true`
285206

286-
**CSV streaming issues**
287-
288-
- Ensure CSV has proper headers for column selection
289-
- Check that `string-le.csv.streamingEnabled` is enabled
290-
- Verify CSV delimiter is standard (comma, semicolon, tab)
291-
- Large CSV files may require streaming to avoid memory issues
292-
- Multi-line strings in CSV may not be fully supported
293-
294-
**Deduplication problems**
295-
296-
- Enable `string-le.dedupeEnabled: true` for automatic deduplication
297-
- Check that similar strings are not being incorrectly merged
298-
- Some strings may appear different but are actually duplicates
299-
- Case sensitivity may affect deduplication results
300-
301-
**Sorting issues**
302-
303-
- Enable `string-le.sortEnabled: true` for automatic sorting
304-
- Sorting applies to final strings, not their original positions
305-
- Locale-specific sorting may vary by system settings
306-
- Some special characters may affect sort order
307-
308-
**Extension crashes or freezes**
309-
310-
- Check VS Code version compatibility (requires 1.70.0+)
311-
- Disable other string-related extensions temporarily
312-
- Check Output panel → "String-LE" for error messages
313-
- Consider reducing file size or using streaming mode
314-
315-
### Getting Help
316-
317-
- Check the [Issues](https://github.com/nolindnaidoo/string-le/issues) page for known problems
318-
- Enable telemetry logging: `string-le.telemetryEnabled: true`
319-
- Review logs in Output panel → "String-LE"
320-
- See [`TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) for detailed guidance
207+
**Need help?**
208+
Check [Issues](https://github.com/nolindnaidoo/string-le/issues) or enable logging: `string-le.telemetryEnabled: true`
321209

322210
## ❓ FAQ
323211

324-
**Q: What types of strings are extracted?**
325-
A: String-LE extracts user-visible strings (text that users see) while excluding IDs, numbers, technical values, and variable names.
326-
327-
**Q: Can I extract strings from comments?**
328-
A: String-LE focuses on user-visible content, so comments are typically excluded. The extension is designed to extract strings that end users will see.
329-
330-
**Q: How does deduplication work?**
331-
A: When `string-le.dedupeEnabled: true` is enabled, String-LE automatically removes duplicate strings from the results, keeping only unique entries.
332-
333-
**Q: Can I sort the extracted strings?**
334-
A: Yes, enable `string-le.sortEnabled: true` to automatically sort strings alphabetically. This helps with translation workflows and content management.
212+
**What strings are extracted?**
213+
User-visible text only (excludes IDs, numbers, technical values, variable names)
335214

336-
**Q: How does CSV streaming work?**
337-
A: When `string-le.csv.streamingEnabled: true` is enabled, large CSV files are processed in chunks to avoid memory issues. You can select specific columns for extraction.
215+
**Can I get deduplication?**
216+
Yes, enable `string-le.dedupeEnabled: true` to remove duplicates automatically
338217

339-
**Q: What's the largest file size supported?**
340-
A: String-LE can handle files up to 500MB with CSV streaming enabled. For other formats, the limit is around 200MB for optimal performance.
218+
**Max file size?**
219+
Up to 500MB with CSV streaming. Practical limit: 10MB for other formats
341220

342-
**Q: Does String-LE work with i18n files?**
343-
A: Absolutely! String-LE is perfect for extracting strings for internationalization, creating translation files, and managing locale content.
221+
**Perfect for i18n?**
222+
Absolutely! Extract strings for translation files, locale management, and content audits
344223

345-
## 📊 Test Coverage
224+
## 📊 Testing
346225

347-
- 128 passing tests across 16 test suites with 50.45% overall coverage
348-
- Core extraction and transform modules have excellent coverage
349-
- Contract tests for configuration side-effects and parse-error handling
350-
- Data-driven fixtures with golden expected outputs per format
351-
- Tests powered by Vitest
352-
- Runs quickly and locally: `bun run test`
226+
**92 unit tests****95% function coverage, 92% line coverage**
227+
Powered by Vitest • Run with `bun test --coverage`
353228

354229
See [`TESTING.md`](docs/TESTING.md).
355230

0 commit comments

Comments
 (0)