mirror of
https://github.com/jacobinwwey/obsidian-NotEMD.git
synced 2026-07-22 05:48:27 +00:00
docs: add multiphase language-support plan with robustness baselines
This commit is contained in:
parent
0205b39af9
commit
0bd3183783
5 changed files with 1160 additions and 0 deletions
|
|
@ -0,0 +1,19 @@
|
|||
# 2026-04-09 Language Support Baseline
|
||||
|
||||
This folder stores immutable **before-change** evidence for the language-support multiphase plan.
|
||||
|
||||
## Files
|
||||
|
||||
- `environment-before.txt`: Runtime and CLI environment snapshot (`node`, `npm`, `obsidian`, `obsidian-cli`).
|
||||
- `build-before.txt`: Pre-change `npm run build` output.
|
||||
- `targeted-tests-before.txt`: Pre-change targeted regression test output.
|
||||
|
||||
## Current Baseline Interpretation
|
||||
|
||||
- Targeted tests are PASS on this baseline.
|
||||
- Build is FAIL on this baseline due to TypeScript `TS6059` triggered by cloned reference code under `ref/notebook-navigator` being included by `tsconfig` glob patterns.
|
||||
- This build issue is treated as a known baseline constraint and must be resolved in planned Task 9 Step 1 (exclude `ref/**` from TypeScript compile scope if reference folder remains in repo).
|
||||
|
||||
## Usage Rule
|
||||
|
||||
For each implementation task, add matching `taskN-before.txt` and `taskN-after.txt` logs under this folder and perform a direct compare before merging.
|
||||
|
|
@ -0,0 +1,478 @@
|
|||
|
||||
> notemd@1.7.14 build
|
||||
> tsc -noEmit -skipLibCheck && node esbuild.config.mjs production
|
||||
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/icon-assets/scripts/update-icon-packs.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/components/calendar/index.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/components/calendar/useCalendarFeatureImages.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/components/calendar/useCalendarHoverTooltip.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/components/calendar/useCalendarNoteActions.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/components/navigationPane/NavigationPaneItemRenderer.types.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/constants/surfaceColorMappings.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useCacheRebuildNotice.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useIndexedDBReady.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useInitializeContentProviderRegistry.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useMetadataCacheQueue.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/usePropertyTreeSync.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useStorageCacheRebuild.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useStorageContentQueue.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useStorageFileQueries.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useStorageSettingsSync.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useStorageVaultSync.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/context/storage/useTagTreeSync.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/navigationPane/useNavigationPaneData.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/navigationPane/useNavigationPaneShortcuts.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useAutoDismissFade.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useContextMenu.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useDragNavigationPaneActivation.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useFileItemPillDecorationState.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useFolderDecorationState.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useListActions.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useListPaneData.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useListPaneKeyboard.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useListPaneScroll.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useListPaneSearch.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useListPaneTitle.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useMeasuredElementHeight.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useNavigationPaneKeyboard.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useNavigationPaneScroll.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useNavigatorEventHandlers.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useNavigatorScale.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useResizablePane.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useSelectedFolderFileVersion.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useSwipeGesture.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useTagNavigation.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useUpdateNotice.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/hooks/useVaultProfileMenu.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/modals/InfoModal.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/modals/PropertyNodeSuggestModal.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/suggest/SearchDateInputSuggest.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/suggest/SearchTagInputSuggest.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/utils/androidFontScale.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/utils/paneLayout.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/utils/searchHighlight.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/utils/svgFilters.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/api/MenusAPI.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/api/MetadataAPI.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/api/NavigationAPI.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/api/NotebookNavigatorAPI.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/api/PublicApiDefinitionConsistency.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/api/SelectionAPI.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/components/calendarYearPanel.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/components/fileItem/useFileItemContentState.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/components/fileItem/useFileItemPills.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/context/CacheRebuildNoticeStorage.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/context/SelectionHistoryState.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/context/SelectionInitialState.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/context/StorageQueueFilters.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/contextMenu/NavigationMenuExtensionPlacement.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/filterSearchProperties.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/hooks/listPaneData/listItems.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/hooks/useLocalDayKey.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/hooks/useNavigationActions.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/hooks/useNavigationNoteCounts.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/hooks/useNavigationPaneTreeInteractions.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/hooks/useNavigationPaneTreeSections.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/modals/TagSuggestModal.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/propertyTreeBuilder.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/BaseContentProviderRace.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/BaseMetadataService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/CommandQueueService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/FeatureImageContentProvider.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/FileDeletionService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/FileMetadataService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/FileSystemService.deleteAttachments.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/FileThumbnailsForcedRegeneration.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/FolderMetadataService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/ImageDimensions.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/MarkdownPipelineClearContent.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/MarkdownPipelineCustomPropertyFrontmatter.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/MarkdownPipelineFeatureImageErrors.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/MarkdownPipelineTasks.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/MarkdownPipelineWordCount.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/NavigationSeparatorService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/OmnisearchService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/PluginPreferencesController.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/PluginSettingsController.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/PropertyMetadataService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/PropertyOperations.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/PropertyTreeService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/RecentStorageService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/ReleaseCheckService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/RetryLaterContentProviders.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/TagMetadataService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/TagOperations.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/TagTreeService.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/pdfPreflight.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/propertyOperations/PropertyFileMutations.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/tagOperations/TagFileMutations.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/tagOperations/TagWorkflows.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/services/thumbnailRuntimeUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/settings/deleteAttachmentsSetting.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/settings/momentFormats.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/settings/syncedSettingsPropertyMigration.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/settings/transfer.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/FeatureImageBlobCache.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/FeatureImageBlobStore.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/FeatureImageMoveInFlight.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/GetFilesNeedingContent.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/PreviewTextCache.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/PreviewTextMoveInFlight.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/fileData.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/fileOperationsLifecycle.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/recordFileChangesClobbering.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/storage/recordFileChangesRenameMerge.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/stubs/obsidian.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/styles/listPaneMeasurementsCssSync.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/autoRevealUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/calendarCustomNotePatterns.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/calendarNotesLocalePolicy.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/calendarUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/codeRangeUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/dateUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/emojiUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/fileFilters.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/fileFinder.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/fileIconUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/fileItemPillDecoration.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/fileNameUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/fileTypeUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/filterSearch.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/folderNoteName.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/iconizeFormat.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/indentGuides.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/listGrouping.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/listPaneMeasurements.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/metadataExtractor.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/navigationRainbow.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/noteCountFormatting.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/omnisearchHighlight.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/pathUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/previewTextUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/recordUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/shortcuts.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/sortUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/tagPrefixMatcher.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/tagTree.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/tagUtils.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/treeFlattener.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/uxIcons.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/vaultProfiles.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/tests/utils/workspaceActiveFileEvents.test.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
error TS6059: File '/home/jacob/obsidian-NotEMD/ref/notebook-navigator/vitest.config.ts' is not under 'rootDir' '/home/jacob/obsidian-NotEMD/src'. 'rootDir' is expected to contain all source files.
|
||||
The file is in the program because:
|
||||
Matched by include pattern '**/*.ts' in '/home/jacob/obsidian-NotEMD/tsconfig.json'
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
=== DATE ===
|
||||
2026-04-09T02:16:09-05:00
|
||||
|
||||
=== NODE/NPM ===
|
||||
v24.14.1
|
||||
11.11.0
|
||||
|
||||
=== OBSIDIAN CLI ===
|
||||
Ignored: Error: ENOENT: no such file or directory, open '/root/.config/obsidian/obsidian.json'
|
||||
2026-04-09 07:16:10 Loaded main app package /opt/obsidian-desktop/1.12.7/resources/obsidian.asar
|
||||
|
||||
|
|
@ -0,0 +1,293 @@
|
|||
|
||||
> notemd@1.7.14 test
|
||||
> jest --runInBand src/tests/workflowButtons.test.ts src/tests/sidebarDomButtonClicks.test.ts src/tests/llmUtilsProviderSupport.test.ts src/tests/providerDiagnostics.test.ts
|
||||
|
||||
PASS src/tests/llmUtilsProviderSupport.test.ts
|
||||
● Console
|
||||
|
||||
console.warn
|
||||
OpenAI API Call: Attempt 1 failed: OpenAI API request failed: net::ERR_CONNECTION_CLOSED
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
OpenAI API Call: Attempt 1 failed: OpenAI API request failed: net::ERR_CONNECTION_CLOSED
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
OpenAI API Call: Attempt 2 failed: OpenAI API request failed: net::ERR_CONNECTION_CLOSED
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
Anthropic API Call: Attempt 1 failed: Anthropic API request failed: net::ERR_CONNECTION_CLOSED
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
Google API Call: Attempt 1 failed: Google API request failed: net::ERR_CONNECTION_CLOSED
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
Azure OpenAI API Call: Attempt 1 failed: Azure OpenAI API request failed: net::ERR_CONNECTION_CLOSED
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
Ollama API Call: Attempt 1 failed: Ollama API request failed: net::ERR_CONNECTION_CLOSED
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
OpenAI API Call: Attempt 1 failed: OpenAI API error: 400 - Bad request
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
OpenAI API Call: Attempt 1 failed: OpenAI API request failed: socket hang up
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.error
|
||||
OpenAI API Call: All configured attempts failed.
|
||||
|
||||
2407 | }
|
||||
2408 |
|
||||
> 2409 | console.error(`${provider.name} API Call: All configured attempts failed.`);
|
||||
| ^
|
||||
2410 | throw lastError || new Error(`${provider.name} API call failed after multiple retries.`);
|
||||
2411 | }
|
||||
2412 |
|
||||
|
||||
at src/llmUtils.ts:2409:13
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
OpenAI API Call: Attempt 1 failed: OpenAI API request failed: The operation was aborted.
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.error
|
||||
OpenAI API Call: All configured attempts failed.
|
||||
|
||||
2407 | }
|
||||
2408 |
|
||||
> 2409 | console.error(`${provider.name} API Call: All configured attempts failed.`);
|
||||
| ^
|
||||
2410 | throw lastError || new Error(`${provider.name} API call failed after multiple retries.`);
|
||||
2411 | }
|
||||
2412 |
|
||||
|
||||
at src/llmUtils.ts:2409:13
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
OpenAI API Call: Attempt 1 failed: OpenAI API request failed: socket hang up
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.error
|
||||
OpenAI API Call: All configured attempts failed.
|
||||
|
||||
2407 | }
|
||||
2408 |
|
||||
> 2409 | console.error(`${provider.name} API Call: All configured attempts failed.`);
|
||||
| ^
|
||||
2410 | throw lastError || new Error(`${provider.name} API call failed after multiple retries.`);
|
||||
2411 | }
|
||||
2412 |
|
||||
|
||||
at src/llmUtils.ts:2409:13
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
Anthropic API Call: Attempt 1 failed: Anthropic API request failed: socket hang up
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.error
|
||||
Anthropic API Call: All configured attempts failed.
|
||||
|
||||
2407 | }
|
||||
2408 |
|
||||
> 2409 | console.error(`${provider.name} API Call: All configured attempts failed.`);
|
||||
| ^
|
||||
2410 | throw lastError || new Error(`${provider.name} API call failed after multiple retries.`);
|
||||
2411 | }
|
||||
2412 |
|
||||
|
||||
at src/llmUtils.ts:2409:13
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.warn
|
||||
Ollama API Call: Attempt 1 failed: Ollama API request failed: socket hang up
|
||||
|
||||
2349 | lastError = error instanceof Error ? error : new Error(errorMessage); // Store Error object if possible
|
||||
2350 | progressReporter.log(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
> 2351 | console.warn(`${provider.name} API Call: Attempt ${attempt} failed: ${errorMessage}`);
|
||||
| ^
|
||||
2352 |
|
||||
2353 | // Handle cancellation specifically
|
||||
2354 | if ((error instanceof Error && error.name === 'AbortError') || errorMessage.includes("cancelled by user")) {
|
||||
|
||||
at src/llmUtils.ts:2351:21
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
console.error
|
||||
Ollama API Call: All configured attempts failed.
|
||||
|
||||
2407 | }
|
||||
2408 |
|
||||
> 2409 | console.error(`${provider.name} API Call: All configured attempts failed.`);
|
||||
| ^
|
||||
2410 | throw lastError || new Error(`${provider.name} API call failed after multiple retries.`);
|
||||
2411 | }
|
||||
2412 |
|
||||
|
||||
at src/llmUtils.ts:2409:13
|
||||
at Generator.throw (<anonymous>)
|
||||
at rejected (node_modules/tslib/tslib.js:116:69)
|
||||
|
||||
PASS src/tests/sidebarDomButtonClicks.test.ts
|
||||
● Console
|
||||
|
||||
console.log
|
||||
Potential duplicates in Active.txt: [ 'duplicate' ]
|
||||
|
||||
at NotemdSidebarView.<anonymous> (src/ui/NotemdSidebarView.ts:566:29)
|
||||
|
||||
PASS src/tests/providerDiagnostics.test.ts
|
||||
PASS src/tests/workflowButtons.test.ts
|
||||
|
||||
Test Suites: 4 passed, 4 total
|
||||
Tests: 80 passed, 80 total
|
||||
Snapshots: 0 total
|
||||
Time: 0.835 s
|
||||
Ran all test suites matching /src\/tests\/workflowButtons.test.ts|src\/tests\/sidebarDomButtonClicks.test.ts|src\/tests\/llmUtilsProviderSupport.test.ts|src\/tests\/providerDiagnostics.test.ts/i.
|
||||
|
|
@ -0,0 +1,359 @@
|
|||
# Notemd Language Support First-Principles Multiphase Implementation Plan
|
||||
|
||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||
|
||||
**Goal:** 在不破坏现有功能鲁棒性的前提下,分阶段把 Notemd 从“任务输出语言配置”升级为“UI i18n + 统一语言策略 + 可回归验证”的完整语言支持体系。
|
||||
|
||||
**Architecture:** 采用“语言域建模 -> i18n 基础设施 -> UI 文案迁移 -> 任务语言策略收敛 -> 回归门禁”五层架构。UI Locale 与 Task Output Language 明确分离,所有任务语言决策统一收口到策略层,所有改动按阶段执行并强制执行前后同口径比对。
|
||||
|
||||
**Tech Stack:** TypeScript, Obsidian Plugin API, Jest, ESLint, npm scripts, Obsidian CLI (`obsidian`/`obsidian-cli`)
|
||||
|
||||
---
|
||||
|
||||
## Phase Boundaries And Robustness Rule (Must Follow)
|
||||
|
||||
- 每个阶段都必须执行:`修改前基线 -> 最小改动 -> 修改后回归 -> 基线对比 -> 提交`。
|
||||
- 每个阶段至少保留两份日志:`*-before.txt` 与 `*-after.txt`,放到 `docs/superpowers/baselines/<date>-language-support/`。
|
||||
- 如果阶段回归失败,禁止进入下一阶段;先在当前阶段内修复并重新比对。
|
||||
- 对同一功能使用同一测试入口做前后对比,避免“换口径通过”。
|
||||
|
||||
---
|
||||
|
||||
### Task 0: Freeze Baseline Snapshot (Current Reality)
|
||||
|
||||
**Files:**
|
||||
- Create/Update: `docs/superpowers/baselines/2026-04-09-language-support/environment-before.txt`
|
||||
- Create/Update: `docs/superpowers/baselines/2026-04-09-language-support/build-before.txt`
|
||||
- Create/Update: `docs/superpowers/baselines/2026-04-09-language-support/targeted-tests-before.txt`
|
||||
|
||||
- [ ] **Step 1: Capture environment baseline**
|
||||
Run:
|
||||
```bash
|
||||
cd /home/jacob/obsidian-NotEMD
|
||||
obsidian help
|
||||
obsidian-cli help
|
||||
node -v
|
||||
npm -v
|
||||
```
|
||||
Expected: 命令可执行(允许 Obsidian CLI 输出本地配置告警)。
|
||||
|
||||
- [ ] **Step 2: Capture build baseline**
|
||||
Run:
|
||||
```bash
|
||||
cd /home/jacob/obsidian-NotEMD
|
||||
npm run build
|
||||
```
|
||||
Expected: 当前基线允许失败,但必须记录失败原因(当前已知:`ref/notebook-navigator` 被 `tsconfig` include 扫入导致 `TS6059`)。
|
||||
|
||||
- [ ] **Step 3: Capture targeted functional baseline**
|
||||
Run:
|
||||
```bash
|
||||
cd /home/jacob/obsidian-NotEMD
|
||||
npm test -- --runInBand src/tests/workflowButtons.test.ts src/tests/sidebarDomButtonClicks.test.ts src/tests/llmUtilsProviderSupport.test.ts src/tests/providerDiagnostics.test.ts
|
||||
```
|
||||
Expected: PASS;作为语言支持改造期间的关键行为基线。
|
||||
|
||||
---
|
||||
|
||||
### Task 1: Introduce Language Domain Model (Single Source Of Truth)
|
||||
|
||||
**Files:**
|
||||
- Create: `src/i18n/languageContext.ts`
|
||||
- Create: `src/i18n/taskLanguagePolicy.ts`
|
||||
- Modify: `src/types.ts`
|
||||
- Modify: `src/constants.ts`
|
||||
- Test: `src/tests/languagePolicy.test.ts`
|
||||
|
||||
- [ ] **Step 1: Write failing tests for policy rules**
|
||||
覆盖:全局语言、按任务语言、禁用自动翻译、Translate 任务例外、Mermaid 特殊策略。
|
||||
|
||||
- [ ] **Step 2: Run tests to verify failure**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/languagePolicy.test.ts
|
||||
```
|
||||
Expected: FAIL(策略层尚未实现)。
|
||||
|
||||
- [ ] **Step 3: Implement minimal policy layer**
|
||||
实现统一入口:`resolveTaskLanguage(taskKey, settings)` 与 `resolveUiLocale(settings, obsidianLocale)`。
|
||||
|
||||
- [ ] **Step 4: Re-run tests**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/languagePolicy.test.ts
|
||||
```
|
||||
Expected: PASS。
|
||||
|
||||
- [ ] **Step 5: Before/after comparison**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/languagePolicy.test.ts > docs/superpowers/baselines/2026-04-09-language-support/task1-after.txt 2>&1
|
||||
```
|
||||
Compare:
|
||||
```bash
|
||||
grep -E "PASS|FAIL" docs/superpowers/baselines/2026-04-09-language-support/task1-after.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Task 2: Build UI i18n Infrastructure (Catalog + Fallback)
|
||||
|
||||
**Files:**
|
||||
- Create: `src/i18n/index.ts`
|
||||
- Create: `src/i18n/locales/en.ts`
|
||||
- Create: `src/i18n/locales/zh_cn.ts`
|
||||
- Create: `src/i18n/locales/zh_tw.ts`
|
||||
- Modify: `src/main.ts`
|
||||
- Test: `src/tests/i18nFallback.test.ts`
|
||||
|
||||
- [ ] **Step 1: Write failing tests for fallback chain**
|
||||
覆盖:`zh-CN -> zh -> en`、缺失 key 回退、变量插值、缓存稳定性。
|
||||
|
||||
- [ ] **Step 2: Verify failure**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/i18nFallback.test.ts
|
||||
```
|
||||
Expected: FAIL。
|
||||
|
||||
- [ ] **Step 3: Implement i18n core**
|
||||
参考:`ref/notebook-navigator/src/i18n/index.ts` 的 `LANGUAGE_MAP + deep-merge fallback` 模式,但保持 Notemd 自身简洁边界。
|
||||
|
||||
- [ ] **Step 4: Re-run tests**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/i18nFallback.test.ts
|
||||
```
|
||||
Expected: PASS。
|
||||
|
||||
- [ ] **Step 5: Compare with pre-change baseline**
|
||||
保存并对比本任务前后日志,确认 i18n 引入没有影响既有 provider/mermaid/workflow 测试。
|
||||
|
||||
---
|
||||
|
||||
### Task 3: Migrate Settings UI Strings To i18n (High Impact Surface)
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/ui/NotemdSettingTab.ts`
|
||||
- Modify: `src/i18n/locales/en.ts`
|
||||
- Modify: `src/i18n/locales/zh_cn.ts`
|
||||
- Test: `src/tests/providerDiagnostics.test.ts`
|
||||
- Test: `src/tests/sidebarDomButtonClicks.test.ts`
|
||||
|
||||
- [ ] **Step 1: Capture before snapshot (settings-related tests)**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/providerDiagnostics.test.ts src/tests/sidebarDomButtonClicks.test.ts > docs/superpowers/baselines/2026-04-09-language-support/task3-before.txt 2>&1
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Replace hardcoded UI labels with `strings` access**
|
||||
范围:Language settings、Developer diagnostics、Workflow builder、Provider config notices。
|
||||
|
||||
- [ ] **Step 3: Run same tests after change**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/providerDiagnostics.test.ts src/tests/sidebarDomButtonClicks.test.ts > docs/superpowers/baselines/2026-04-09-language-support/task3-after.txt 2>&1
|
||||
```
|
||||
Expected: PASS。
|
||||
|
||||
- [ ] **Step 4: Diff compare**
|
||||
Run:
|
||||
```bash
|
||||
diff -u docs/superpowers/baselines/2026-04-09-language-support/task3-before.txt docs/superpowers/baselines/2026-04-09-language-support/task3-after.txt | sed -n '1,200p'
|
||||
```
|
||||
Expected: 只接受文案相关差异,不接受行为失败差异。
|
||||
|
||||
---
|
||||
|
||||
### Task 4: Migrate Sidebar And Notice Strings (Runtime UX Surface)
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/ui/NotemdSidebarView.ts`
|
||||
- Modify: `src/ui/ErrorModal.ts`
|
||||
- Modify: `src/main.ts`
|
||||
- Modify: `src/i18n/locales/en.ts`
|
||||
- Modify: `src/i18n/locales/zh_cn.ts`
|
||||
- Test: `src/tests/sidebarDomButtonClicks.test.ts`
|
||||
- Test: `src/tests/sidebarButtonTriggerChains.test.ts`
|
||||
|
||||
- [ ] **Step 1: Record runtime UI baseline tests**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/sidebarDomButtonClicks.test.ts src/tests/sidebarButtonTriggerChains.test.ts > docs/superpowers/baselines/2026-04-09-language-support/task4-before.txt 2>&1
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Migrate runtime-facing strings**
|
||||
包括:hero 标题、按钮文本、取消提示、log 操作提示、错误模态按钮文案。
|
||||
|
||||
- [ ] **Step 3: Re-run same tests**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/sidebarDomButtonClicks.test.ts src/tests/sidebarButtonTriggerChains.test.ts > docs/superpowers/baselines/2026-04-09-language-support/task4-after.txt 2>&1
|
||||
```
|
||||
Expected: PASS。
|
||||
|
||||
- [ ] **Step 4: Compare and gate**
|
||||
只要出现 FAIL 或 open-handle 恶化,必须回滚到本阶段内修复。
|
||||
|
||||
---
|
||||
|
||||
### Task 5: Unify Task Language Decision In Prompt And Processing Paths
|
||||
|
||||
**Files:**
|
||||
- Modify: `src/promptUtils.ts`
|
||||
- Modify: `src/fileUtils.ts`
|
||||
- Modify: `src/searchUtils.ts`
|
||||
- Modify: `src/main.ts`
|
||||
- Modify: `src/i18n/taskLanguagePolicy.ts`
|
||||
- Test: `src/tests/languagePolicy.test.ts`
|
||||
- Test: `src/tests/processFile.test.ts`
|
||||
- Test: `src/tests/workflowButtons.test.ts`
|
||||
|
||||
- [ ] **Step 1: Capture before behavior tests**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/languagePolicy.test.ts src/tests/processFile.test.ts src/tests/workflowButtons.test.ts > docs/superpowers/baselines/2026-04-09-language-support/task5-before.txt 2>&1
|
||||
```
|
||||
|
||||
- [ ] **Step 2: Remove scattered language decisions**
|
||||
将 `fileUtils/searchUtils/promptUtils` 内分散逻辑收敛到 `taskLanguagePolicy`。
|
||||
|
||||
- [ ] **Step 3: Add explicit assertions for previously implicit behavior**
|
||||
确保 `disableAutoTranslation`、task-specific language、translate task 例外逻辑可测。
|
||||
|
||||
- [ ] **Step 4: Run same test set after change**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/languagePolicy.test.ts src/tests/processFile.test.ts src/tests/workflowButtons.test.ts > docs/superpowers/baselines/2026-04-09-language-support/task5-after.txt 2>&1
|
||||
```
|
||||
Expected: PASS。
|
||||
|
||||
- [ ] **Step 5: Compare before/after**
|
||||
仅允许预期日志文本差异;禁止功能路径变化导致断言减少。
|
||||
|
||||
---
|
||||
|
||||
### Task 6: Add Locale Formatting And RTL Safety
|
||||
|
||||
**Files:**
|
||||
- Modify: `styles.css`
|
||||
- Create: `src/i18n/localeFormat.ts`
|
||||
- Modify: `src/ui/NotemdSidebarView.ts`
|
||||
- Test: `src/tests/sidebarDomButtonClicks.test.ts`
|
||||
|
||||
- [ ] **Step 1: Add RTL and text-direction safe rules**
|
||||
引入最小必要规则,避免破坏现有 panel 布局。
|
||||
|
||||
- [ ] **Step 2: Add formatting helper tests**
|
||||
新增日期/时间格式 fallback 基础测试。
|
||||
|
||||
- [ ] **Step 3: Validate sidebar layout tests**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/sidebarDomButtonClicks.test.ts
|
||||
```
|
||||
Expected: PASS(尤其是 docked footer / log 区域可见性相关断言)。
|
||||
|
||||
---
|
||||
|
||||
### Task 7: Build Regression Harness For Before/After Comparisons
|
||||
|
||||
**Files:**
|
||||
- Create: `scripts/regression/language-support-baseline.sh`
|
||||
- Create: `scripts/regression/language-support-compare.sh`
|
||||
- Modify: `package.json`
|
||||
- Create: `docs/superpowers/baselines/README.md`
|
||||
- Test: `src/tests/llmUtilsProviderSupport.test.ts`
|
||||
|
||||
- [ ] **Step 1: Script baseline capture command**
|
||||
把关键命令统一封装,确保团队可重复执行。
|
||||
|
||||
- [ ] **Step 2: Script compare gate**
|
||||
自动检查 PASS/FAIL 统计和关键错误关键字(`TS6059`, `ERR_CONNECTION_CLOSED`, `socket hang up` 仅允许在 mock 日志中出现)。
|
||||
|
||||
- [ ] **Step 3: Verify scripts locally**
|
||||
Run:
|
||||
```bash
|
||||
npm run test -- --runInBand src/tests/llmUtilsProviderSupport.test.ts
|
||||
bash scripts/regression/language-support-baseline.sh
|
||||
bash scripts/regression/language-support-compare.sh
|
||||
```
|
||||
Expected: compare script 返回 0 才允许继续。
|
||||
|
||||
---
|
||||
|
||||
### Task 8: Documentation And Release Process Sync
|
||||
|
||||
**Files:**
|
||||
- Modify: `README.md`
|
||||
- Modify: `README_zh.md`
|
||||
- Modify: `docs/superpowers/plans/2026-04-09-language-support-first-principles-multiphase.md`
|
||||
|
||||
- [ ] **Step 1: Document language support architecture**
|
||||
包含 UI Locale vs Task Output Language 的定义与使用方式。
|
||||
|
||||
- [ ] **Step 2: Document regression workflow**
|
||||
明确每个阶段必须保存 before/after logs。
|
||||
|
||||
- [ ] **Step 3: Release note requirement sync**
|
||||
确保发布说明继续保持中英双语独立段落要求。
|
||||
|
||||
---
|
||||
|
||||
### Task 9: Final Verification Gate (No Halfway Delivery)
|
||||
|
||||
**Files:**
|
||||
- Verify: modified files in `src/`, `styles.css`, `README.md`, `README_zh.md`, `scripts/regression/`, `docs/superpowers/`
|
||||
|
||||
- [ ] **Step 1: Restore build sanity for cloned `ref/` directory**
|
||||
若保留 `ref/notebook-navigator` 在仓库中,需在 `tsconfig.json` 排除 `ref/**`,确保构建不受参考仓库影响。
|
||||
|
||||
- [ ] **Step 2: Run build**
|
||||
Run:
|
||||
```bash
|
||||
npm run build
|
||||
```
|
||||
Expected: PASS。
|
||||
|
||||
- [ ] **Step 3: Run targeted regression matrix**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand src/tests/workflowButtons.test.ts src/tests/sidebarDomButtonClicks.test.ts src/tests/llmUtilsProviderSupport.test.ts src/tests/providerDiagnostics.test.ts src/tests/languagePolicy.test.ts src/tests/i18nFallback.test.ts
|
||||
```
|
||||
Expected: PASS。
|
||||
|
||||
- [ ] **Step 4: Run full tests**
|
||||
Run:
|
||||
```bash
|
||||
npm test -- --runInBand
|
||||
```
|
||||
Expected: PASS(若存在已知 open-handle warning,需记录并确保未恶化)。
|
||||
|
||||
- [ ] **Step 5: Obsidian CLI sanity check**
|
||||
Run:
|
||||
```bash
|
||||
obsidian help
|
||||
obsidian-cli help
|
||||
```
|
||||
Expected: 命令可执行。
|
||||
|
||||
- [ ] **Step 6: Diff quality check**
|
||||
Run:
|
||||
```bash
|
||||
git diff --check
|
||||
```
|
||||
Expected: PASS。
|
||||
|
||||
- [ ] **Step 7: Commit by phase**
|
||||
每个阶段独立提交,禁止跨阶段混杂提交。
|
||||
|
||||
- [ ] **Step 8: Release handoff**
|
||||
版本发布前必须附带:测试摘要、before/after 对比结论、风险余项。
|
||||
|
||||
---
|
||||
|
||||
## Execution Notes For Engineers
|
||||
|
||||
- 参考实现:`/home/jacob/obsidian-NotEMD/ref/notebook-navigator/src/i18n/index.ts`。
|
||||
- 但 Notemd 不做全量照抄;只迁移“可维护的最小核心”(map + fallback + centralized strings + tests)。
|
||||
- 每个阶段都要先跑“阶段前”测试并保存日志,任何“先改再补日志”的流程视为不合规。
|
||||
Loading…
Reference in a new issue