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 摘要。