From 849e6691478c83fa1e2466474dc0ee57a00db278 Mon Sep 17 00:00:00 2001 From: Annie Huang Date: Sun, 26 Nov 2023 18:27:34 +0800 Subject: [PATCH 1/4] Map init position, pwd display, instruct speed --- app/src/components/QuestMap.vue | 2 +- app/src/components/TreeChart.vue | 2 +- packages/container/cli.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/components/QuestMap.vue b/app/src/components/QuestMap.vue index 56013d6..88569f6 100644 --- a/app/src/components/QuestMap.vue +++ b/app/src/components/QuestMap.vue @@ -74,7 +74,7 @@ const genOption = (nodes, edges) => ({ symbolSize: [fullwidth / 13, fullwidth / 30], roam: 'move', zoom: 1.5, - center: ['150%', '50%'], + center: ['120%', '30%'], label: { show: true, fontSize: fullwidth / 90, diff --git a/app/src/components/TreeChart.vue b/app/src/components/TreeChart.vue index d71134e..e86d0e0 100644 --- a/app/src/components/TreeChart.vue +++ b/app/src/components/TreeChart.vue @@ -121,6 +121,6 @@ li.discovered { } a.pwd { - box-shadow: 0 0 10px rgba(255, 255, 255, 0.5); + box-shadow: 0 0 40px rgba(255, 255, 0, 20); } diff --git a/packages/container/cli.js b/packages/container/cli.js index ba0fb5f..070dd38 100644 --- a/packages/container/cli.js +++ b/packages/container/cli.js @@ -48,10 +48,10 @@ async function handleCommand(command) { async function handleResponse({ responses, hints, end }) { if (responses) { - await printResponses(responses, 60) + await printResponses(responses, 120) } if (hints) { - await printHints(hints, 60) + await printHints(hints, 120) } if (end) { console.log(colorize('Quest completed!', 'blue')) From 8fb8af036df1f68ef86437a169029a1454d53959 Mon Sep 17 00:00:00 2001 From: Annie Huang Date: Sun, 26 Nov 2023 23:31:38 +0800 Subject: [PATCH 2/4] change color in content, bigger text in term --- app/src/utils/terminal.js | 11 +++++------ packages/container/print.js | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/src/utils/terminal.js b/app/src/utils/terminal.js index 528dd8d..6ecb321 100644 --- a/app/src/utils/terminal.js +++ b/app/src/utils/terminal.js @@ -13,12 +13,11 @@ class SocketTerminal { disableStdin: false, // 是否应禁用输入 // cursorStyle: "underline", //光标样式 cursorBlink: true, // 光标闪烁 - theme: { - foreground: '#ECECEC', // 字体 - background: '#000000', // 背景色 - cursor: 'help', // 设置光标 - lineHeight: 20, - }, + foreground: '#ECECEC', // 字体 + background: '#000000', // 背景色 + cursor: 'help', // 设置光标 + fontSize: 18, + fontWeight: 'bold', }) this.fitAddon = new FitAddon() this.term.loadAddon(this.fitAddon) diff --git a/packages/container/print.js b/packages/container/print.js index 6c6a161..35a8af2 100644 --- a/packages/container/print.js +++ b/packages/container/print.js @@ -36,12 +36,25 @@ function waitForEnter() { }) } +function isCodeColor(text, isCode) { + if (text === '`') { + return !isCode + } + return isCode +} + function printLine(content, delay, color) { const printContent = `${colorize(content, color)}${RETURN_SYMBOL}` + let isCode = false return new Promise((resolve) => { let i = 0 const timer = setInterval(() => { - process.stdout.write(printContent[i]) + isCode = isCodeColor(printContent[i], isCode) + if (isCode) { + process.stdout.write(colorize(printContent[i], 'green')) + } else { + process.stdout.write(printContent[i]) + } i += 1 if (i >= printContent.length) { clearInterval(timer) From 6cd348433a20bbf5eddab10dda1f5af4bffdaf62 Mon Sep 17 00:00:00 2001 From: "Lin, Hung-Shin" Date: Mon, 27 Nov 2023 00:10:41 +0800 Subject: [PATCH 3/4] feat: display code block in terminal to different color --- packages/container/cli.js | 4 ++-- packages/container/print.js | 38 ++++++++++++++++++++------------- server/src/containers/docker.js | 4 ++-- 3 files changed, 27 insertions(+), 19 deletions(-) diff --git a/packages/container/cli.js b/packages/container/cli.js index 070dd38..c49ccfd 100644 --- a/packages/container/cli.js +++ b/packages/container/cli.js @@ -48,10 +48,10 @@ async function handleCommand(command) { async function handleResponse({ responses, hints, end }) { if (responses) { - await printResponses(responses, 120) + await printResponses(responses, 90) } if (hints) { - await printHints(hints, 120) + await printHints(hints, 90) } if (end) { console.log(colorize('Quest completed!', 'blue')) diff --git a/packages/container/print.js b/packages/container/print.js index 35a8af2..8f3eee3 100644 --- a/packages/container/print.js +++ b/packages/container/print.js @@ -6,6 +6,7 @@ const RETURN_SYMBOL = '\u21B5' // ANSI color map const ANSI_COLORS = { + default: 0, black: 30, red: 31, green: 32, @@ -16,10 +17,13 @@ const ANSI_COLORS = { white: 37, } +function colorCode(color) { + return `\x1b[${ANSI_COLORS[color]}m` +} + function colorize(content, color) { - const colorCode = ANSI_COLORS[color] - if (!colorCode) return content - return `\x1b[${colorCode}m${content}\x1b[0m` + if (!color) return content + return `${colorCode(color)}${content}${colorCode('default')}` } process.stdin.setRawMode(true) @@ -36,25 +40,29 @@ function waitForEnter() { }) } -function isCodeColor(text, isCode) { - if (text === '`') { - return !isCode +function formatLine(content, color) { + let result = colorCode(color) + let codeBlock = false + for (const c of content) { + switch (c) { + case '`': + result += colorCode(codeBlock ? color : 'green') + codeBlock = !codeBlock + break + + default: + result += c + } } - return isCode + return result + colorCode('default') + RETURN_SYMBOL } function printLine(content, delay, color) { - const printContent = `${colorize(content, color)}${RETURN_SYMBOL}` - let isCode = false + const printContent = formatLine(content, color) return new Promise((resolve) => { let i = 0 const timer = setInterval(() => { - isCode = isCodeColor(printContent[i], isCode) - if (isCode) { - process.stdout.write(colorize(printContent[i], 'green')) - } else { - process.stdout.write(printContent[i]) - } + process.stdout.write(printContent[i]) i += 1 if (i >= printContent.length) { clearInterval(timer) diff --git a/server/src/containers/docker.js b/server/src/containers/docker.js index ed34022..af33e42 100644 --- a/server/src/containers/docker.js +++ b/server/src/containers/docker.js @@ -25,8 +25,8 @@ export function createContainer(name, questId) { Image: getQuestImage(questId), } const { hostPwd, mountQuest } = config.docker - if (!config.isProduction && hostPwd && mountQuest) { - logger.debug('Mounting quest folder', mountQuest) + if (!config.isProduction && hostPwd && mountQuest === questId) { + logger.info('Mounting quest folder', mountQuest) option.HostConfig.Binds = [ `${hostPwd}/quests/${mountQuest}/home:/home/commander`, `${hostPwd}/packages/container:/usr/local/lib/container`, From 5cfe6823cc70f843b2cc9ea020f483dd3141aed2 Mon Sep 17 00:00:00 2001 From: "Lin, Hung-Shin" Date: Mon, 27 Nov 2023 00:10:52 +0800 Subject: [PATCH 4/4] change xterm back to normal fontWeight --- app/src/utils/terminal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/utils/terminal.js b/app/src/utils/terminal.js index 6ecb321..041606d 100644 --- a/app/src/utils/terminal.js +++ b/app/src/utils/terminal.js @@ -17,7 +17,7 @@ class SocketTerminal { background: '#000000', // 背景色 cursor: 'help', // 设置光标 fontSize: 18, - fontWeight: 'bold', + fontWeight: 'normal', }) this.fitAddon = new FitAddon() this.term.loadAddon(this.fitAddon)