feat: keyboard numbers row + Chinese phrase keys; auto-collapse keyboard when leaving chat

This commit is contained in:
2026-09-01 23:08:07 +08:00
parent ff14d44c01
commit 9e08cba05a
+54 -8
View File
@@ -6,14 +6,15 @@
<!-- 最左页:选择对话 / 工作区 --> <!-- 最左页:选择对话 / 工作区 -->
<div class="page-item left-page"> <div class="page-item left-page">
<text class="page-title">选择对话</text> <text class="page-title">选择对话</text>
<text class="ws-name">DeepSeek_Harness_Watch</text> <input class="new-session" type="button" value="+ 新会话" onclick="newSession" />
<div class="sel-conv" onclick="selectConv('小米手环10 Pro远程控制')"><text>小米手环10 Pro远程控制</text></div> <text class="page-title small">工作区</text>
<div class="sel-conv" onclick="selectConv('DSHWatch 验收')"><text>DSHWatch 验收</text></div> <div class="ws-group" for="{{workTree}}">
<text class="ws-name">reactor</text> <text class="ws-name">📁 {{$item.name}}</text>
<div class="sel-conv" onclick="selectConv('任务-001')"><text>任务-001</text></div> <div class="sel-conv {{$item.title === currentConv ? 'sel-active' : ''}}" for="{{$item.convs}}" onclick="cycleConv">
<div class="sel-conv" onclick="selectConv('任务-002')"><text>任务-002</text></div> <text class="sel-title fl{{fontLevel}}">{{$item.title}}</text>
<text class="ws-name">truestudio.online</text> <text class="sel-time">{{$item.time}}</text>
<div class="sel-conv" onclick="selectConv('评估-今天')"><text>评估-今天</text></div> </div>
</div>
</div> </div>
<!-- 左页:对话(Harness 式) --> <!-- 左页:对话(Harness 式) -->
@@ -134,6 +135,15 @@
<div class="kb-row"> <div class="kb-row">
<text class="kb-key" onclick="kbKey('z')">z</text><text class="kb-key" onclick="kbKey('x')">x</text><text class="kb-key" onclick="kbKey('c')">c</text><text class="kb-key" onclick="kbKey('v')">v</text><text class="kb-key" onclick="kbKey('b')">b</text><text class="kb-key" onclick="kbKey('n')">n</text><text class="kb-key" onclick="kbKey('m')">m</text> <text class="kb-key" onclick="kbKey('z')">z</text><text class="kb-key" onclick="kbKey('x')">x</text><text class="kb-key" onclick="kbKey('c')">c</text><text class="kb-key" onclick="kbKey('v')">v</text><text class="kb-key" onclick="kbKey('b')">b</text><text class="kb-key" onclick="kbKey('n')">n</text><text class="kb-key" onclick="kbKey('m')">m</text>
</div> </div>
<div class="kb-row">
<text class="kb-key" onclick="kbKey('1')">1</text><text class="kb-key" onclick="kbKey('2')">2</text><text class="kb-key" onclick="kbKey('3')">3</text><text class="kb-key" onclick="kbKey('4')">4</text><text class="kb-key" onclick="kbKey('5')">5</text><text class="kb-key" onclick="kbKey('6')">6</text><text class="kb-key" onclick="kbKey('7')">7</text><text class="kb-key" onclick="kbKey('8')">8</text><text class="kb-key" onclick="kbKey('9')">9</text><text class="kb-key" onclick="kbKey('0')">0</text>
</div>
<div class="kb-row">
<text class="kb-key kb-phrase" onclick="kbPhrase('帮我看看任务')">帮我看看任务</text>
<text class="kb-key kb-phrase" onclick="kbPhrase('总结一下')">总结一下</text>
<text class="kb-key kb-phrase" onclick="kbPhrase('停止')">停止</text>
<text class="kb-key kb-phrase" onclick="kbPhrase('继续')">继续</text>
</div>
<div class="kb-row"> <div class="kb-row">
<text class="kb-key kb-fn" onclick="kbSpace">空格</text> <text class="kb-key kb-fn" onclick="kbSpace">空格</text>
<text class="kb-key kb-fn" onclick="kbBack">退格</text> <text class="kb-key kb-fn" onclick="kbBack">退格</text>
@@ -223,6 +233,12 @@ export default {
{ name:'reactor', conversations:['任务-001','任务-002'] }, { name:'reactor', conversations:['任务-001','任务-002'] },
{ name:'truestudio.online', conversations:['评估-今天'] } { name:'truestudio.online', conversations:['评估-今天'] }
], ],
workTree: [
{ name:'DeepSeek_Harness_Watch', convs:[ { title:'小米手环10 Pro远程控制', time:'刚刚' }, { title:'DSHWatch 验收', time:'1小时' } ] },
{ name:'reactor', convs:[ { title:'排查Git文件乱码问题', time:'15天' } ] },
{ name:'project', convs:[ { title:'修改API配置为固定密钥', time:'8天' }, { title:'检测DeepSeek API可用性', time:'9天' } ] },
{ name:'truestudio.online', convs:[ { title:'评估一下项目状态', time:'9天' } ] }
],
currentConv: '小米手环10 Pro远程控制', currentConv: '小米手环10 Pro远程控制',
showSelect: false, showSelect: false,
inputText: '', inputText: '',
@@ -308,6 +324,12 @@ export default {
onSwipeChange(e) { onSwipeChange(e) {
if (e && typeof e.index === 'number') { if (e && typeof e.index === 'number') {
this.currentIndex = e.index this.currentIndex = e.index
// 离开对话页(index 1)自动收起键盘/选择器
if (this.currentIndex !== 1) {
this.showKeyboard = false
this.showOptionPicker = false
this.showFontPicker = false
}
} }
}, },
@@ -326,6 +348,20 @@ export default {
this.showSelect = false this.showSelect = false
}, },
newSession() {
this.currentConv = '新会话'
this.currentIndex = 1
},
cycleConv() {
const titles = []
for (const ws of this.workTree) {
for (const c of ws.convs) titles.push(c.title)
}
const idx = titles.indexOf(this.currentConv)
this.currentConv = titles[(idx + 1) % titles.length]
},
toggleThink(index) { toggleThink(index) {
const m = this.messages[index] const m = this.messages[index]
if (m) m.showThink = !m.showThink if (m) m.showThink = !m.showThink
@@ -354,6 +390,10 @@ export default {
this.inputText = (this.inputText + ch).slice(0, 80) this.inputText = (this.inputText + ch).slice(0, 80)
}, },
kbPhrase(ph) {
this.inputText = (this.inputText + ph).slice(0, 80)
},
kbSpace() { kbSpace() {
this.inputText = (this.inputText + ' ').slice(0, 80) this.inputText = (this.inputText + ' ').slice(0, 80)
}, },
@@ -1021,6 +1061,12 @@ export default {
width: 64px; width: 64px;
} }
.kb-phrase {
width: auto;
min-width: 56px;
padding: 0 6px;
}
.kb-send { .kb-send {
background-color: #33b4ff; background-color: #33b4ff;
color: #08131f; color: #08131f;