fix: declutter today view and task rows
ci / docker (push) Successful in 3m28s

- Drop redundant <h2> page titles in 习惯 / 倒数日 / 设置与数据
- Wrap today view in three <section class='today-block'> sub-blocks:
  今日任务 / 今日习惯 / 倒数日提醒 (7 天内 countdowns)
- Reduce task row noise: priority becomes a colored dot, priority
  select and priority-text removed; delete action is desktop-only
- Hide task row inline actions and pager when only a single page
- Add a row-level More menu on sidebar list / folder rows (rename,
  archive, delete) and a 'archived' toggle that appears only when
  archived lists exist
- Add 'archived-heading' / 'page-subtitle' / 'today-block' /
  'priority-dot' / 'task-delete{display:none}' / 'row-menu' styles
  and a mobile 'min-height:44px' hit area for sidebar row actions
- Refresh unit tests in src/style.test.ts to cover the cleanup
This commit is contained in:
2026-09-07 15:16:29 +08:00
parent 04d3c61ac8
commit 081cddaf54
5 changed files with 96 additions and 48 deletions
+5 -5
View File
@@ -286,13 +286,13 @@ onBeforeUnmount(() => {
</script>
<template>
<section class="mvp-view" :class="{ loading: busy }">
<section class="mvp-view" :class="{ loading: busy, 'today-habit-panel': view === 'today-habits' }">
<p v-if="error" class="inline-error">{{ error }}</p>
<!-- 习惯TickTick 风格一次只操作一个习惯不再逐格小按钮误触 -->
<template v-if="view === 'habits' || view === 'today-habits'">
<header v-if="view === 'habits'" class="view-intro">
<div><small>把想坚持的事变成每天的日常</small><h2>习惯</h2></div>
<header v-if="view === 'habits'" class="view-intro page-subtitle">
<small>把想坚持的事变成每天的日常</small>
<button class="soft-button" @click="loadHabits"><RefreshCw />刷新</button>
</header>
@@ -336,8 +336,8 @@ onBeforeUnmount(() => {
<!-- 设置与数据 -->
<template v-else>
<header class="view-intro">
<div><small>备份迁移与安全</small><h2>设置与数据</h2></div>
<header class="view-intro page-subtitle">
<small>备份迁移与安全</small>
</header>
<div class="settings-grid">
<article class="tool-card"><FileJson /><h3>数据导出与恢复</h3><p>下载完整 JSON 备份或从备份恢复</p><button class="soft-button" @click="exportData"><Download />导出 JSON</button><label class="file-button"><ArchiveRestore />选择备份<input type="file" accept="application/json" @change="restoreFile=($event.target as HTMLInputElement).files?.[0]||null"></label><button v-if="restoreFile" class="danger-button" @click="restore">确认恢复</button></article>