Releases: ichris007/taskflow
Release list
1.1.0
TaskFlow 1.1.0 — Release Notes
This release turns TaskFlow from a single global board into a per-project inspector, powered by a community contribution (PR #4), together with a round of maintainer refinements to the new grouping UI.
Highlights
- Enhanced grouping — note-scoped queries (community contribution by @wernsting, PR #4). A group can now be scoped to a single note: configure a frontmatter property (and optionally the allowed values) and a note dropdown appears for that group. Selecting a note points every tab's Tasks query at it through Tasks'
query.file, so you can inspect one project at a time instead of the whole vault. - Configurable group task limit. Each group can cap how many tasks its tabs display. The cap is appended last, so it overrides any
limitwritten inside a tab's own query. Set it in the group config, and optionally enable an on-view limit box to tweak it without opening settings. - Limits and pickers are now optional and searchable. The on-view limit box sits behind a setting (off by default), so groups without a note selector no longer show a stray limit input. Both the note picker and the property-values picker gained search — click-to-pick stays primary, search only narrows the list.
What's changed
New features (PR #4, by @wernsting)
- Note selector: a per-group dropdown driven by a frontmatter property, restricted to notes whose value is in the configured set. Selecting a note scopes every tab in the group to that note (
query.file). - Property values filter: optionally narrow which notes are offered. Matching is case-insensitive and accepts single values or YAML lists; a note matches if any of its values is selected (if no values are selected, any non-empty value matches).
- Group task limit: a single cap appended as
limit Nto every tab's query, overriding thelimitwritten inside each tab's query (confirmed by the maintainer: the group cap wins over per-query limits). - Advanced linking: combined with Tasks'
filter by function(e.g.filter by function task.file.path === query.file.path, requires Tasks ≥ 5.1.0), a group can also collect tasks that merely relate to the selected note — via alinkfrontmatter property or a wikilink inside the task description — even though those tasks do not live in the selected note.
Refinements (maintainer)
- The on-view limit box is now a setting — Show the task-limit box on the view, off by default. Groups without a note selector no longer show a lone limit input; turn it on when you want to adjust the cap on the fly. The box edits the same value as the group config, so there is no duplicated setting.
- Group edit modal: added a Limit field, placed after Property values so the property and its values sit next to each other.
- Search added to both pickers — the note dropdown and the Property values multi-select now filter as you type. Both stay click-to-pick first: search is an optional filter, never a required step, and nothing opens a blocking modal.
Notes
- The note-scoped query relies on Tasks'
query.fileQuery Property. Keepquery.fileinsidefilter by function, or use the{{query.file.*}}placeholder — never putquery.fileon its own line (Tasks rejects it with "do not understand query"). - The selected note is kept for the current session; reopening the vault falls back to the first matching note.
- Thanks to @wernsting for the contribution and the collaborative review.
TaskFlow 1.1.0 更新说明
本次更新把 TaskFlow 从「全局看板」升级为「按项目逐篇巡检」。核心能力来自社区贡献(PR #4),另有一轮针对新分组界面的维护者优化与修复。
亮点
- 增强分组 —— 笔记限定查询(社区贡献 @wernsting,PR #4)。分组现在可以限定到某一篇笔记:配置一个 frontmatter 属性(可选再指定允许的取值)后,该分组会出现一个笔记下拉选择器;选中某篇笔记后,分组内所有标签的 Tasks 查询都会通过 Tasks 的
query.file指向该笔记,实现「一次只看一个项目」的巡检。 - 分组任务上限。每个分组可统一限制其标签最多显示多少条任务;上限以追加形式写在查询末尾,因此会覆盖标签查询内部自带的
limit。在分组配置里设定,也可按需在视图顶部开启可实时编辑的上限框。 - 上限框与选择器:可选 + 可搜索。视图顶部的上限框改为由设置项控制(默认关闭),因此没有笔记选择器的分组不会再出现孤零零一个上限输入框;笔记选择器与「属性值」选择器都新增了搜索——仍以直接点选为主,搜索只用于收窄列表。
主要变更
新功能(PR #4,@wernsting 贡献)
- 笔记选择器:由 frontmatter 属性驱动的分组级下拉框,仅列出属性取值在配置集合内的笔记;选中后把分组内所有标签的查询限定到该笔记(
query.file)。 - 属性值筛选:可选地收窄提供哪些笔记。匹配时大小写不敏感,支持单值与 YAML 列表;只要笔记的值中有任一落在选中集合里即匹配(若未选任何值,则任何非空值都匹配)。
- 分组任务上限:以
limit N形式追加到分组内每个标签查询的末尾,覆盖标签查询内部的limit(经维护者确认:分组上限优先于查询内 limit)。 - 进阶关联:配合 Tasks 的
filter by function(例如filter by function task.file.path === query.file.path,需 Tasks ≥ 5.1.0),分组还能一并收集仅仅与选中笔记相关的任务——通过linkfrontmatter 属性或任务描述里的双链——即便这些任务并不住在选中的笔记里。
优化与修复(维护者)
- 视图顶部的上限框改为设置项——「在视图顶部显示任务上限框」,默认关闭。没有笔记选择器的分组不会再出现孤零零一个上限输入框;需要随手调整上限时再打开。该输入框与分组配置编辑的是同一个值,不存在重复设置。
- 分组编辑弹窗新增「上限」字段,放在「属性值」之后,让属性与其取值相邻、逻辑更顺。
- 两个选择器都加了搜索——笔记下拉框与「属性值」多选框均支持输入即过滤。两者仍保持点选优先:搜索只是可选的过滤手段,不是必经步骤,也不会弹出阻断式弹窗。
说明
- 笔记限定查询依赖 Tasks 的
query.fileQuery Property。请务必把query.file写在filter by function内部,或使用{{query.file.*}}占位符——不要单独成行(否则 Tasks 会报 "do not understand query")。 - 选中的笔记仅在本次会话内保留;重新打开仓库后会回退到第一篇匹配的笔记。
- 感谢 @wernsting 的贡献与协作审阅。
1.0.4
TaskFlow 1.0.4 — Release Notes
A maintenance release focused on passing the Obsidian community plugin review and
cleaning up build / lint warnings. No user-facing behavior changes.
What's changed
- Fixed 3 blocking review errors — replaced all
innerHTMLSVG injection with a
safeDOMParser+appendChildhelper (mountTrustedSvg), removing the disallowed
eslint-disablecomments flagged asUnexpected undescribed directive comment/
Disabling '@microsoft/sdl/no-inner-html' is not allowed. - Resolved ~90
prefer-create-elwarnings — migrated
document.createElement('div'|'span')and.createEl('div'|'span')to Obsidian's
createDiv()/createSpan()helpers acrossmain.ts,settings.ts,view.ts
and the modal modules. - Build now passes —
npm run build(tsc + esbuild) succeeds: removed the
@types/node↔setTimeouttype conflict, fixed the emoji character-class regex
(uflag + de-combined glyphs), and tightenedunknowntype narrowing.
TaskFlow 1.0.4 更新说明
本次为通过 Obsidian 社区插件中心审核而做的维护性更新,重点修复审核反馈并清理
构建 / lint 警告,不涉及用户可见的行为变更。
主要变更
- 修复 3 处阻塞审核错误:将全部
innerHTML注入 SVG 的做法改为安全的
DOMParser+appendChild(新增mountTrustedSvg助手),移除了被判定为
「无描述 directive 注释」/「禁止禁用 @microsoft/sdl/no-inner-html」的
eslint 禁用注释。 - 消除约 90 处
prefer-create-el警告:将document.createElement('div'|'span')
与.createEl('div'|'span')统一迁移到 Obsidian 的createDiv()/createSpan()
助手(覆盖main.ts、settings.ts、view.ts及各弹窗模块)。 - 构建通过:
npm run build(tsc + esbuild)现已通过——移除了@types/node
与setTimeout的类型冲突、修正了 emoji 字符类的正则(u标志 + 去组合字符)、
收紧了unknown类型收窄。
1.0.3
v1.0.3 — 代码质量与合规性修复
本版本为 patch 更新,目标是让插件通过 Obsidian 官方审查的 ESLint 检查。
改动
- ESLint:52 处问题(48 errors / 4 warnings)→ 0 errors / 0 warnings
- 重新生成 main.js,构建正常
- 5 个源文件修复:悬空 Promise 加 void、受信任 innerHTML 补禁用注释、any 改用最小接口、style.* 改 setCssProps、原生 confirm() 改 Obsidian 内置 ConfirmModal
唯一行为变更
- 3 处 confirm() → Obsidian ConfirmModal(no-alert 规则要求),其余均为类型/样式注解,不影响运行时逻辑
已知说明
- tsc --noEmit 仍有约 30 处基线报错,不在 ESLint 审查范围内,也不影响 esbuild 产出的 main.js,计划后续单独处理
v1.0.3 — Code Quality & Compliance Fixes
Patch release focused on passing Obsidian's official ESLint review.
Changes
- ESLint: 52 issues (48 errors / 4 warnings) → 0 errors / 0 warnings
- main.js regenerated, build succeeds
- Fixes across 5 source files: void for dangling Promises, ESLint disable comments for trusted innerHTML, any replaced with minimal interfaces, style.* → setCssProps, native confirm() → Obsidian ConfirmModal
Only behavior change
- 3 confirm() calls → Obsidian ConfirmModal (required by no-alert). Everything else is type/style annotation only.
Known notes
- tsc --noEmit still reports ~30 baseline errors, outside ESLint scope and not affecting the esbuild main.js. Planned for a separate pass.
1.0.2
设置页布局健壮性修复
这是一个小版本更新,主要提升设置页在不同宿主容器下的布局稳定性。
改动内容:
styles.css — 为 .taskflow-setting-tab 根规则补充四条防御性声明,覆盖三种宿主容器布局:
width: 100% — 块级父级下照常撑满
flex: 1 1 auto — 行向 flex 父级下照常撑满
align-self: stretch — 列向 flex 且父级 align-items ≠ stretch 时兜底
min-width: 0 — 行向 flex 下允许收缩,避免溢出
同时保留 max-width: 720px + margin: 0 auto,设置页仍居中收口到 720px
entry.ts — 新增 6 条护栏,将上述四条声明与「保留 max-width」锁死,防止后续并行编辑时静默丢失
说明
本次改动对当前干净代码零风险,仅增强布局兼容性,不涉及功能变更。
Settings Tab Layout Robustness Fix
A small patch release focused on improving the settings tab's layout stability across different host containers.
Changes
styles.css — Added four defensive declarations to the .taskflow-setting-tab root rule, covering three host container layouts:
width: 100% — fills correctly under block-level parents
flex: 1 1 auto — fills correctly under row-direction flex parents
align-self: stretch — fallback for column-direction flex when parent align-items ≠ stretch
min-width: 0 — allows shrinking under row-direction flex to prevent overflow
Kept max-width: 720px + margin: 0 auto, so the settings tab stays centered and capped at 720px
entry.ts — Added 6 guardrails to lock in the four declarations above plus the "keep max-width" rule, preventing silent loss during parallel edits
Notes
Zero risk to the current clean codebase. This is a layout compatibility enhancement only — no functional changes.
TaskFlow: From Managing Tasks to Choosing Action
🎉 首个公开版本
TaskFlow 是一个建立在 Obsidian Tasks 之上的轻量行动工作台。
✨ 这个版本包含什么
- 行动空间(Action Space) —— 在任务列表之上重新组织任务,从「管理有哪些事」转向「现在该做什么」
- 三个筛选维度 —— GTD(下一步该做什么)、Time(今天该做什么)、Tag(这个场景下该做什么)
- 完全兼容 Obsidian Tasks —— 沿用 Tasks 的语法、查询与渲染,无需迁移,不改变写任务的习惯
- 轻量前端 —— 任务依然是一句话、依然写在笔记里,不需要为每个任务建一篇笔记
- 可配置的展示 —— 简洁、灵活、面向行动的前端界面
关于 TaskFlow 与 Tasks、TaskNotes 的定位差异,详见 README 中的对比表格。
🎉 First Public Release
TaskFlow is a lightweight action workbench built on top of Obsidian Tasks.
✨ What's in this release
- Action Space — Reorganizes tasks on top of your task lists, shifting from "managing what needs to be done" to "what to do now"
- Three filtering dimensions — GTD (what's the next step), Time (what to do today), Tag (what fits this context)
- Fully compatible with Obsidian Tasks — Uses Tasks' syntax, queries, and rendering. No migration, no change to how you write tasks
- Lightweight front-end — Tasks stay as one-liners, written in your notes. No need to create a separate note for every task
- Configurable display — A clean, flexible, action-oriented front-end interface
For a detailed comparison of TaskFlow vs. Tasks and TaskNotes, see the comparison table in the README.