# Glue Manual Repro

> For investigating a UI/layout bug that a unit test can't pin alone (timing, first-launch state, window

- Skill: `vchelaru/glue-manual-repro` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vchelaru/glue-manual-repro`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vchelaru/glue-manual-repro/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: vchelaru (https://skillmd.com/u/vchelaru)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vchelaru/glue-manual-repro

---


For investigating a UI/layout bug that a unit test can't pin alone (timing, first-launch state, window
rendering) — driving the real `GlueFormsCore.exe` yourself is fine; the process doc's "don't drive the
tool yourself" rule is about the final user-facing manual-test step, not internal repro.

## Landmines

- **Build `Glue with All.sln`, not `Glue.csproj` alone.** A `Glue.csproj`-only build boots with no
  plugins loaded (Explorer tree, property grid, etc. all silently missing) — the window looks badly
  broken in a way that has nothing to do with the bug you're chasing. Costs a full rebuild cycle to
  notice.
- **`settings.xml`'s `LastProjectFile` must be the `.csproj`, not the `.gluj`.** Glue opens it via
  `Microsoft.Build.Evaluation.Project`; a `.gluj` path throws a real "Could not load the project" popup.
- **User profile lives at `%AppData%\GlueFormsCore\settings.xml` and `GlueLayoutSettings.xml`.** Back
  both up before simulating a fresh/first-launch profile (delete or rewrite them), restore after —
  these are the developer's real Glue preferences, not scratch files.
- **A backgrounded/unfocused window doesn't repaint.** `Program.cs` forces
  `RenderOptions.ProcessRenderMode = SoftwareOnly`; a screenshot of an occluded or non-foreground window
  shows stale/blank content. Bring it to the foreground and maximize (`ShowWindow`/`SetForegroundWindow`
  via P/Invoke in PowerShell) immediately before capturing.
- **A project auto-load on startup can take minutes**, not seconds (MSBuild restore, codegen) — a window
  title still reading generic "FlatRedBall Editor" (no project path) means it hasn't finished; don't
  read the UI state as final until the title shows the loaded `.csproj` path.
- **`exitwhenquiet` may never fire.** The automation hook
  (`MainGlueWindow.StartExitWhenQuietWatcherIfRequested`) exits only once
  `TaskManager.Self.AreAllAsyncTasksDone` has held for N seconds, and on some projects that never
  happens — Glue loads fine and then just stays open (issue #2053). Don't build a headless
  verify loop on a clean exit; launch, wait for the title to show the `.csproj`, kill, and assert on
  files written.

## Reusable pattern

Self-serve-log via a temporary `File.AppendAllText` probe in the suspect code path (see the
`self-serve-logging` skill), launch the exe from Bash/PowerShell, drive it headlessly where possible
(writing `settings.xml` directly beats simulating clicks), then read the log — don't ask the user to
transcribe anything.

