Repository navigation
Releases: guyu-guyu/CardHomeTab
Releases · guyu-guyu/CardHomeTab
Release list
0.2.2
变更
- 默认仪表盘的两张卡改为各占 1 列(原来是
span=2各占满一行、上下堆叠),在默认 2 列网格里并排铺满一行。 - 两张卡的 base 块改用 cards 视图(每个文件渲染成一张卡片),不再是表格行。
cardSize取上限 800:cardsPerRow = max(1, floor(容器宽 / cardSize)),默认 200 会排成一堆小方块,取 800 时容器 1600px 以内都是每行 1 张,也就是"宽卡片"。
修复
- 卡片区不再塌成一条窄的。居中用的
margin-inline: auto少配了一条显式宽度:父容器是纵向 flex(交叉轴为横向),而交叉轴外边距为 auto 时stretch不再生效,网格于是收缩成 fit-content——宽度由内容决定、与列数无关,卡片少的时候尤其明显。0.2.1 带着这个问题。
0.2.1
新增
- 打开新标签页时,如果仪表盘文件还不存在,会直接按默认内容创建它,而不是停在「没有找到仪表盘文件」的提示页上。默认内容含两张宽卡片(
span=2铺满整行),各是一个内联 base 块:最近修改(file.mtime倒序)与最近创建(file.ctime倒序),各取 10 条,并把仪表盘自身排除在外——否则它永远排在第一位,每次拖拽还会让它更"新"。- 手动打开首页视图那条路径不变,仍然停在提示页上由用户点「创建并打开」:那条路径上常见情形是设置里的路径填错了,静默按默认内容建文件反而更糟。
- 原本想要的是「添加了书签的文件」,但做不到:Bases 既没有书签属性(
file.*只有 backlinks/basename/ctime/embeds/ext/folder/fullname/links/mtime/name/path/size/tags),函数表里也没有任何书签相关函数,书签存在.obsidian/bookmarks.json里、Bases 读不到。所以第二张卡换成了 base 能表达的「最近创建」。
变更
- 默认网格列数从 3 改为 2:默认仪表盘的两张宽卡片在 2 列下正好各占满一行,3 列时它们只能挨个占住列 1-2、第 3 列永远空着。只影响没保存过设置的用户——存量用户
data.json里已存了旧值,不会被覆盖。
0.2.0
破坏性变更
- 移除全部 5 个内置 CSS 片段(
text/code/query/base/dataview)与css=auto自动检测。它们带来的收敛效果(段落与标题外边距、表格边框与单元格内距、代码块限高、base/query/dataview 紧凑化)随之消失。 - 片段引用只剩「用户片段」一种来源:裸名与
user:前缀等价(css=mine即css=user:mine)。builtin:前缀作废,存量css=builtin:x解析不出来会被忽略;存量css=auto会被当成名为auto的用户片段去读,读不到则无样式。 - 打开卡片设置并点「应用」时,无法解析的引用会从
%%card:行里移除——它们已不指向任何东西。
新增
- 卡片布局改为以列为单位:每张卡片归属某一列(
%%card:的新键col),列内自上而下贴紧,列与列互不影响。拖动一张卡片不再让其余卡片跟着重排。没写col的卡片按笔记顺序轮转分配;第一次拖动时会把所有还没写col的卡片补上它们此刻的实际列号(一次性,写入的就是当时的显示结果,布局不变)。 - 拖拽落点指示线改为横线,紧贴插入点上方那张卡片的下边界(插到列首时贴第一张的上边界)。贴"上方"而不是"下方"是为了让线永远挨着刚越过的那张卡片:列底部的宽卡片会在本列撑出很长的空白,贴下方那张会把线推到空白另一端甚至屏幕外。短列底部与空列也能投放。
- 卡片设置弹窗新增「所在列」,留空表示按轮转自动决定。
- 「页面」新增「限制栏宽」与「栏宽宽度」(600–2400,仅在开启限制时显示)。栏宽指所有列加上列间距的总宽,限制后卡片区居中,品牌区、搜索框与背景仍是满宽;默认不限制,与加这个设置之前一致。顺带修正了一处冲突:窄屏收成单列的判断改为按面板给出的可用宽度而不是网格自身的宽度,否则把栏宽设成小于 900 的值会让多列直接塌成单列。
- 设置页新增「内容样式」分区:按内容类型分成折叠块,展开后是该类型下的各个开关。每项都是独立的开/关,可任意组合,默认全部关闭。常见的卡片内排版需求因此不必自己写 CSS。
- 「内容样式」新增「卡片」一组,调整卡片自身的外观:显示卡片标题、圆角半径(0–24)、卡片间距(0–48)、边框样式(无/实线/虚线/点线)与粗细(0–8)、投影(不显示/一直显示/鼠标悬停时显示)。默认值一律等于插件原本的样子,升级后观感零变化;投影颜色可用
--home-tab-card-shadow覆盖。 - 关掉「显示卡片标题」后,拖拽手柄与设置、编辑、删除按钮会浮到卡片右上角、悬停时出现,卡片内容顶到最上面。它们和标题在同一层 DOM 里,所以是移开而不是跟着一起隐藏——否则这些卡片就只能去笔记里手改了。
- 设置页的「品牌区」「背景」「搜索」三节改为可折叠,左侧带折叠箭头(与「内容样式」的分组块共用同一套样式)。展开状态在本会话内保留——改动「Logo 类型」或点「刷新列表」会整页重建设置页,展开的块不会因此合上。
- 每个折叠块的标题右侧新增「重置」按钮,把该块的设置恢复为默认值。只在这一块确实有改动时才出现,所以它本身就是「这里被改过」的提示;重置只影响本块,别的分区不受牵连。
- 表格 →「斑马条纹」:Markdown 表格的数据行深浅背景交替,表头不受影响、悬停反馈保留,base 与 dataview 的表格不参与。条纹色可用
--home-tab-table-zebra覆盖。 - Base →「长条 base 表格」:把表格视图的每一行画成整宽圆角色块,行间留间距、去掉行列分隔线;汇总行与表尾不参与。色块颜色可用
--home-tab-base-bar覆盖。该开关只做绘制、不改布局——base 表格是虚拟滚动,行与单元格的位置由 JS 算出,所以单元格仍横向并排在一行内。 - Base →「隐藏顶部工具栏」:隐藏顶部那一行控件(视图选择、结果数、排序、筛选、属性),只留内容。
修复
- 拖动卡片后不再整页闪烁。两处原因:一是卡片渲染循环开始前网格还没有列模板、是隐式单列,每张卡片先占满宽度、循环结束才吸附成 N 列(宽卡片因此短暂看着占满整宽);二是每次刷新都
root.empty()把背景、logo、搜索框连带重建。现在渲染前就把网格置成最终几何、每渲染完一张卡片就归位,且笔记与片段变更只重建卡片网格,页面骨架原地不动。 - 隐藏卡片标题时,浮到右上角的操作条不再被代码块盖住。Obsidian 的
.markdown-rendered pre是定位元素(复制按钮要锚在它上面),两者都不带z-index时按 DOM 顺序绘制,于是内容压在操作条上。现在给操作条z-index,并让卡片自成层叠上下文,免得这个值跑到网格那层去压住拖拽指示线。 - 顶部有跨两列的宽卡片时,单列卡片可以拖到它上方了。此前列成员只按起始列判定,宽卡片在它"顺带覆盖的那一列"里被当成不存在,落点因此永远算在它下方。
0.1.0
首个版本。
- 首页视图:自定义 logo、wordmark、背景图与文件名模糊搜索。
- 卡片内容取自单个仪表盘笔记,按标题切分,支持代码块、base 块、dataview 块等内容类型(核心
query嵌入搜索块除外,详见 README 已知限制)。 - 每张卡片可用
%%card:%%注释指定 CSS 片段、跨列数与图标,并可在首页直接修改。 - CSS 片段通过
@scope只作用于单张卡片,不影响全局样式。 - 随插件发布 5 个按内容类型分组的内置片段,同时支持引用
.obsidian/snippets/下的自有片段。