| name | jahro-troubleshooting |
| description | Diagnoses common Jahro issues using decision trees: commands not appearing, watcher not updating, console not opening, snapshots failing, launch button missing. Use when the user reports something not working, missing, broken, or unexpected with Jahro, or when generated Jahro code doesn't behave as expected.
|
Jahro Troubleshooting
Diagnose and fix common Jahro issues. Follow the decision tree for the reported symptom.
Diagnostic Approach
- Identify the symptom โ match to a decision tree below
- Walk the tree โ check conditions in priority order
- Apply fix โ provide code snippet or configuration change
- VERIFY โ "Enter Play Mode, reproduce the original issue"
- If still broken โ continue down the tree or escalate
Issue: Commands Not Appearing
The user added [JahroCommand] attributes but commands don't show in the console.
Decision Tree
Commands not appearing
โโโ Is the method static or instance?
โ โโโ Instance โ Is RegisterObject called?
โ โ โโโ No โ FIX: Add OnEnable/OnDisable registration
โ โ โโโ Yes โ Is the object active in scene?
โ โ โโโ No โ Object never enables โ RegisterObject never runs
โ โ โโโ Yes โ Continue below
โ โโโ Static โ Continue below
โโโ Is the correct assembly selected?
โ โโโ Check Tools โ Jahro Settings โ Assemblies Selection
โ โโโ Is the assembly containing this class checked?
โ โโโ No โ FIX: Select the assembly
โ โโโ Yes โ Continue below
โโโ Is Jahro enabled?
โ โโโ Check Jahro.Enabled at runtime (log it)
โ โโโ Check JAHRO_DISABLE in Scripting Define Symbols
โ โโโ Check Auto-disable + build type
โโโ Is the method public?
โ โโโ Private/internal methods โ FIX: Make public
โโโ Are parameter types supported?
โ โโโ Only: int, float, bool, string, Vector2, Vector3, enum
โ โโโ Custom class params โ FIX: Change to supported type
โโโ Assembly scanning order issue?
โโโ Static commands discovered at startup; if class loaded late,
try manual RegisterObject or dynamic registration
Fix: Missing RegisterObject
void OnEnable() => Jahro.RegisterObject(this);
void OnDisable() => Jahro.UnregisterObject(this);
Fix: Wrong assembly selected
- Open Tools โ Jahro Settings โ General Settings
- Under Assemblies Selection, check the assembly containing your class
- Your main game assembly is typically
Assembly-CSharp
Issue: Watcher Not Updating
Watcher entries appear but values are frozen or stale.
Decision Tree
Watcher values not updating
โโโ Is the Watcher tab actually open?
โ โโโ Values are ONLY read when the Watcher UI is visible
โ โโโ FIX: Switch to the Watcher tab to see live updates
โโโ Is RegisterObject called?
โ โโโ No โ FIX: Add OnEnable/OnDisable registration
โ โโโ Yes โ Continue below
โโโ Is the watched member a field or property?
โ โโโ Field โ Updates automatically when value changes
โ โโโ Property โ Check the getter
โ โโโ Does the getter reference stale data?
โ โโโ Does the getter throw an exception? (silently caught)
โ โโโ Is it an expensive getter that's being throttled?
โโโ Was the object destroyed?
โ โโโ Object destroyed without OnDisable โ watcher reads stale reference
โ โโโ FIX: Ensure UnregisterObject runs (OnDisable handles this)
โโโ Is it a static watcher?
โ โโโ Static watchers don't need RegisterObject but do need
โ the assembly selected in Jahro Settings
โโโ Is Jahro enabled?
โโโ Same checks as commands: JAHRO_DISABLE, auto-disable, settings
Fix: Property getter issues
[JahroWatch("Velocity", "Physics")]
public Vector3 Velocity => GetComponent<Rigidbody>().velocity;
[JahroWatch("Velocity", "Physics")]
public Vector3 Velocity => TryGetComponent<Rigidbody>(out var rb) ? rb.velocity : Vector3.zero;
Issue: Console Not Opening
User presses ~ (or triple-taps) but nothing happens.
Decision Tree
Console not opening
โโโ Is Jahro enabled?
โ โโโ Check Tools โ Jahro Settings โ Enable Jahro โ must be ON
โ โโโ Check JAHRO_DISABLE in Player Settings โ Scripting Define Symbols
โ โ โโโ If defined โ FIX: Remove it (or it's intentional for this build)
โ โโโ Check Auto-disable in Release Builds + build type
โ โโโ If Release build with auto-disable ON โ expected behavior
โโโ Is the launch key correct?
โ โโโ Check Tools โ Jahro Settings โ Launch Key
โ โโโ Default is ~ (Tilde). May have been changed.
โโโ Is it a mobile build?
โ โโโ ~ key doesn't work on mobile
โ โโโ FIX: Triple-tap at top of screen (must be enabled in settings)
โ โโโ Check Mobile Tap Activation in Jahro Settings
โโโ Is Play Mode actually running?
โ โโโ Jahro only works in Play Mode, not Edit Mode
โโโ Check Unity console for messages:
โ โโโ "Jahro Console: Disabled in this build" โ Jahro disabled (see above)
โ โโโ Any Jahro initialization errors โ report them
โโโ Keyboard shortcut conflict?
โโโ Another asset or system binding may capture ~ before Jahro
โโโ FIX: Change Launch Key to an unused key
Fix: Verify Jahro is running
Add this to any MonoBehaviour's Start method temporarily:
void Start()
{
Debug.Log($"Jahro.Enabled: {Jahro.Enabled}");
Debug.Log($"Jahro.IsOpen: {Jahro.IsOpen}");
}
Issue: Snapshots Failing
Snapshots don't upload, don't stream, or show errors.
Decision Tree
Snapshots failing
โโโ Is the API key configured?
โ โโโ Check Tools โ Jahro Settings โ Account โ API Key
โ โโโ Empty โ FIX: Get key from console.jahro.io โ Project โ API Keys
โ โโโ Present โ Does it validate? (settings show project info if valid)
โโโ Is the device online?
โ โโโ Upload and streaming require network connectivity
โ โโโ Recording mode works offline; upload when connected
โโโ What snapshot mode is selected?
โ โโโ Recording โ Must manually tap Upload after stopping
โ โโโ Streaming (All) โ Should auto-stream; check network
โ โโโ Streaming (Except Editor) โ Won't stream from Editor
โ โโโ If testing in Editor โ FIX: Use Recording or Streaming (All)
โโโ Is the session in the right state?
โ โโโ Recording โ must Stop first โ then Upload
โ โโโ Recorded โ ready to Upload
โ โโโ Uploading โ wait for completion
โ โโโ Error shown โ check inline error message, tap Retry
โโโ Check snapshot mode setting:
โ โโโ Tools โ Jahro Settings โ Snapshots Settings
โโโ Web console access:
โโโ Can you access console.jahro.io? โ verify account and project exist
Issue: Launch Button Missing
The floating launch button doesn't appear.
Decision Tree
Launch button missing
โโโ Is it enabled?
โ โโโ Check if code calls Jahro.DisableLaunchButton()
โ โโโ FIX: Call Jahro.EnableLaunchButton()
โโโ Is it hidden?
โ โโโ Check if code calls Jahro.HideLaunchButton()
โ โโโ FIX: Call Jahro.ShowLaunchButton()
โโโ Is Jahro itself enabled?
โ โโโ Same checks: JAHRO_DISABLE, auto-disable, settings
โโโ UI layer conflict?
โ โโโ Launch button renders in an overlay canvas
โ โโโ Check if another full-screen UI is rendering on top
โโโ Was it dragged off-screen?
โโโ Position persists across sessions
โโโ FIX: Reset Jahro settings or call EnableLaunchButton() to reset
Issue: Configuration Conflicts
JAHRO_DISABLE but expecting Jahro to work
User defined JAHRO_DISABLE in Scripting Define Symbols but expects
Jahro to function in Debug builds.
FIX: JAHRO_DISABLE overrides ALL other settings. Remove it from
Player Settings โ Scripting Define Symbols if you want Jahro to
function. Use "Auto-disable in Release Builds" instead for
production-only disabling.
Auto-disable ON but testing in Release build
User has Auto-disable in Release Builds ON and is testing a Release
build. Jahro correctly disables itself.
FIX: Use a Development Build for testing with Jahro, or temporarily
disable Auto-disable in Jahro Settings.
Commands work in Editor but not on device
Commands appear in Editor but not on built devices.
CHECK:
1. Assembly scanning โ device builds may use different assemblies
2. JAHRO_DISABLE โ may be set for the target platform only
3. Auto-disable โ device build may be Release
4. RegisterObject โ ensure the MonoBehaviour is active in the device scene
Source Code Tracing (Optional)
If the Jahro source code is available in the project (either jahro-unity-package/ or Assets/JahroPackage/), you can optionally read relevant source files to trace issues deeper:
- Registration logic: look for
RegisterObject implementation
- Assembly scanning: look for attribute discovery code
- Lifecycle: look for
RuntimeInitializeOnLoadMethod handlers
Only do this if the standard decision tree doesn't resolve the issue. The source is not always present (UPM installations don't include it).
Verify-After-Fix Loop
After every fix suggestion:
Verify: Enter Play Mode and reproduce the original issue. If fixed, confirm the expected behavior. If still broken, report back what you see and we'll continue down the decision tree.
For commands/watchers: check the relevant tab in the console.
For console not opening: press ~ and check Unity console for messages.
For snapshots: try the full capture โ upload/stream โ check web console flow.