specsmd 0.1.56 → 0.1.57
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/lib/dashboard/tui/app.js +17 -3
- package/package.json +1 -1
package/lib/dashboard/tui/app.js
CHANGED
|
@@ -2926,6 +2926,12 @@ function colorizeMarkdownLine(line, inCodeBlock) {
|
|
|
2926
2926
|
};
|
|
2927
2927
|
}
|
|
2928
2928
|
|
|
2929
|
+
function sanitizeRenderLine(value) {
|
|
2930
|
+
const raw = String(value ?? '');
|
|
2931
|
+
const withoutAnsi = raw.replace(/\u001B\[[0-9;?]*[ -/]*[@-~]/g, '');
|
|
2932
|
+
return withoutAnsi.replace(/[\u0000-\u0008\u000B-\u001A\u001C-\u001F\u007F]/g, '');
|
|
2933
|
+
}
|
|
2934
|
+
|
|
2929
2935
|
function buildPreviewLines(fileEntry, width, scrollOffset, options = {}) {
|
|
2930
2936
|
const fullDocument = options?.fullDocument === true;
|
|
2931
2937
|
|
|
@@ -2967,7 +2973,8 @@ function buildPreviewLines(fileEntry, width, scrollOffset, options = {}) {
|
|
|
2967
2973
|
bold: true
|
|
2968
2974
|
};
|
|
2969
2975
|
|
|
2970
|
-
const
|
|
2976
|
+
const normalizedLines = rawLines.map((line) => sanitizeRenderLine(line));
|
|
2977
|
+
const cappedLines = fullDocument ? normalizedLines : normalizedLines.slice(0, 300);
|
|
2971
2978
|
const hiddenLineCount = fullDocument ? 0 : Math.max(0, rawLines.length - cappedLines.length);
|
|
2972
2979
|
let inCodeBlock = false;
|
|
2973
2980
|
|
|
@@ -4070,6 +4077,13 @@ function createDashboardApp(deps) {
|
|
|
4070
4077
|
setPreviewScroll(0);
|
|
4071
4078
|
}, [previewOpen, overlayPreviewOpen, paneFocus, selectedFocusedFile?.path, previewTarget?.path]);
|
|
4072
4079
|
|
|
4080
|
+
useEffect(() => {
|
|
4081
|
+
if (ui.view !== 'git') {
|
|
4082
|
+
return;
|
|
4083
|
+
}
|
|
4084
|
+
setPreviewScroll(0);
|
|
4085
|
+
}, [ui.view, focusedSection, selectedGitFile?.path, selectedGitCommit?.commitHash]);
|
|
4086
|
+
|
|
4073
4087
|
useEffect(() => {
|
|
4074
4088
|
if (statusLine === '') {
|
|
4075
4089
|
return undefined;
|
|
@@ -4235,8 +4249,8 @@ function createDashboardApp(deps) {
|
|
|
4235
4249
|
: [];
|
|
4236
4250
|
const gitInlineDiffTarget = (
|
|
4237
4251
|
focusedSection === 'git-commits'
|
|
4238
|
-
? (selectedGitCommit || selectedGitFile || firstGitFile
|
|
4239
|
-
: (selectedGitFile || firstGitFile
|
|
4252
|
+
? (selectedGitCommit || selectedGitFile || firstGitFile)
|
|
4253
|
+
: (selectedGitFile || firstGitFile)
|
|
4240
4254
|
) || null;
|
|
4241
4255
|
const gitInlineDiffLines = ui.view === 'git'
|
|
4242
4256
|
? buildPreviewLines(gitInlineDiffTarget, compactWidth, previewOpen && paneFocus === 'preview' ? previewScroll : 0, {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specsmd",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.57",
|
|
4
4
|
"description": "Multi-agent orchestration system for AI-native software development. Delivers AI-DLC, Agile, and custom SDLC flows as markdown-based agent systems.",
|
|
5
5
|
"main": "lib/installer.js",
|
|
6
6
|
"bin": {
|