Skip to content

Remove OpenClaw and Camera tabs from mobile dashboard#85

Merged
aztr0nutzs merged 1 commit into
mainfrom
codex/remove-openclaw-and-camera-modules
Feb 22, 2026
Merged

Remove OpenClaw and Camera tabs from mobile dashboard#85
aztr0nutzs merged 1 commit into
mainfrom
codex/remove-openclaw-and-camera-modules

Conversation

@aztr0nutzs

Copy link
Copy Markdown
Owner

Motivation

  • Remove the OpenClaw and Camera modules from the main mobile dashboard UI and bottom navigation so they no longer appear as entry points in the shipped dashboard.
  • Keep the change minimal and local to the dashboard markup and tab-routing code to avoid touching build system or backend modules.

Description

  • Removed the OpenClaw and Cameras tab pages (removed #tab-openclaw and #tab-cameras) from web-ui/ninja_mobile_new.html so those pages are no longer rendered.
  • Removed the OpenClaw and Cameras bottom nav buttons (tabbtn-openclaw and tabbtn-cameras) from web-ui/ninja_mobile_new.html so they do not appear in the tab bar.
  • Replaced the OpenClaw header video badge with a neutral NET_NiNjA icon in web-ui/ninja_mobile_new.html to remove OpenClaw branding in the main chrome.
  • Updated tab routing and UI state in web-ui/js/dashboard.js by removing openclaw and cameras from allowedTabs and from the media-tab-active toggles so navigation/state can't resolve to the removed tabs.
  • Files changed: web-ui/ninja_mobile_new.html, web-ui/js/dashboard.js.

Testing

  • Attempted ./gradlew :app:assembleDebug which failed in this environment due to missing Android SDK configuration (ANDROID_HOME/local.properties); build could not be validated here.
  • Attempted ./gradlew test and ./gradlew lint; both failed for the same missing Android SDK location in this environment and therefore could not run.
  • Render verification: served the UI locally and captured a browser screenshot of web-ui/ninja_mobile_new.html to confirm that OpenClaw and Cameras entries were removed from the bottom nav and the header badge was updated; screenshot artifact saved during run (dashboard_no_openclaw_camera.png).
  • Manual checks performed: verified allowedTabs no longer includes openclaw/cameras and that media-tab-active logic was updated in web-ui/js/dashboard.js.

Notes: no Gradle/AGP/Kotlin versions, package names, modules, or build files were changed; modifications are limited to UI markup and client-side tab routing only. Please run the following locally to fully validate build/test: ./gradlew :app:assembleDebug, ./gradlew test, ./gradlew lint.


Codex Task

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @aztr0nutzs, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request streamlines the mobile dashboard user interface by eliminating the OpenClaw and Camera features. The changes focus on removing these modules from the UI and navigation, ensuring a cleaner and more focused user experience without altering core build systems or backend components.

Highlights

  • Mobile Dashboard UI Cleanup: The OpenClaw and Camera modules, along with their respective UI elements and navigation entry points, have been removed from the main mobile dashboard.
  • Branding Update: The OpenClaw header video badge has been replaced with a neutral NET_NiNjA icon to align with updated branding.
  • Tab Routing Logic Refinement: The client-side tab routing in dashboard.js was updated to remove 'openclaw' and 'cameras' from 'allowedTabs' and 'media-tab-active' toggles, preventing navigation to the removed tabs.
Changelog
  • web-ui/js/dashboard.js
    • Removed 'openclaw' and 'cameras' from the 'media-tab-active' class toggling logic.
    • Updated the 'allowedTabs' Set to no longer include 'openclaw' and 'cameras'.
  • web-ui/ninja_mobile_new.html
    • Replaced the 'openclaw_icon.mp4' video badge with a 'ninja_icon.png' image.
    • Deleted the
      element for the 'OpenClaw tab page'.
    • Deleted the
      element for the 'Cameras tab page'.
    • Removed the element for 'OpenClaw tab button' (tabbtn-openclaw).
    • Removed the element for 'Cameras tab button' (tabbtn-cameras).
Activity
  • Attempted local build (./gradlew :app:assembleDebug), test (./gradlew test), and lint (./gradlew lint) commands, which failed due to missing Android SDK configuration.
  • Verified UI changes by serving the UI locally and capturing a browser screenshot, confirming the removal of OpenClaw and Camera entries from the bottom navigation and the header badge update.
  • Manually checked 'allowedTabs' and 'media-tab-active' logic in web-ui/js/dashboard.js to ensure updates were applied correctly.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@aztr0nutzs aztr0nutzs merged commit dfcdae6 into main Feb 22, 2026
2 of 4 checks passed

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request effectively removes the OpenClaw and Camera tabs from the mobile dashboard UI. The changes in ninja_mobile_new.html correctly remove the corresponding sections and navigation buttons, and replacing the video icon with a static image is a good performance improvement. The JavaScript changes in dashboard.js correctly update the tab routing logic. I've identified one area for improvement regarding duplicated code in the JavaScript file, which could enhance the long-term maintainability of the code.

Comment thread web-ui/js/dashboard.js
document.getElementById("nnDeviceListBtn")?.classList.toggle("active", !state.deviceMapMode);
const app = document.getElementById("app");
app?.classList.toggle("media-tab-active", state.activeTab === "networks" || state.activeTab === "openclaw" || state.activeTab === "speedtest" || state.activeTab === "cameras" || (state.activeTab === "devices" && state.deviceMapMode));
app?.classList.toggle("media-tab-active", state.activeTab === "networks" || state.activeTab === "speedtest" || (state.activeTab === "devices" && state.deviceMapMode));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The logic for determining if a tab is a 'media tab' is duplicated here and in the setTab function (line 500). This creates a maintenance burden, as any future changes to this logic will need to be made in two places.

To improve maintainability and adhere to the DRY (Don't Repeat Yourself) principle, consider extracting this logic into a dedicated helper function. For example:

function isMediaTab(tabName, deviceMapMode) {
  const mediaTabs = new Set(["networks", "speedtest"]);
  return mediaTabs.has(tabName) || (tabName === "devices" && deviceMapMode);
}

You can then call this function in both setDeviceMapMode and setTab:

// In setDeviceMapMode
app?.classList.toggle("media-tab-active", isMediaTab(state.activeTab, state.deviceMapMode));

// In setTab
app?.classList.toggle("media-tab-active", isMediaTab(resolvedTab, state.deviceMapMode));

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant