Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

getFoldersMatching adds root "/" even when it is not an inclusion

未关闭
#788 2 条评论 0 个 reaction 已指派 1 人 在 GitHub 查看

@jgclark 已经在做这个了。

开始于 2026年10月17日。

评估

这个 Issue 还没有评估数据。

描述

Summary

getFoldersMatching() in helpers/folders.js adds the root folder / to its result whenever / is not an exclusion, even when the caller passed a non-empty inclusion list that does not contain /.

That is why a Dashboard perspective that includes only CCC and excludes Notes still lists / in perspectiveScopeUnion.json (seen via Projects + Reviews test: log perspective scope union). Root notes (a filename with no /) then match that scope.

resolvePerspectiveFolders() in jgclark.Dashboard/src/perspectiveScopeUnion.js calls getFoldersMatching() whenever a perspective has a non-empty include list, so it inherits this.

Proposed change

When the inclusion list is non-empty, include / only if / is one of the inclusions. Keep the existing special case where the only inclusion is / (return ['/'], unless / is excluded).

When the inclusion list is empty, keep today's meaning: every folder, including /, unless / is excluded. Folder pickers rely on that.

The tests in helpers/__tests__/folders.test.js currently expect / on a CCC inclusion (the case titled "does not include root folder" asserts toContain('/')). Those would need to change with this.

@dwertheimer -- does this match how you want getFoldersMatching() to treat root? In particular, should an empty inclusion list still return /?

Plugins and commands this would change

Only callers that pass a non-empty inclusion list that does not contain /.

Dashboard (jgclark.Dashboard)

Live folder filter (getCurrentlyAllowedFolders, filterParasByRelevantFolders, tag sections):

  • Show Dashboard
  • Show Demo Dashboard
  • Explain selected item filters
  • Generate Diagnostics file
  • test Perspective Filter

perspectiveScopeUnion.json, via resolvePerspectiveFolders():

  • showPerspective
  • Add new Perspective
  • Update current Perspective
  • Delete Perspective
  • Delete all Perspective Settings
  • onUpdateOrInstall
Projects + Reviews (jgclark.Reviews)

getFilteredFolderList() calls getFoldersMatching() when foldersToInclude is set (from the active perspective when Use Perspectives is on). The union file is also read when FFlag_UseCacheOfAllPerspectives is on, and always by the two test commands:

  • project lists
  • start reviews
  • next project review
  • finish project review
  • finish project review and start next
  • skip project review
  • weeklyProjectsProgress
  • heatmaps for weekly Projects Progress
  • migrate all projects
  • Projects: update plugin settings
  • test: log perspective scope union
  • test: force rebuild allProjectsList from union
Folder pickers that pass a start folder

chooseFolder() in helpers/userInput.js passes [startFolder] as the inclusion list when a start folder is given. Those pickers would stop offering / unless the start folder is /:

  • Templating (np.Templating), when a template uses <select:SomeFolder>
  • shared.AI, the "Move to which directory?" prompt when researchDirectory is set

chooseFolder() with no start folder, and the getFolders handlers in np.Shared, dwertheimer.Forms, and dwertheimer.ReactSkeleton, pass an empty inclusion list. Under the proposal above they would still include /.

主要语言
JavaScript
星标
204
派生
81
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

NotePlan/plugins 的其他 Issue

查看 NotePlan/plugins 的全部 Issue

相似的 Issue

更多 JavaScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。