fix(config): 🐛 fix some configuration issues on windows

fixed group list height issue
This commit is contained in:
Dawn
2025-08-19 00:05:49 +08:00
parent 43b52cd6e2
commit 90064415c6
12 changed files with 34 additions and 32 deletions

View File

@@ -49,7 +49,7 @@
<!-- 🛠️ Tech Stack -->
<div align="center">
<h3>🛠️ Tech Stack</h3>
<p>
<img src="https://img.shields.io/badge/Vue3-35495E?logo=vue.js&logoColor=4FC08D">
<img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=fff">
@@ -229,7 +229,7 @@ HuLa is an instant messaging system built with Tauri, Vite 7, Vue 3, and TypeScr
| 🪟 | Multi-window Management | ![Completed](https://img.shields.io/badge/✅-Completed-008080?style=flat&labelColor=e6f7f7&color=008080) |
| 🔔 | System Tray Notifications | ![Completed](https://img.shields.io/badge/✅-Completed-008080?style=flat&labelColor=e6f7f7&color=008080) |
| 📷 | Image Viewer | ![Completed](https://img.shields.io/badge/✅-Completed-008080?style=flat&labelColor=e6f7f7&color=008080) |
| ✂️ | Screenshot Feature | ![In Progress](https://img.shields.io/badge/🐣-In_Progress-ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
| ✂️ | Screenshot Feature | ![In Progress](https://img.shields.io/badge/✅-Completed-ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
| 📁 | File Upload (Qiniu Cloud) | ![Completed](https://img.shields.io/badge/✅-Completed-008080?style=flat&labelColor=e6f7f7&color=008080) |
| 🔄 | Auto-update System | ![Completed](https://img.shields.io/badge/✅-Completed-008080?style=flat&labelColor=e6f7f7&color=008080) |
@@ -237,7 +237,7 @@ HuLa is an instant messaging system built with Tauri, Vite 7, Vue 3, and TypeScr
| Feature | Description | Status |
|---------|-------------|--------|
| 💻 | Windows/macOS/Linux | ![Completed](https://img.shields.io/badge/✅-Completed-008080?style=flat&labelColor=e6f7f7&color=008080) |
| 📱 | iOS/Android Adaptation | ![In Progress](https://img.shields.io/badge/🐣-In_Progress-ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
| 📱 | iOS/Android Adaptation | ![In Progress](https://img.shields.io/badge/🐣-Accomplish(60%)-ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
### 🤖 AI Integration
| Feature | Description | Status |
@@ -407,4 +407,4 @@ Execute **pnpm run commit** to invoke _git commit_ interaction, complete informa
<p>
<strong>Let's build a better instant messaging experience together 🚀</strong>
</p>
</div>
</div>

View File

@@ -49,7 +49,7 @@
<!-- 🛠️ 技术栈 -->
<div align="center">
<h3>🛠️ 技术栈</h3>
<p>
<img src="https://img.shields.io/badge/Vue3-35495E?logo=vue.js&logoColor=4FC08D">
<img src="https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=fff">
@@ -230,7 +230,7 @@ HuLa 是一款基于 Tauri、Vite 7、Vue 3 和 TypeScript 构建的即时通讯
| 🪟 | 多窗口管理 | ![完成](https://img.shields.io/badge/✅-完成-008080?style=flat&labelColor=e6f7f7&color=008080) |
| 🔔 | 系统托盘通知 | ![完成](https://img.shields.io/badge/✅-完成-008080?style=flat&labelColor=e6f7f7&color=008080) |
| 📷 | 图片查看器 | ![完成](https://img.shields.io/badge/✅-完成-008080?style=flat&labelColor=e6f7f7&color=008080) |
| ✂️ | 截图功能 | ![进行中](https://img.shields.io/badge/🐣-进行中-ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
| ✂️ | 截图功能 | ![进行中](https://img.shields.io/badge/✅-完成-ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
| 📁 | 文件上传(七牛云) | ![完成](https://img.shields.io/badge/✅-完成-008080?style=flat&labelColor=e6f7f7&color=008080) |
| 🔄 | 自动更新系统 | ![完成](https://img.shields.io/badge/✅-完成-008080?style=flat&labelColor=e6f7f7&color=008080) |
@@ -238,7 +238,7 @@ HuLa 是一款基于 Tauri、Vite 7、Vue 3 和 TypeScript 构建的即时通讯
| 功能 | 描述 | 状态 |
|------|------|------|
| 💻 | Windows/macOS/Linux | ![完成](https://img.shields.io/badge/✅-完成-008080?style=flat&labelColor=e6f7f7&color=008080) |
| 📱 | iOS/Android 适配 | ![进行中](https://img.shields.io/badge/🐣-进行中-ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
| 📱 | iOS/Android 适配 | ![进行中](https://img.shields.io/badge/🐣-完成(60%)-ee9f20?style=flat&labelColor=fef7e6&color=ee9f20) |
### 🤖 AI 集成
| 功能 | 描述 | 状态 |

1
biome.json vendored
View File

@@ -10,6 +10,7 @@
"!src/typings/*.d.ts",
"!src-tauri/*",
"!node_modules/*",
"!tauri-plugin-hula/*",
"!dist/*"
]
},

View File

@@ -250,7 +250,7 @@ function getDebugOptions() {
}
// 执行打包命令
async function executeBuild(command, description, isDebug = false) {
async function executeBuild(command, isDebug = false) {
// 如果是调试模式,添加 --debug 参数
const finalCommand = isDebug ? `${command} --debug` : command
const [cmd, ...args] = finalCommand.split(' ')
@@ -324,7 +324,7 @@ async function selectDebugMode() {
}
// 选择包格式的函数
async function selectBundle(selectedPlatform, platformOptions) {
async function selectBundle(selectedPlatform) {
const bundleOptions = getBundleOptions(selectedPlatform)
if (bundleOptions.length === 0) {
@@ -360,16 +360,14 @@ async function selectBundle(selectedPlatform, platformOptions) {
async function main() {
try {
const currentPlatform = getCurrentPlatform()
// 主循环
while (true) {
// 第一步:选择平台
const { selectedPlatform, platformOptions } = await selectPlatform()
const { selectedPlatform } = await selectPlatform()
// 第二步:选择包格式
while (true) {
const bundleResult = await selectBundle(selectedPlatform, platformOptions)
const bundleResult = await selectBundle(selectedPlatform)
// 如果返回 'back',返回平台选择
if (bundleResult === 'back') {
@@ -387,7 +385,7 @@ async function main() {
// 执行打包命令
try {
const exitCode = await executeBuild(bundleResult.command, bundleResult.name, debugResult)
const exitCode = await executeBuild(bundleResult.command, debugResult)
process.exit(exitCode)
} catch (error) {
console.error(`\n❌ 执行错误: ${error.message}`)

14
src-tauri/Cargo.lock generated
View File

@@ -2894,19 +2894,21 @@ dependencies = [
[[package]]
name = "hyper"
version = "1.6.0"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80"
checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
dependencies = [
"atomic-waker",
"bytes",
"futures-channel",
"futures-util",
"futures-core",
"h2 0.4.12",
"http 1.3.1",
"http-body 1.0.1",
"httparse",
"itoa",
"pin-project-lite",
"pin-utils",
"smallvec",
"tokio",
"want",
@@ -2933,7 +2935,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
dependencies = [
"http 1.3.1",
"hyper 1.6.0",
"hyper 1.7.0",
"hyper-util",
"rustls 0.23.31",
"rustls-pki-types",
@@ -2956,7 +2958,7 @@ dependencies = [
"futures-util",
"http 1.3.1",
"http-body 1.0.1",
"hyper 1.6.0",
"hyper 1.7.0",
"ipnet",
"libc",
"percent-encoding",
@@ -5533,7 +5535,7 @@ dependencies = [
"http 1.3.1",
"http-body 1.0.1",
"http-body-util",
"hyper 1.6.0",
"hyper 1.7.0",
"hyper-rustls 0.27.7",
"hyper-util",
"js-sys",

File diff suppressed because one or more lines are too long

View File

@@ -121,6 +121,7 @@ import { join } from '@tauri-apps/api/path'
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
import { open } from '@tauri-apps/plugin-dialog'
import { copyFile, readFile } from '@tauri-apps/plugin-fs'
import { type } from '@tauri-apps/plugin-os'
import {
CHAT_HEADER_HEIGHT,
CHAT_MAIN_MIN_HEIGHT,
@@ -544,10 +545,8 @@ const handleCap = async () => {
await captureWindow.setPosition(new LogicalPosition(0, 0))
// 在 macOS 上设置窗口级别以覆盖菜单栏
try {
if (type() === 'macos') {
await invoke('set_window_level_above_menubar', { windowLabel: 'capture' })
} catch (error) {
console.warn('设置窗口级别失败,但继续执行:', error)
}
await captureWindow.show()

View File

@@ -3,6 +3,7 @@ import { LogicalPosition, LogicalSize } from '@tauri-apps/api/dpi'
import { emitTo, listen } from '@tauri-apps/api/event'
import { WebviewWindow } from '@tauri-apps/api/webviewWindow'
import { register, unregister } from '@tauri-apps/plugin-global-shortcut'
import { type } from '@tauri-apps/plugin-os'
import { useTauriListener } from '@/hooks/useTauriListener'
import { useSettingStore } from '@/stores/setting.ts'
@@ -81,7 +82,9 @@ export const useGlobalShortcut = () => {
await captureWindow.setPosition(new LogicalPosition(0, 0))
// 在 macOS 上设置窗口级别以覆盖菜单栏
await invoke('set_window_level_above_menubar', { windowLabel: 'capture' })
if (type() === 'macos') {
await invoke('set_window_level_above_menubar', { windowLabel: 'capture' })
}
await captureWindow.show()
await captureWindow.setFocus()

View File

@@ -1,7 +1,7 @@
import { onMounted, onUnmounted } from 'vue'
import { type } from '@tauri-apps/plugin-os'
import { useMobileStore } from '@/stores/mobile'
import { onMounted, onUnmounted } from 'vue'
import type { IKeyboardDidShowDetail } from '@/mobile/mobile-client/interface/adapter'
import { useMobileStore } from '@/stores/mobile'
export function useMobile() {
const mobileStore = useMobileStore()

View File

@@ -46,7 +46,6 @@
</template>
<script setup lang="ts">
import { ref, nextTick, onMounted } from 'vue'
import { useMobileStore } from '@/stores/mobile'
// ==== 类型声明(让 send 有类型提示)====
@@ -96,7 +95,7 @@ const handleSend = async () => {
// 关键:同步 useMsgInput 的 msgInput.value
if ('msgInput' in msgInput) {
// @ts-ignore
// @ts-expect-error
msgInput.msgInput.value = messageInputDom.value.innerHTML
}

View File

@@ -138,6 +138,7 @@ import { ref } from 'vue'
import PullToRefresh from '#/components/PullToRefresh.vue'
import addFriendIcon from '@/assets/mobile/chat-home/add-friend.webp'
import groupChatIcon from '@/assets/mobile/chat-home/group-chat.webp'
import { useMessage } from '@/hooks/useMessage.ts'
import SafeAreaPlaceholder from '@/mobile/components/placeholders/SafeAreaPlaceholder.vue'
import NavBar from '@/mobile/layout/navBar/index.vue'
import { IsAllUserEnum } from '@/services/types.ts'
@@ -145,7 +146,6 @@ import { useChatStore } from '@/stores/chat.ts'
import { useUserStore } from '@/stores/user.ts'
import { AvatarUtils } from '@/utils/AvatarUtils'
import { formatTimestamp } from '@/utils/ComputedTime.ts'
import { useMessage } from '@/hooks/useMessage.ts'
const chatStore = useChatStore()

View File

@@ -38,7 +38,7 @@
<template #header-extra>
<span class="text-(10px #707070)">{{ onlineCount }}/{{ contactStore.contactsList.length }}</span>
</template>
<n-scrollbar style="max-height: calc(100vh - 220px)">
<n-scrollbar style="max-height: calc(100vh - 270px)">
<!-- 用户框 多套一层div来移除默认的右键事件然后覆盖掉因为margin空隙而导致右键可用 -->
<div @contextmenu.stop="$event.preventDefault()">
<n-flex
@@ -91,7 +91,7 @@
<template #header-extra>
<span class="text-(10px #707070)">{{ groupChatList.length }}</span>
</template>
<n-scrollbar style="max-height: calc(100vh - 220px)">
<n-scrollbar style="max-height: calc(100vh - 270px)">
<div
@click="handleClick(item.roomId, RoomTypeEnum.GROUP)"
:class="{ active: activeItem === item.roomId }"