fix(daemon): list dot-prefixed user content in managed projects - #6214
fix(daemon): list dot-prefixed user content in managed projects#6214mturac wants to merge 5 commits into
Conversation
|
🧪 Queued for QA validation — this PR changes a user-facing runtime path, so we’ll run a manual QA pass before merge. Nothing needed from you right now; we’ll update here once that pass is done. Thanks for the contribution! 🙏 |
|
Hey @mturac — the current blocker on this head is the mismatch @nettee called out: managed projects can now surface dot-prefixed user content, but project archive export still drops those entries. Once the archive behavior and the surrounding contract are aligned, this should be in much better shape for the next pass. |
nettee
left a comment
There was a problem hiding this comment.
@mturac I re-checked the archive/listing parity in apps/daemon/src/projects.ts and the follow-up now lines up managed-project dotfile visibility across full archives, batch archives, and imported-folder guards. The added regression coverage around managed vs. imported projects, reserved daemon paths, and archive root handling matches the code paths this change touches. I couldn't rerun Vitest in this prepared checkout because the worktree has no node_modules, but the implementation and new tests are coherent. Nice follow-through on closing the archive mismatch.
|
Thanks for the contribution. I completed QA validation for this PR. QA Acceptance Record Scope:
Verified:
Not verified:
Risks / notes:
Conclusion:
|
|
@mturac — both reviews are done (nettee ✅ and the QA pass ✅) and there are no open threads. The only thing keeping this from the merge queue is that the PR is still marked as a draft. When you're ready, click "Ready for review" at the top of the page to lift the draft flag — that's all that's left. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8827edc060
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The file and folder listing helpers skipped every entry whose basename starts with '.', so legitimate user content such as .github/, .storybook/, or a .notes.md file never appeared in @-mention autocomplete or project search. Replace the blanket filter with the explicit policy: the shared ignore list (project-ignored-dirs.ts) plus the reserved daemon state directories (.live-artifacts, .file-versions) stay hidden everywhere; other dot-prefixed entries are listed for managed projects. Imported folders (external baseDir) keep hiding hidden entries, consistent with assertVisibleForImportedProject. Fixes nexu-io#6175
nettee
left a comment
There was a problem hiding this comment.
The current archive/listing policy now hides the newly identified daemon state, but two consistency gaps remain: live-artifact selector validation is not synchronized with the expanded reserved-path policy, and explicit archive roots can bypass the ignored-directory policy. Both can produce incorrect or unsafe project exports, so I’m requesting changes.
🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.|
Hey @mturac — the current blocker on this head is @nettee’s latest review: the live-artifact selector validator needs to stay in sync with the expanded reserved-path policy, and explicit archive roots need the same ignored/reserved-directory guard as the recursive walk. Once those two gaps are closed, this should be ready for another pass. 💡 To drive this PR to merge hands-free, paste this to your AI coding agent (Claude Code / Codex / opencode / Cursor …): |
nettee
left a comment
There was a problem hiding this comment.
One blocking security issue remains in the canonicalized archive-root guard; the focused daemon suites pass locally, but they do not cover an imported symlink alias to a hidden directory. Details are inline.
🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.
nettee
left a comment
There was a problem hiding this comment.
@mturac I reviewed all final changed ranges covering managed-project dotfile visibility, reserved daemon-state filtering, archive-root canonicalization, imported-folder hidden-path protection, and live-artifact selector parity. The focused and adjacent daemon suites, TypeScript checks, guard, and live PR diff validation all pass. Thanks for the careful follow-through on the archive and symlink-safety fixes—this is a thoughtful, well-tested resolution.
🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.
Fixes #6175
Why
Hit this while keeping project notes in a
.notes.mdfile:@-mentioning it from the chat composer silently finds nothing, and the same happens for.github/or.vscode/content. The file and folder listing helpers inapps/daemon/src/projects.tsapply a blanketstartsWith('.')filter, so every dot-prefixed entry is invisible to mention autocomplete and project search, not just the internal directories the filter was meant to hide.What users will see
In managed projects,
@-mention autocomplete and project search now find dot-prefixed user content such as.github/workflows/ci.yml,.vscode/settings.json, or.notes.md. Managed full and batch archives follow the same visibility policy. Internal directories (.git,.od,.live-artifacts,.file-versions,node_modules, etc.) stay hidden. Imported folders (externalbaseDir) are unchanged: hidden entries remain unlisted and unavailable to archive requests, consistent with the existing hidden-path guard for user-owned directories.Surface area
Bug fix verification
apps/daemon/tests/project-hidden-files.test.tsmain, green on this branch: yes. Two managed-listing cases failed onmain; the focused cases pass with the fix.Validation
vitest run tests/project-hidden-files.test.ts tests/live-artifacts-store.test.ts tests/project-archive.test.ts tests/folder-import-projects.test.ts tests/projects-list-files.test.ts tests/project-watchers.test.ts tests/project-file-rename.test.ts: 103 passed.tsc -p tsconfig.json --noEmit && tsc -p tsconfig.tests.json --noEmit: clean.pnpm guard: passed.8827edc0after verifying managed dotfile listing, search, mention autocomplete, full archives, and batch archives in the real Web runtime. Imported-folder hidden paths remained blocked.Windows-native UI smoke testing was not included in the QA pass.