documentation-hub 5.7.2
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.
- package/.eslintrc.json +43 -0
- package/.github/workflows/build.yml +64 -0
- package/.github/workflows/ci.yml +39 -0
- package/.vscode/extensions.json +3 -0
- package/Current.md +97 -0
- package/DocHub_Image.png +0 -0
- package/README.md +666 -0
- package/USER_GUIDE.md +1173 -0
- package/Updater.md +311 -0
- package/build/256x256.png +0 -0
- package/build/512x512.png +0 -0
- package/build/app-update.yml +4 -0
- package/build/create-icon.js +208 -0
- package/build/icon.ico +0 -0
- package/build/icon.png +0 -0
- package/build/icon_1024x1024.png +0 -0
- package/dist/assets/Analytics-BpsG9895.js +1 -0
- package/dist/assets/Card-IAZin8kp.js +1 -0
- package/dist/assets/CurrentSession-B-rFkHvf.js +12 -0
- package/dist/assets/Dashboard-C_5gMb0q.js +1 -0
- package/dist/assets/Documents-CqZ25axS.js +1 -0
- package/dist/assets/Input-l89xwXBi.js +1 -0
- package/dist/assets/Reporting-DqdHJY_a.js +1 -0
- package/dist/assets/Search-XNbu5z_3.js +1 -0
- package/dist/assets/SessionManager-lH9hZfzH.js +1 -0
- package/dist/assets/Sessions-ClZOPYNc.js +1 -0
- package/dist/assets/Settings-DUEHGURa.js +11 -0
- package/dist/assets/index-8xUe8ptc.js +24 -0
- package/dist/assets/index-RYyJqF7O.css +1 -0
- package/dist/assets/path-BkOl0AGO.js +1 -0
- package/dist/assets/promises-ID_B9S-h.js +1 -0
- package/dist/assets/urlHelpers-TvgahX0r.js +1 -0
- package/dist/assets/useToast-yRSO1dkm.js +1 -0
- package/dist/assets/vendor-charts-RkGK5ROP.js +36 -0
- package/dist/assets/vendor-db-l0sNRNKZ.js +1 -0
- package/dist/assets/vendor-react-BVZ_anCF.js +4 -0
- package/dist/assets/vendor-search-Dw8P0qyA.js +1 -0
- package/dist/assets/vendor-ui-BU7NfluV.js +53 -0
- package/dist/electron/PowerAutomateApiService-LfW09ZGr.js +147 -0
- package/dist/electron/main-CXkNtyv-.js +19789 -0
- package/dist/electron/main.js +5 -0
- package/dist/electron/preload.js +1 -0
- package/dist/icon.png +0 -0
- package/dist/index.html +27 -0
- package/docs/CODEBASE_ANALYSIS_REPORT.md +309 -0
- package/docs/DEBUG_LOGGING_GUIDE.md +244 -0
- package/docs/README.md +115 -0
- package/docs/TOC_WIRING_GUIDE.md +344 -0
- package/docs/analysis/Bullet_Symbol_Bug_Analysis.md +136 -0
- package/docs/analysis/DOCXMLATER_ANALYSIS_SUMMARY.txt +169 -0
- package/docs/analysis/Document_Processing_Issues_Analysis.md +704 -0
- package/docs/analysis/FIELD_PRESERVATION_ANALYSIS.md +1200 -0
- package/docs/analysis/INDENTATION_PRESERVE_ANALYSIS.md +181 -0
- package/docs/analysis/INDENTATION_PRESERVE_IMPLEMENTATION.md +207 -0
- package/docs/analysis/List_Implementation.md +206 -0
- package/docs/analysis/List_Implementation_Accuracy_Report.md +366 -0
- package/docs/analysis/PROCESSING_OPTIONS_UI_UPDATES.md +220 -0
- package/docs/analysis/RefactorStyles.md +852 -0
- package/docs/analysis/STYLE_PARAMETER_ENHANCEMENT.md +143 -0
- package/docs/analysis/docxmlater-comparison-todo-2025-11-13.md +636 -0
- package/docs/analysis/docxmlater-implementation-analysis-2025-11-13.md +340 -0
- package/docs/analysis/docxmlater-template_ui-integration-analysis.md +263 -0
- package/docs/analysis/github-issues-to-create.md +237 -0
- package/docs/api/API_README.md +538 -0
- package/docs/api/API_REFERENCE.md +751 -0
- package/docs/api/TYPE_DEFINITIONS.md +869 -0
- package/docs/architecture/FONT_EMBEDDING_GUIDE.md +318 -0
- package/docs/architecture/docxmlater-functions-and-structure.md +726 -0
- package/docs/docxmlater-readme.md +1341 -0
- package/docs/fixes/EXECUTION_LOG_TEST_BASE.md +573 -0
- package/docs/fixes/HYPERLINK_TEXT_SANITIZATION.md +253 -0
- package/docs/fixes/README.md +37 -0
- package/docs/github-issues/issue-1-body.md +125 -0
- package/docs/github-issues/issue-10-body.md +850 -0
- package/docs/github-issues/issue-2-body.md +200 -0
- package/docs/github-issues/issue-3-body.md +270 -0
- package/docs/github-issues/issue-4-body.md +169 -0
- package/docs/github-issues/issue-5-body.md +173 -0
- package/docs/github-issues/issue-6-body.md +158 -0
- package/docs/github-issues/issue-7-body.md +171 -0
- package/docs/github-issues/issue-8-body.md +407 -0
- package/docs/github-issues/issue-9-body.md +515 -0
- package/docs/github-issues/issue-tracker.md +274 -0
- package/docs/github-issues/predictive-analysis-2025-10-18.md +2131 -0
- package/docs/implementation/List_Framework_Refactor_Plan.md +336 -0
- package/docs/implementation/PRIMARY_TEXT_COLOR_FEATURE.md +217 -0
- package/docs/implementation/RELEASE_PLAN_v2.1.0.md +362 -0
- package/docs/implementation/RefactorStyles.md +588 -0
- package/docs/implementation/implement-plan.md +489 -0
- package/docs/implementation/missing-helpers-implementation.md +391 -0
- package/docs/implementation/refactor-plan.md +520 -0
- package/docs/implementation/session-implementation-complete.md +233 -0
- package/docs/implementation/session-management-plan.md +250 -0
- package/docs/setup-checklist.md +77 -0
- package/docs/versions/changelog.md +345 -0
- package/electron/customUpdater.ts +656 -0
- package/electron/main.ts +2441 -0
- package/electron/memoryConfig.ts +187 -0
- package/electron/preload.ts +394 -0
- package/electron/proxyConfig.ts +340 -0
- package/electron/services/BackupService.ts +452 -0
- package/electron/services/DictionaryService.ts +402 -0
- package/electron/services/LocalDictionaryLookupService.ts +147 -0
- package/electron/services/PowerAutomateApiService.ts +231 -0
- package/electron/services/SharePointSyncService.ts +474 -0
- package/electron/windowsCertStore.ts +427 -0
- package/electron/zscalerConfig.ts +381 -0
- package/eslint.config.js +92 -0
- package/jest.config.js +52 -0
- package/package.json +214 -0
- package/postcss.config.mjs +6 -0
- package/public/icon.png +0 -0
- package/publish-release.ps1 +5 -0
- package/renovate.json +30 -0
- package/src/App.tsx +216 -0
- package/src/__mocks__/p-limit.js +12 -0
- package/src/__mocks__/styleMock.js +1 -0
- package/src/components/common/BugReportButton.tsx +44 -0
- package/src/components/common/BugReportDialog.tsx +193 -0
- package/src/components/common/Button.tsx +153 -0
- package/src/components/common/Card.tsx +86 -0
- package/src/components/common/ColorPickerDialog.tsx +177 -0
- package/src/components/common/ConfirmDialog.tsx +96 -0
- package/src/components/common/DebugConsole.tsx +275 -0
- package/src/components/common/EmptyState.tsx +183 -0
- package/src/components/common/ErrorBoundary.tsx +98 -0
- package/src/components/common/ErrorDetailsDialog.tsx +153 -0
- package/src/components/common/ErrorFallback.tsx +218 -0
- package/src/components/common/Input.tsx +109 -0
- package/src/components/common/Skeleton.tsx +184 -0
- package/src/components/common/SplashScreen.tsx +81 -0
- package/src/components/common/Toast.tsx +155 -0
- package/src/components/common/Tooltip.tsx +79 -0
- package/src/components/common/UpdateNotification.tsx +320 -0
- package/src/components/comparison/ComparisonWindow.tsx +374 -0
- package/src/components/comparison/SideBySideDiff.tsx +486 -0
- package/src/components/comparison/index.ts +8 -0
- package/src/components/document/DocumentUploader.tsx +288 -0
- package/src/components/document/HyperlinkPreview.tsx +430 -0
- package/src/components/document/HyperlinkService.md +1484 -0
- package/src/components/document/Hyperlink_Technical_Documentation.md +496 -0
- package/src/components/document/InlineChangesView.tsx +707 -0
- package/src/components/document/ProcessingProgress.tsx +303 -0
- package/src/components/document/ProcessingResults.tsx +256 -0
- package/src/components/document/TrackedChangesDetail.tsx +530 -0
- package/src/components/document/TrackedChangesPanel.tsx +546 -0
- package/src/components/document/VirtualDocumentList.tsx +240 -0
- package/src/components/editor/DocumentEditor.tsx +723 -0
- package/src/components/editor/DocumentEditorModal.tsx +640 -0
- package/src/components/editor/EditorQuickActions.tsx +502 -0
- package/src/components/editor/EditorToolbar.tsx +312 -0
- package/src/components/editor/TableEditor.tsx +926 -0
- package/src/components/editor/index.ts +18 -0
- package/src/components/layout/Header.tsx +190 -0
- package/src/components/layout/Sidebar.tsx +313 -0
- package/src/components/layout/TitleBar.tsx +190 -0
- package/src/components/navigation/CommandPalette.tsx +233 -0
- package/src/components/navigation/KeyboardShortcutsModal.tsx +173 -0
- package/src/components/sessions/ChangeItem.tsx +408 -0
- package/src/components/sessions/ChangeViewer.tsx +1155 -0
- package/src/components/sessions/DocumentComparisonModal.tsx +314 -0
- package/src/components/sessions/ProcessingOptions.tsx +297 -0
- package/src/components/sessions/ReplacementsTab.tsx +438 -0
- package/src/components/sessions/RevisionHandlingOptions.tsx +87 -0
- package/src/components/sessions/SessionManager.tsx +188 -0
- package/src/components/sessions/StylesEditor.tsx +1335 -0
- package/src/components/sessions/TabContainer.tsx +151 -0
- package/src/components/sessions/VirtualSessionList.tsx +157 -0
- package/src/components/sessions/sessionToProcessorManager.tsx +420 -0
- package/src/components/settings/CertificateManager.tsx +410 -0
- package/src/components/settings/SegmentedControl.tsx +88 -0
- package/src/components/settings/SettingRow.tsx +52 -0
- package/src/contexts/GlobalStatsContext.tsx +396 -0
- package/src/contexts/SessionContext.tsx +2129 -0
- package/src/contexts/ThemeContext.tsx +428 -0
- package/src/contexts/UserSettingsContext.tsx +290 -0
- package/src/contexts/__tests__/GlobalStatsContext.test.tsx +390 -0
- package/src/global.d.ts +273 -0
- package/src/hooks/useDocumentQueue.tsx +210 -0
- package/src/hooks/useToast.tsx +55 -0
- package/src/main.tsx +10 -0
- package/src/pages/Analytics.tsx +386 -0
- package/src/pages/CurrentSession.tsx +1174 -0
- package/src/pages/Dashboard.tsx +319 -0
- package/src/pages/Documents.tsx +317 -0
- package/src/pages/Projects.tsx +250 -0
- package/src/pages/Reporting.tsx +386 -0
- package/src/pages/Search.tsx +349 -0
- package/src/pages/Sessions.tsx +285 -0
- package/src/pages/Settings.tsx +2662 -0
- package/src/services/HyperlinkService.ts +1085 -0
- package/src/services/document/DocXMLaterProcessor.ts +617 -0
- package/src/services/document/DocumentProcessingComparison.ts +856 -0
- package/src/services/document/DocumentSnapshotService.ts +575 -0
- package/src/services/document/WordDocumentProcessor.ts +10509 -0
- package/src/services/document/__tests__/DocXMLaterProcessor.hyperlinks.test.md +311 -0
- package/src/services/document/__tests__/WordDocumentProcessor.integration.test.ts +515 -0
- package/src/services/document/__tests__/WordDocumentProcessor.test.ts +812 -0
- package/src/services/document/blanklines/BlankLineManager.ts +658 -0
- package/src/services/document/blanklines/__tests__/paragraphChecks.test.ts +281 -0
- package/src/services/document/blanklines/helpers/blankLineInsertion.ts +87 -0
- package/src/services/document/blanklines/helpers/blankLineSnapshot.ts +251 -0
- package/src/services/document/blanklines/helpers/clearCustom.ts +121 -0
- package/src/services/document/blanklines/helpers/contextChecks.ts +117 -0
- package/src/services/document/blanklines/helpers/imageChecks.ts +51 -0
- package/src/services/document/blanklines/helpers/paragraphChecks.ts +236 -0
- package/src/services/document/blanklines/helpers/removeBlanksBetweenListItems.ts +91 -0
- package/src/services/document/blanklines/helpers/removeTrailingBlanks.ts +35 -0
- package/src/services/document/blanklines/helpers/tableGuards.ts +21 -0
- package/src/services/document/blanklines/index.ts +67 -0
- package/src/services/document/blanklines/rules/additionRules.ts +337 -0
- package/src/services/document/blanklines/rules/indentationRules.ts +317 -0
- package/src/services/document/blanklines/rules/removalRules.ts +362 -0
- package/src/services/document/blanklines/rules/ruleTypes.ts +92 -0
- package/src/services/document/blanklines/types.ts +29 -0
- package/src/services/document/helpers/ImageBorderCropper.ts +377 -0
- package/src/services/document/helpers/__tests__/whitespace.test.ts +272 -0
- package/src/services/document/helpers/whitespace.ts +117 -0
- package/src/services/document/list/ListNormalizer.ts +947 -0
- package/src/services/document/list/index.ts +45 -0
- package/src/services/document/list/list-detection.ts +275 -0
- package/src/services/document/list/list-types.ts +162 -0
- package/src/services/document/processors/HyperlinkProcessor.ts +370 -0
- package/src/services/document/processors/ListProcessor.ts +257 -0
- package/src/services/document/processors/StructureProcessor.ts +176 -0
- package/src/services/document/processors/StyleProcessor.ts +389 -0
- package/src/services/document/processors/TableProcessor.ts +2238 -0
- package/src/services/document/processors/__tests__/HyperlinkProcessor.test.ts +314 -0
- package/src/services/document/processors/__tests__/ListProcessor.test.ts +291 -0
- package/src/services/document/processors/__tests__/StructureProcessor.test.ts +257 -0
- package/src/services/document/processors/__tests__/TableProcessor.hlp-tips-bullets.test.ts +459 -0
- package/src/services/document/processors/__tests__/TableProcessor.test.ts +1604 -0
- package/src/services/document/processors/index.ts +28 -0
- package/src/services/document/types/docx-processing.ts +310 -0
- package/src/services/editor/EditorActionHandlers.ts +901 -0
- package/src/services/editor/index.ts +13 -0
- package/src/setupTests.ts +47 -0
- package/src/styles/global.css +782 -0
- package/src/types/backup.ts +132 -0
- package/src/types/dictionary.ts +125 -0
- package/src/types/document-processing.ts +331 -0
- package/src/types/docxmlater-augments.d.ts +142 -0
- package/src/types/editor.ts +280 -0
- package/src/types/electron.ts +340 -0
- package/src/types/globalStats.ts +155 -0
- package/src/types/hyperlink.ts +471 -0
- package/src/types/operations.ts +354 -0
- package/src/types/session.ts +427 -0
- package/src/types/settings.ts +112 -0
- package/src/utils/MemoryMonitor.ts +248 -0
- package/src/utils/cn.ts +6 -0
- package/src/utils/colorConvert.ts +306 -0
- package/src/utils/diffUtils.ts +347 -0
- package/src/utils/documentUtils.ts +202 -0
- package/src/utils/electronGuard.ts +62 -0
- package/src/utils/indexedDB.ts +915 -0
- package/src/utils/logger.ts +717 -0
- package/src/utils/pathSecurity.ts +232 -0
- package/src/utils/pathValidator.ts +236 -0
- package/src/utils/processingTimeEstimator.ts +153 -0
- package/src/utils/safeJsonParse.ts +62 -0
- package/src/utils/textSanitizer.ts +162 -0
- package/src/utils/urlHelpers.ts +304 -0
- package/src/utils/urlPatterns.ts +198 -0
- package/src/utils/urlSanitizer.ts +152 -0
- package/src/vite-env.d.ts +11 -0
- package/tsconfig.electron.json +19 -0
- package/tsconfig.json +36 -0
- package/tsconfig.node.json +12 -0
- package/typedoc.json +45 -0
- package/vite.config.ts +152 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# GitHub Issues to Create - docXMLater Analysis
|
|
2
|
+
|
|
3
|
+
Based on the comprehensive analysis of docxmlater usage (2025-11-13), create the following GitHub issues in the repository.
|
|
4
|
+
|
|
5
|
+
**Analysis Document:** `docs/analysis/docxmlater-implementation-analysis-2025-11-13.md`
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Critical Priority Issues (Create First)
|
|
10
|
+
|
|
11
|
+
### Issue #1: Memory Leaks from Inconsistent dispose() Usage
|
|
12
|
+
|
|
13
|
+
**Title:** Fix inconsistent Document.dispose() usage to prevent memory leaks in batch processing
|
|
14
|
+
|
|
15
|
+
**Labels:** `bug`, `critical`, `memory-leak`, `performance`
|
|
16
|
+
|
|
17
|
+
**Description:**
|
|
18
|
+
Document objects from `Document.load()` and `Document.create()` are not consistently disposed in all code paths, leading to memory leaks during batch document processing operations.
|
|
19
|
+
|
|
20
|
+
**Affected Files:**
|
|
21
|
+
- `src/services/document/WordDocumentProcessor.ts:843-850, 794-800`
|
|
22
|
+
- Any method creating Document objects
|
|
23
|
+
|
|
24
|
+
**Current Pattern:**
|
|
25
|
+
```typescript
|
|
26
|
+
finally {
|
|
27
|
+
if (doc) {
|
|
28
|
+
try {
|
|
29
|
+
doc.dispose();
|
|
30
|
+
} catch (disposeError) {
|
|
31
|
+
this.log.warn('Failed to dispose document:', disposeError);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Issues:**
|
|
38
|
+
- dispose() not called if exception before doc assignment
|
|
39
|
+
- Early returns bypass cleanup
|
|
40
|
+
- Nested operations don't cleanup
|
|
41
|
+
- Conditional disposal inconsistent
|
|
42
|
+
|
|
43
|
+
**Recommended Pattern:**
|
|
44
|
+
```typescript
|
|
45
|
+
let doc: Document | null = null;
|
|
46
|
+
try {
|
|
47
|
+
doc = await Document.load(filePath, { strictParsing: false });
|
|
48
|
+
// ... processing ...
|
|
49
|
+
} finally {
|
|
50
|
+
doc?.dispose(); // Always cleanup
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Tasks:**
|
|
55
|
+
- [ ] Audit ALL methods using Document objects
|
|
56
|
+
- [ ] Ensure every Document.load()/create() has matching dispose()
|
|
57
|
+
- [ ] Check for early returns that skip dispose()
|
|
58
|
+
- [ ] Add memory leak tests
|
|
59
|
+
|
|
60
|
+
**Estimated Effort:** 2-4 hours
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
### Issue #2: Hyperlink.getText() Returns XML-Corrupted Text (Upstream Bug)
|
|
65
|
+
|
|
66
|
+
**Title:** Hyperlink.getText() returns XML markup - defensive workaround needed + upstream bug report
|
|
67
|
+
|
|
68
|
+
**Labels:** `bug`, `critical`, `external-dependency`, `user-experience`
|
|
69
|
+
|
|
70
|
+
**Description:**
|
|
71
|
+
The `Hyperlink.getText()` method in docxmlater v1.15.0 returns text with embedded XML markup like `<w:t xml:space="preserve">`, resulting in user-visible XML tags in the application UI.
|
|
72
|
+
|
|
73
|
+
**Current Workaround:**
|
|
74
|
+
We've implemented defensive sanitization in `src/utils/textSanitizer.ts`:
|
|
75
|
+
```typescript
|
|
76
|
+
export function sanitizeHyperlinkText(text: string): string {
|
|
77
|
+
return text
|
|
78
|
+
.replace(/<w:t[^>]*>/g, '')
|
|
79
|
+
.replace(/<\/w:t>/g, '')
|
|
80
|
+
.replace(/xml:space="preserve"/g, '')
|
|
81
|
+
.trim();
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Root Cause:**
|
|
86
|
+
Bug in docxmlater - `Run()` constructor auto-cleans with `cleanXmlFromText: true` by default, but `Hyperlink.getText()` doesn't apply the same cleanup.
|
|
87
|
+
|
|
88
|
+
**Tasks:**
|
|
89
|
+
- [ ] Create GitHub issue in docxmlater repository
|
|
90
|
+
- [ ] Add detection logging to sanitization function
|
|
91
|
+
- [ ] Create integration test to auto-detect when bug is fixed
|
|
92
|
+
- [ ] Document workaround with TODO for removal
|
|
93
|
+
- [ ] Add to dependency upgrade checklist
|
|
94
|
+
|
|
95
|
+
**Estimated Effort:** 1 hour (bug report) + ongoing monitoring
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### Issue #3: Missing Error Handling in Batch URL Updates
|
|
100
|
+
|
|
101
|
+
**Title:** Add error handling to URL update operations to prevent document corruption
|
|
102
|
+
|
|
103
|
+
**Labels:** `bug`, `critical`, `data-integrity`, `error-handling`
|
|
104
|
+
|
|
105
|
+
**Description:**
|
|
106
|
+
The `applyUrlUpdates()` method lacks error handling around `setUrl()` calls, which can leave documents in an inconsistent state if some updates fail while others succeed.
|
|
107
|
+
|
|
108
|
+
**Current Code:**
|
|
109
|
+
```typescript
|
|
110
|
+
item.setUrl(newUrl); // ⚠️ No error handling
|
|
111
|
+
updatedCount++;
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Problem:**
|
|
115
|
+
If `setUrl()` throws, partial updates occur with no tracking of failures.
|
|
116
|
+
|
|
117
|
+
**Recommended Solution:**
|
|
118
|
+
```typescript
|
|
119
|
+
try {
|
|
120
|
+
item.setUrl(newUrl);
|
|
121
|
+
updatedCount++;
|
|
122
|
+
} catch (error) {
|
|
123
|
+
this.log.error(`Failed to update URL: ${oldUrl} -> ${newUrl}`, error);
|
|
124
|
+
failedUrls.push({ oldUrl, newUrl, error });
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Tasks:**
|
|
129
|
+
- [ ] Implement error handling with failure tracking
|
|
130
|
+
- [ ] Update return type to include failed URLs
|
|
131
|
+
- [ ] Add tests for error scenarios
|
|
132
|
+
- [ ] Update callers to handle failures
|
|
133
|
+
|
|
134
|
+
**Estimated Effort:** 2-3 hours
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## High Priority Issues (Create After Critical)
|
|
139
|
+
|
|
140
|
+
### Issue #4: Replace Manual URL Updates with Built-in doc.updateHyperlinkUrls()
|
|
141
|
+
|
|
142
|
+
**Title:** Optimize URL updates by using built-in doc.updateHyperlinkUrls() method
|
|
143
|
+
|
|
144
|
+
**Labels:** `enhancement`, `optimization`, `refactoring`, `performance`
|
|
145
|
+
|
|
146
|
+
**Description:**
|
|
147
|
+
The codebase manually loops through paragraphs and hyperlinks to update URLs (30+ lines), which is inefficient and misses hyperlinks in tables/headers/footers. docxmlater provides a built-in optimized method.
|
|
148
|
+
|
|
149
|
+
**Current:** 30+ lines of manual O(n*m) loop
|
|
150
|
+
**Better:** `doc.updateHyperlinkUrls(urlMap)` (1 line, optimized)
|
|
151
|
+
|
|
152
|
+
**Benefits:**
|
|
153
|
+
- 30-50% faster performance
|
|
154
|
+
- Handles all hyperlink locations (tables, headers, footers)
|
|
155
|
+
- Less code to maintain
|
|
156
|
+
- Library-tested functionality
|
|
157
|
+
|
|
158
|
+
**Tasks:**
|
|
159
|
+
- [ ] Verify API availability in v1.15.0
|
|
160
|
+
- [ ] Replace manual implementation
|
|
161
|
+
- [ ] Add tests for all hyperlink locations
|
|
162
|
+
- [ ] Benchmark performance improvement
|
|
163
|
+
|
|
164
|
+
**Estimated Effort:** 1-2 hours
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
### Issue #5: Replace Manual Hyperlink Extraction with Built-in doc.getHyperlinks()
|
|
169
|
+
|
|
170
|
+
**Title:** Simplify hyperlink extraction using built-in doc.getHyperlinks() method
|
|
171
|
+
|
|
172
|
+
**Labels:** `enhancement`, `optimization`, `refactoring`, `code-quality`
|
|
173
|
+
|
|
174
|
+
**Description:**
|
|
175
|
+
The `extractHyperlinks()` method manually loops through paragraphs (46 lines) to find hyperlinks, missing those in tables/headers/footers. docxmlater provides a built-in comprehensive method.
|
|
176
|
+
|
|
177
|
+
**Current:** 46 lines of manual extraction
|
|
178
|
+
**Better:** `doc.getHyperlinks()` + mapping (5 lines)
|
|
179
|
+
|
|
180
|
+
**Benefits:**
|
|
181
|
+
- 89% code reduction
|
|
182
|
+
- Comprehensive coverage (all document parts)
|
|
183
|
+
- Library-tested code
|
|
184
|
+
- Easier to maintain
|
|
185
|
+
|
|
186
|
+
**Tasks:**
|
|
187
|
+
- [ ] Replace manual implementation
|
|
188
|
+
- [ ] Add tests for tables, headers, footers
|
|
189
|
+
- [ ] Verify all existing tests pass
|
|
190
|
+
|
|
191
|
+
**Estimated Effort:** 30 minutes
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Sprint Planning
|
|
196
|
+
|
|
197
|
+
### Sprint 1 (Critical Issues)
|
|
198
|
+
**Focus:** Fix memory leaks and data integrity issues
|
|
199
|
+
**Total Effort:** 5-8 hours
|
|
200
|
+
|
|
201
|
+
1. Issue #1 - Memory leaks (2-4 hours)
|
|
202
|
+
2. Issue #3 - Error handling (2-3 hours)
|
|
203
|
+
3. Issue #2 - Report bug + monitoring (1 hour)
|
|
204
|
+
|
|
205
|
+
### Sprint 2 (High Priority)
|
|
206
|
+
**Focus:** Code optimization and quality improvements
|
|
207
|
+
**Total Effort:** 1.5-2.5 hours
|
|
208
|
+
|
|
209
|
+
4. Issue #5 - Use getHyperlinks() (30 min) ✅ Quick win
|
|
210
|
+
5. Issue #4 - Use updateHyperlinkUrls() (1-2 hours)
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Issue Creation Checklist
|
|
215
|
+
|
|
216
|
+
When creating each issue:
|
|
217
|
+
|
|
218
|
+
- [ ] Copy title and labels exactly
|
|
219
|
+
- [ ] Include full description with code examples
|
|
220
|
+
- [ ] Add estimated effort
|
|
221
|
+
- [ ] Reference analysis document
|
|
222
|
+
- [ ] Assign to appropriate milestone
|
|
223
|
+
- [ ] Link related issues (e.g., #3 and #4 are related)
|
|
224
|
+
- [ ] Add to project board if applicable
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## Additional Context
|
|
229
|
+
|
|
230
|
+
**Full Analysis:** `docs/analysis/docxmlater-implementation-analysis-2025-11-13.md`
|
|
231
|
+
**Detailed Issues:** `/GH_Issues/` (gitignored, local only)
|
|
232
|
+
**Overall Grade:** B+ (85/100)
|
|
233
|
+
**Risk Level:** Medium (critical issues fixable in 1-2 sprints)
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
**Created:** 2025-11-13
|