Tutorials Search / Native Mac IDE / The bottom panel, explained
📝 Written ● Beginner Updated 2026-06-16

The bottom panel, explained

The strip of tabs across the bottom of the LingCode window — Problems, Output, Run Console, Console, Terminal, Debug Console, Test Results, REST Client, Ports — is where the IDE tells you what just happened. The hard part isn't any one tab; it's that four of them look like "logs" and people pick the wrong one. This page gives you the mental model first, then a one-line job for each of the nine tabs.

Every tab in the bottom panel answers a different question — did my code compile?, what did my app print?, what is the OS saying?, where is execution paused? When you know which question a tab answers, you stop hunting. The panel itself is one shared dock: click a tab to switch, and drag the divider above it to resize (it grows and shrinks between a short and a tall height, so you can give a noisy build log more room without losing your editor).

What you'll learn

The four tabs that look the same (and aren't)

This is the confusion worth clearing first. Output, Run Console, Console, and Debug Console all scroll text at you, so they feel interchangeable. They are not — each one is wired to a different source:

TabAnswersSource of the text
Output Did my code compile? The build — compiler / xcodebuild / Gradle output, with errors and warnings parsed out.
Run Console What did my app print? Your running program's own stdout / stderr — your print()s and crashes.
Console What is the system saying? Device / simulator system logs — iOS Simulator, My Mac, or Android Logcat — with OS-level severity levels.
Debug Console Where is execution paused? The debugger — lldb-dap on Apple, JDWP/DAP on Android — plus low-level diagnostic logs.

Rule of thumb: a red error in Output means it didn't build; a red line in Run Console means it built and then your app complained; noise in Console is usually the OS, not you; and you only live in Debug Console when you've hit a breakpoint or are typing debugger commands.

The fastest way to remember it. Output is before your app runs (compile time). Run Console is your app talking (its stdout). Console is the OS talking (system log). Debug Console is you talking to the debugger. Four sources, four tabs.

The other five tabs

Problems

A single, sortable list of every error and warning in your project — both compiler diagnostics from the last build and live language-server (LSP) diagnostics as you type. Filter by severity (Error / Warning / Info) or by source (LSP vs. Build), click any row to jump straight to the offending line, copy the whole visible list to paste into chat, or run "Clean Up Unused" to apply LSP quick-fixes for unused symbols. Think of Problems as the index of what's wrong; Output is the raw transcript behind it.

Terminal

Full integrated shell terminals — the same bash/zsh you'd use in Terminal.app, but inside the IDE. It's multi-tab, and tabs can be split left/right or top/bottom so you can watch a dev server in one pane and run commands in another. Select any text and an "Add to Chat" action lets you hand terminal output to the agent; right-click a selection to "Explain with AI". This tab stays mounted underneath the others so long-running processes keep going when you switch away.

Test Results deep dive ↓

After you run tests, this tab shows each one as pass / fail / skip with its duration, filterable by status with live counts. Failure messages turn the stack-frame paths into clickable links that jump to the exact source line, and a coverage toggle overlays which lines your tests actually exercised. See the dedicated tutorial below.

REST Client deep dive ↓

A visual HTTP client built into the IDE — pick a method, type a URL, set headers and a body, hit Send, and read a syntax-friendly response with status, timing, and size. It keeps a short history of recent requests. This is the tab in most "what does this button do?" screenshots; the deep dive below walks through a real request.

Ports deep dive ↓

A live list of local ports — your dev servers and forwarded ports — showing which are actively listening, what process owns them, and a one-click globe button to open http://localhost:<port> in your browser. You can also add a port by hand to keep an eye on it. Covered in detail below.

Where to go next

Three of these tabs reward a closer look. The other six you now know well enough to reach for the right one.