resizeCanvas();
let stopViewport: (() => void) | undefined;
function visibility() {
visible.value = !document.hidden;
+ resize();
void nextTick(reportHit);
}
// 不深度监听整份状态;只在目标内容/几何变化时测量,时钟每秒只改文本。
@@ -285,7 +286,11 @@ watch(
onMounted(() => {
resize();
stopViewport = window.island?.onViewport((v) => resizeCanvas(v.width, v.height));
- observer = new ResizeObserver(measure);
+ observer = new ResizeObserver((entries) => {
+ if (entries.some((entry) => entry.target === document.documentElement)) resize();
+ else measure();
+ });
+ observer.observe(document.documentElement);
if (compact.value) observer.observe(compact.value);
if (details.value) observer.observe(details.value);
if (lessonSource.value) observer.observe(lessonSource.value);
@@ -327,6 +332,7 @@ onUnmounted(() => {
call: state.active?.kind === 'call',
'resident-separated': scheme.separated && !expanded && !lesson,
'resident-lesson': !!lesson,
+ 'message-surface': expanded && messages.length > 0 && !lesson,
}"
:style="style"
:role="expanded ? 'region' : 'button'"
diff --git a/packages/desktop-client/src/island/IslandApp.vue b/packages/desktop-client/src/island/IslandApp.vue
index fd4d232..9265f87 100644
--- a/packages/desktop-client/src/island/IslandApp.vue
+++ b/packages/desktop-client/src/island/IslandApp.vue
@@ -389,6 +389,7 @@ const islandClass = computed(() => ({
'hidden-placeholder':
mode.value === 'hidden' && !appearance.value.idleSliver && !state.value.lessonReminder,
'ci-lesson-card': !!state.value.lessonReminder,
+ 'message-surface': !!state.value.active && mode.value !== 'hidden' && !state.value.lessonReminder,
sliver: mode.value === 'hidden' && appearance.value.idleSliver,
urgent: isUrgent.value,
call: isCall.value,
diff --git a/packages/desktop-client/src/island/LayoutIslandApp.vue b/packages/desktop-client/src/island/LayoutIslandApp.vue
index ec597f2..f752535 100644
--- a/packages/desktop-client/src/island/LayoutIslandApp.vue
+++ b/packages/desktop-client/src/island/LayoutIslandApp.vue
@@ -1,24 +1,21 @@
+
+
+
+
diff --git a/packages/desktop-client/src/renderer/views/settings/IslandSettingsView.vue b/packages/desktop-client/src/renderer/views/settings/IslandSettingsView.vue
index cd2b321..27356a2 100644
--- a/packages/desktop-client/src/renderer/views/settings/IslandSettingsView.vue
+++ b/packages/desktop-client/src/renderer/views/settings/IslandSettingsView.vue
@@ -2,6 +2,7 @@
import { confirmAction } from '../../composables/confirm.js';
import { computed, onMounted, onUnmounted, ref } from 'vue';
import { ElMessage } from 'element-plus';
+import { useRouter } from 'vue-router';
import {
DEFAULT_ISLAND_APPEARANCE,
ISLAND_APPEARANCE_RANGES as RANGES,
@@ -23,9 +24,10 @@ import {
*/
const island = ref
({ ...DEFAULT_ISLAND_APPEARANCE });
const savingIsland = ref(false);
+const router = useRouter();
function editLayout() {
layoutMode.value = 'custom';
- void window.desktop?.islandEditLayout();
+ void router.push('/settings/island/editor');
}
const layoutMode = ref<'fixed' | 'custom'>('fixed');
const residentEnabled = ref(false);
@@ -161,7 +163,7 @@ onMounted(async () => {
@click="chooseLayout('fixed')"
>
经典灵动岛
- 有消息时展开,保持熟悉的提醒样式
+ 显示课程进度、上下课提醒与班级消息