docs: update open source faq branding#1462
Conversation
WalkthroughAdded a first-time setup flow: new methods to decide showing the dialog, render a centered setup UI with hotkey capture and input handling, and persist a per-user Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant UI as HomePageRenderer (UI)
participant VR as VR check
participant Settings as UserSettings (JSON)
participant Input as User input
Note over UI,VR: Homepage render / startup
UI->>VR: IsVR()
VR-->>UI: (true|false)
UI->>UI: ShouldShowFirstTimeSetup()
alt Show dialog
UI->>UI: RenderFirstTimeSetupDialog()
Note right of UI #DFF2E1: Centered dialog, watermark,\nhotkey capture, Enter/Escape handling
UI->>Input: Await key/click
alt Hotkey capture
Input-->>UI: Key pressed
UI->>UI: Update displayed hotkey
end
Input-->>UI: Enter (confirm)
UI->>Settings: MarkFirstTimeSetupComplete() (write FirstTimeSetupCompleted=true)
Settings-->>UI: success / error
UI->>UI: set in-session shown flag
else Skip dialog
UI-->>UI: Continue normal rendering
end
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests
📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🧰 Additional context used📓 Path-based instructions (2)**/*.{cpp,cxx,cc,c,h,hpp,hxx,hlsl,hlsli,fx,fxh,py}📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Files:
src/**/*.{cpp,cxx,cc,h,hpp,hxx}📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Files:
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
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 |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
src/Menu/HomePageRenderer.cpp (2)
245-247: Polish wording and capitalization (optional).Consider: use “the GPL” (or “GNU GPL”), capitalize “Nexus Mods,” add the period after “etc.”, and standardize on “license” for consistency.
- "The project is licensed under GPL, ensuring it remains free and open for everyone." - " Branding materials and assets (icons, nexus branding, typography, etc) are not covered by the GPL Licence." + "The project is licensed under the GPL, ensuring it remains free and open for everyone." + " Branding materials and assets (icons, Nexus Mods branding, typography, etc.) are not covered by the GPL license."
245-247: Verify legal accuracy and align UI text with repo licensing.Please confirm the repository’s actual license (e.g., GPL-3.0-only vs GPL-3.0-or-later) and that branding/assets are indeed excluded under separate terms in LICENSE/TRADEMARKS/BRANDING docs. If so, consider linking to those docs in the FAQ for clarity.
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
src/Menu/HomePageRenderer.cpp(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{cpp,cxx,cc,c,h,hpp,hxx,hlsl,hlsli,fx,fxh,py}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Do not include TODO/FIXME placeholders; provide complete, working solutions
Files:
src/Menu/HomePageRenderer.cpp
src/**/*.{cpp,cxx,cc,h,hpp,hxx}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
src/**/*.{cpp,cxx,cc,h,hpp,hxx}: Ensure SE/AE/VR runtime compatibility; use runtime detection patterns (e.g., REL::RelocateMember())
Include robust error handling and resource management with graceful degradation in the plugin code
Files:
src/Menu/HomePageRenderer.cpp
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Build plugin and addons
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Automated formatting by clang-format, prettier, and other hooks. See https://pre-commit.ci for details.
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
src/Menu/HomePageRenderer.cpp (1)
244-247: Fix duplicated GPL sentence and adjacent-literal spacing; keep license wording consistent.
- The GPL line is duplicated (Lines 244 and 245).
- Adjacent string literals concatenate without spaces; add a leading space to subsequent literals.
- Prefer consistent wording (“GPL license” vs “GPL Licence”). Below also capitalizes “Nexus Mods”.
- "The project is licensed under GPL, ensuring it remains free and open for everyone." - "The project is licensed under GPL, ensuring it remains free and open for everyone." - " Branding materials and assets (icons, nexus branding, typography, etc) are not covered by the GPL Licence." - " Any included assets may not be used without explicit permission."); + "The project is licensed under the GPL, ensuring it remains free and open for everyone." + " Branding materials and assets (icons, Nexus Mods branding, typography, etc.) are not covered by the GPL license." + " Any included assets may not be used without explicit permission.");
🧹 Nitpick comments (3)
src/Menu/HomePageRenderer.cpp (3)
368-376: Minor UX: show hand cursor when hotkey text is hoverable.Gives an affordance that the hotkey label is clickable.
ImGui::TextColored(hotkeyColor, "%s", currentKeyName); + if (hovered) { + ImGui::SetMouseCursor(ImGuiMouseCursor_Hand); + }
483-486: Log JSON read failures for diagnosability.Swallowing exceptions makes troubleshooting hard. Emit a warning with the path and error message.
- } catch (const std::exception&) { - // If there's any error reading the file, assume first time - return true; - } + } catch (const std::exception& e) { + // If there's any error reading the file, assume first time + logger::warn("Failed to read UserSettings.json ({}): {}", userSettingsPath.string(), e.what()); + return true; + }(Replace logger::warn with the project’s logging macro if different.)
516-518: Also log write failures; session fallback is fine.You already degrade gracefully by gating with isFirstTimeSetupShown; add a warning for visibility.
- } catch (const std::exception&) { - // If we can't write the file, just mark as shown this session to avoid repeated popups - } + } catch (const std::exception& e) { + logger::warn("Failed to persist FirstTimeSetupCompleted to {}: {}", userSettingsPath.string(), e.what()); + }Also applies to: 520-521
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
src/Menu/HomePageRenderer.cpp(1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{cpp,cxx,cc,c,h,hpp,hxx,hlsl,hlsli,fx,fxh,py}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Do not include TODO/FIXME placeholders; provide complete, working solutions
Files:
src/Menu/HomePageRenderer.cpp
src/**/*.{cpp,cxx,cc,h,hpp,hxx}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
src/**/*.{cpp,cxx,cc,h,hpp,hxx}: Ensure SE/AE/VR runtime compatibility; use runtime detection patterns (e.g., REL::RelocateMember())
Include robust error handling and resource management with graceful degradation in the plugin code
Files:
src/Menu/HomePageRenderer.cpp
🧠 Learnings (2)
📓 Common learnings
Learnt from: davo0411
PR: doodlum/skyrim-community-shaders#1431
File: src/Menu/HomePageRenderer.cpp:0-0
Timestamp: 2025-08-25T09:07:45.255Z
Learning: First-time setup dialogs in the Community Shaders project are typically one-time only dialogs that cannot be manually reopened by users, so static variable persistence across dialog sessions is not a concern for these types of dialogs.
📚 Learning: 2025-08-25T09:07:45.255Z
Learnt from: davo0411
PR: doodlum/skyrim-community-shaders#1431
File: src/Menu/HomePageRenderer.cpp:0-0
Timestamp: 2025-08-25T09:07:45.255Z
Learning: First-time setup dialogs in the Community Shaders project are typically one-time only dialogs that cannot be manually reopened by users, so static variable persistence across dialog sessions is not a concern for these types of dialogs.
Applied to files:
src/Menu/HomePageRenderer.cpp
🔇 Additional comments (1)
src/Menu/HomePageRenderer.cpp (1)
445-448: VR gating looks good.Skipping first-time setup in VR via REL::Module::IsVR() aligns with runtime-compat guidance.
|
make rabbit happy |
it was a giant pita to get the game cursor to not work while the imgui cursor was open on the welcome hotkey screen, this is leftover from that. This pr is like 4 line changes but idk it got blown out cause of auto-formatting bot issue, rabbit is commenting on code from the CI bot Basically rabbit thinks ive added a whole new system when all this pr is is just text saying icons are not open source |
|
You missed a close bracket. That's why the formatter is having problems. |
Oh, thank you! idk how that even happened, i did this by hand just rewriting text. maybe when i committed ai line text fix (commit 2) |
Automated formatting by clang-format, prettier, and other hooks. See https://pre-commit.ci for details.
|
✅ A pre-release build is available for this PR: |
Summary by CodeRabbit