Skip to content

docs: update open source faq branding#1462

Merged
doodlum merged 5 commits into
community-shaders:devfrom
davo0411:branding-FAQ-edit
Sep 15, 2025
Merged

docs: update open source faq branding#1462
doodlum merged 5 commits into
community-shaders:devfrom
davo0411:branding-FAQ-edit

Conversation

@davo0411
Copy link
Copy Markdown
Collaborator

@davo0411 davo0411 commented Sep 10, 2025

Summary by CodeRabbit

  • New Features
    • Added a first-time setup dialog with centered layout, logo watermark, welcome/version text, hotkey capture (press any key to set toggle), Enter/Escape continue flow, VR skip, per-session gating, and persistent per-user completion so it won’t reappear once finished.
  • Documentation
    • Clarified the FAQ: project is GPL but branding and included assets aren’t covered and may require explicit permission.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Sep 10, 2025

Walkthrough

Added 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 FirstTimeSetupCompleted flag; also extended FAQ text about branding/assets and GPL.

Changes

Cohort / File(s) Summary
First-time setup UI & persistence
src/Menu/HomePageRenderer.cpp
Added ShouldShowFirstTimeSetup(), RenderFirstTimeSetupDialog(), and MarkFirstTimeSetupComplete(); implemented VR gating, per-session gating, JSON-backed per-user persistence (FirstTimeSetupCompleted), centered dialog layout with watermark, hotkey-capture UI, Enter/Escape handling, and settings I/O error handling.
FAQ text update
src/Menu/HomePageRenderer.cpp
Appended licensing/branding lines to the FAQ answer for "Is Community Shaders open source?" noting branding/assets aren’t covered by the GPL and may require explicit permission.

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
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

A rabbit peeks at code and grins,
A centered box where setup begins.
Keys caught softly, watermark glows,
A flag is set — the onboarding goes.
Hoppity-hop, the first-time prompt now wins. 🐇✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The title "docs: update open source faq branding" is concise and accurately describes the primary intent of the changeset (updating FAQ wording about branding assets) and is an appropriate short single-sentence PR title; however, the diff also shows edits to src/Menu/HomePageRenderer.cpp that may add or alter UI/API behavior, so the title is fully correct for the documentation change but may under-represent incidental code changes.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f48586d and a09cf12.

📒 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

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Sep 10, 2025

Using provided base ref: 01da25a
Using base ref: 01da25a
Base commit date: 2025-09-09T20:33:25+01:00 (Tuesday, September 09, 2025 08:33 PM)

Actionable Suggestions

  • Light Limit Fix: Action required; Needs version bump to 2-3-1

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 01da25a and 9cbbd12.

📒 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

Comment thread src/Menu/HomePageRenderer.cpp Outdated
davo0411 and others added 2 commits September 10, 2025 22:44
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.
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 9cbbd12 and f48586d.

📒 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.

Comment thread src/Menu/HomePageRenderer.cpp Outdated
@doodlum
Copy link
Copy Markdown
Collaborator

doodlum commented Sep 12, 2025

make rabbit happy

@davo0411
Copy link
Copy Markdown
Collaborator Author

davo0411 commented Sep 15, 2025

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

@alandtse
Copy link
Copy Markdown
Collaborator

You missed a close bracket. That's why the formatter is having problems.

@alandtse alandtse changed the title docs(homepage): update open source faq branding docs: update open source faq branding Sep 15, 2025
@davo0411
Copy link
Copy Markdown
Collaborator Author

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)

davo0411 and others added 2 commits September 15, 2025 21:45
Automated formatting by clang-format, prettier, and other hooks.
See https://pre-commit.ci for details.
@github-actions
Copy link
Copy Markdown

✅ A pre-release build is available for this PR:
Download

@doodlum doodlum merged commit f5c354a into community-shaders:dev Sep 15, 2025
13 checks passed
@davo0411 davo0411 deleted the branding-FAQ-edit branch December 31, 2025 04:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants