diff --git a/meshmap_frontend/src/App.vue b/meshmap_frontend/src/App.vue
index 533ea45..0ef26f8 100644
--- a/meshmap_frontend/src/App.vue
+++ b/meshmap_frontend/src/App.vue
@@ -757,20 +757,6 @@ onBeforeUnmount(() => {
@click="nodeFilter = ''"
>清除
-
-
-
-
签到列表
使用帮助
管理
@@ -824,6 +810,7 @@ onBeforeUnmount(() => {
()
type GroupedTextMessage = TextMessage & { mergedCount: number; mergedMessages: TextMessage[] }
@@ -18,6 +19,7 @@ const emit = defineEmits<{
'load-older': []
'delete-message': [message: GroupedTextMessage]
'delete-and-block-node': [payload: { nodeId: string; nodeNum: number | null; message: GroupedTextMessage }]
+ 'update:channelFilter': [value: string]
}>()
const panelRef = ref(null)
@@ -192,6 +194,22 @@ onUpdated(() => {
{{ groupedMessages.length }}
+
+
+
+
+
正在加载更早消息...
没有更多历史消息
暂无聊天消息
diff --git a/meshmap_frontend/src/style.css b/meshmap_frontend/src/style.css
index 66fc55c..bb495be 100644
--- a/meshmap_frontend/src/style.css
+++ b/meshmap_frontend/src/style.css
@@ -358,6 +358,53 @@ h3 {
background: var(--color-primary-soft);
}
+.chat-filter {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ padding: 8px 12px;
+ border-bottom: 1px solid var(--color-border);
+ background: var(--color-surface-soft);
+ position: sticky;
+ z-index: 9;
+ top: 53px;
+}
+
+.chat-filter-input {
+ flex: 1;
+ min-width: 0;
+ border: 1px solid var(--color-border-strong);
+ border-radius: var(--radius-sm);
+ padding: 6px 10px;
+ color: var(--color-heading);
+ background: var(--color-surface);
+ outline: none;
+ font-size: 13px;
+ transition: border-color 0.16s ease, box-shadow 0.16s ease;
+}
+
+.chat-filter-input:focus {
+ border-color: var(--color-primary);
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary) 20%, transparent);
+}
+
+.chat-filter-clear {
+ flex-shrink: 0;
+ border: 1px solid var(--color-border-strong);
+ border-radius: var(--radius-sm);
+ padding: 5px 10px;
+ color: var(--color-heading);
+ background: var(--color-surface);
+ font-size: 12px;
+ font-weight: 700;
+}
+
+.chat-filter-clear:hover {
+ border-color: var(--color-primary);
+ color: var(--color-primary-hover);
+ background: var(--color-primary-soft);
+}
+
.chat-item {
display: grid;
gap: 6px;