hypertwist/docs/ops/project-file-setup-manual.codex.md
2026-07-26 10:20:49 +00:00

4.7 KiB

Codex Project File Setup Manual

This note records how HyperTwist should be represented in Visual Studio while the codebase is still being assembled.

Current Supersession - 2026-07-26

HyperTwist now has a real Unreal application root. The tracked authority is:

  • UnrealHyperTwist/UnrealHyperTwist.uproject
  • UnrealHyperTwist/Source/
  • UnrealHyperTwist/Config/

The ignored repo-root HyperTwist.sln, HyperTwist.vcxproj, HyperTwist.vcxproj.filters, and HyperTwist.vcxproj.user files were retired after the root project became the exact giant file collector prohibited below. They indexed custody snapshots, mirrors, and generated Unreal output and were not a valid build surface.

For normal work, open the .uproject. Visual Studio or Unreal may generate UnrealHyperTwist/UnrealHyperTwist.sln and related Intermediate/ProjectFiles state on a Windows host when needed. Those generated files remain disposable IDE state and are not source authority.

The historical guidance below remains useful as the reason not to recreate a repo-root catch-all project.

Current Rule

The repo-root HyperTwist.vcxproj should be treated as a lightweight workspace shell, not as the real application project.

It should not be used to pull in large repository trees such as:

  • mirrors/
  • node_modules/
  • generated output such as .vs/, x64/, Intermediate/, Binaries/, dist/, coverage/
  • research, archives, downloads, or reference bundles

If the root .vcxproj turns into a giant file collector, Visual Studio indexing, Copilot context, RAM use, and build behavior all get worse.

What To Do Now

While the architecture is still being decided:

  • Keep the solution small and intentional.
  • Use the repo-root project only as a workspace placeholder or solution anchor.
  • Keep real implementation in real language/project folders.
  • Do not add vendored, mirrored, archived, or generated folders to the root .vcxproj.

When To Create Real Projects

Create a real project only when the corresponding codebase actually exists.

C++

Create or expand a real .vcxproj when there is an actual native code layout such as:

  • src/
  • include/
  • app/
  • engine/

At that point the .vcxproj should include only first-party native source files and headers.

C#

Create a .csproj when there is real C# application or library code. Let the .csproj represent the actual source tree instead of routing C# through the root .vcxproj.

Node / TypeScript

Create an .njsproj only when there is a real frontend, tool, server, or plugin root with files such as:

  • package.json
  • src/
  • public/
  • tests/

The Node project should point only at that app folder and should explicitly ignore node_modules, build output, caches, and mirrors.

Rust

Use Cargo.toml as the source of truth. Do not force Rust code into a C++ project. When the crate layout is real, wire Visual Studio around the Rust crate deliberately.

Unreal

If HyperTwist grows around Unreal, let Unreal-generated project structure remain the source of truth for Unreal modules and plugin code. Do not dump Unreal Intermediate or generated build output into the root .vcxproj.

When To Ask Codex To Set It Up

Come back and ask for setup when one of these is true:

  • the first real app folder has been created
  • the first real language-specific project exists
  • you want the multi-project solution updated cleanly
  • you want Copilot/Visual Studio indexing to recognize the app roots properly

Good examples:

  • "Create a proper Node.js project for ui/."
  • "Turn engine/src and engine/include into the real C++ project."
  • "Add the Rust crate and keep it out of the root .vcxproj."
  • "Wire the Unreal plugin/tooling folders into the solution without indexing generated output."

What Not To Do

  • Do not use the repo-root .vcxproj as a catch-all for the entire repository.
  • Do not include mirrors, archives, downloaded reference material, or generated folders.
  • Do not rely on Show All Files plus a giant root project as the long-term structure.
  • Do not assume Visual Studio will "organically" infer the right architecture later if the placeholder project is already polluted.

Practical Bootstrap Sequence

  1. Decide the first real code roots.
  2. Create the real language-native project files for those roots only.
  3. Keep the repo-root project minimal.
  4. Exclude generated, mirrored, vendored, and research-only directories from indexing.
  5. Rebuild the solution index after structural changes.

Short Version

Until the real code layout exists, keep HyperTwist.vcxproj minimal.

Once real C++, C#, Node/TypeScript, Rust, or Unreal code roots exist, ask Codex to wire those folders into proper project files instead of expanding the root workspace project.