fix(ui): bottom dock tabs, Context default, LOD in Object mode#476
Conversation
- Add AppConsoleLog with optional stdio capture and Qt message routing to the console dock. - Extract ConsoleLogSanitize for ANSI/UTF-8 handling; cover with unit tests. - View menu toggles for Context Panel and Console with QSettings persistence. - MainWindow tests for default checked state, console toggle, and Qt log delivery. - Bump version to 3.0.0. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Avoid returning prefix length 0 when a multibyte lead is followed by a non-continuation, which left the same bytes in stdio carry forever. Add regression test; clarify utf8CompletePrefixLength contract. Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve conflicts: keep console dock + View menu actions; hide context dock on create + QSettings-driven show; take ModeBar trailing spacer from master; retain revealBottomTool(console), appendConsoleLine, and tabify list including Console. Co-authored-by: Cursor <cursoragent@cursor.com>
…om nodes - Tabify bottom docks with Context first, then Console; defer raise so Context stays active when both default on. - Move LOD Generation to Object mode Mode Tools only; MeshLodController uses SelectionSet::getResolvedEntities() (entities, submeshes, node subtrees). - Extend getResolvedEntities() with subtree walk and sub-entity parents. - Add MainWindow, MeshLodController, and SelectionSet unit tests. Co-authored-by: Cursor <cursoragent@cursor.com>
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (9)
📝 WalkthroughWalkthroughThis PR delivers version 3.0.0 with a comprehensive in-app console logging system that captures Qt messages and stdout/stderr via background thread; enhances SelectionSet entity resolution to support ancestor node selection with descendant traversal; adds new scene-tree UI controls (delete node, clear all, material editor, merge animations); refactors LOD controller to use unified entity resolution; and expands test coverage across console, selection, MainWindow, and UI subsystems. ChangesConsole Logging and Stdio Capture
Selection Resolution and Scene Management
UI Controller and MainWindow Integration
Test Suite and Build Configuration
Sequence DiagramsequenceDiagram
participant User
participant UI as QML UI<br/>(SceneTree,<br/>PropertiesPanel)
participant Ctrl as PropertiesPanelController
participant MainWin as MainWindow
participant Console as AppConsoleLog
participant Qt as Qt<br/>Message Handler
User->>UI: Click delete node icon
UI->>Ctrl: deleteSceneTreeNode(name)
Ctrl->>MainWin: find MainWindow
Ctrl->>Ctrl: Manager::destroySceneNode()
Ctrl->>Qt: Breadcrumb logged
Qt->>Console: Message queued
Console->>MainWin: appendConsoleLine()
MainWin->>MainWin: Update console dock
Note over Console,MainWin: Console displays log of<br/>deletion in new Console dock
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-authored-by: Cursor <cursoragent@cursor.com>
💡 Codex ReviewQtMeshEditor/src/mainwindow.cpp Lines 2755 to 2757 in 404cc60
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
|



Summary
raise()after tabification).SelectionSet::getResolvedEntities()so a scene node selection (including group/parent nodes) resolves to attached/descendant Entity meshes; submesh-only selection resolves to the parent entity.getResolvedEntities(): Recurses into child scene nodes (skipping forbidden internal names), resolves sub-entities to parent entities, and keeps the legacy same-nameSceneManager::getEntitylookup.Tests
MainWindowTest.BottomToolTabOrderStartsWithContextDockMeshLodControllerTest: nested ancestor selection (HasSelectionTrueWhenAncestorNodeSelected,GenerateLodsSucceedsWithAncestorNodeSelectionOnly), updated error-string expectationsSelectionSetTest: nested parent, sub-entity-only, multi-entity under one parentNotes
CI: Linux
UnitTests+ Sonar as usual; please rerun if flaky on dock tab ordering.Made with Cursor
Summary by CodeRabbit
New Features
UI Improvements
Version