Rebrand MeshChat as OrcMesh - #21
Conversation
|
Warning Review limit reached
Next review available in: 30 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe project is rebranded from MeshChat to OrcMesh across documentation, packaging, development tooling, and runtime UI. Package metadata, console commands, executable names, and fallback versioning now use OrcMesh. Legacy storage identifiers remain unchanged for compatibility. ChangesOrcMesh rebranding
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 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 |
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
scripts/bootstrap.ps1 (1)
3-12: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winSave both PowerShell files with a UTF-8 BOM.
PSScriptAnalyzer reports
PSUseBOMForUnicodeEncodedFilefor both files. Add a BOM so Windows PowerShell decodes their non-ASCII content consistently.
scripts/bootstrap.ps1#L3-L12: Save the bootstrap script as UTF-8 with BOM.scripts/build.ps1#L75-L81: Save the build script as UTF-8 with BOM.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/bootstrap.ps1` around lines 3 - 12, Save both scripts/bootstrap.ps1 lines 3-12 and scripts/build.ps1 lines 75-81 as UTF-8 files with a BOM; no code changes are required, only update each file’s encoding so Windows PowerShell consistently decodes its non-ASCII content.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packaging/installer.iss`:
- Around line 20-24: Update the installer script to remove legacy MeshChat
artifacts during in-place upgrades by adding InstallDelete entries for obsolete
files such as MeshChat.exe and the old installation shortcuts. Keep the existing
AppId and current OrcMesh installation entries unchanged, and cover shortcuts
created by the previous MeshChat installer.
In `@scripts/bootstrap.ps1`:
- Line 3: Update the remaining bootstrap status message at the installation
step, including the corresponding occurrence around line 38 and the additional
reported occurrence, replacing “Installing meshchat[dev]...” with OrcMesh
terminology while preserving the existing installation behavior.
In `@scripts/capture_screenshots.py`:
- Around line 70-71: Update the QApplication organization and application names
in the launcher initialization to use the legacy MeshChat/MeshChat Qt settings
identity expected by MainWindow’s default QSettings(). Keep the settings
namespace aligned with src/meshchat/app.py so the window loads the existing
storage.
In `@src/meshchat/app.py`:
- Around line 94-98: Update the screenshot entry-point Qt identity in the app
initialization around setOrganizationName, setApplicationName, and
setApplicationDisplayName: use MeshChat for both organization and application
names, while retaining OrcMesh only as the application display name so default
QSettings() uses the legacy settings location.
---
Outside diff comments:
In `@scripts/bootstrap.ps1`:
- Around line 3-12: Save both scripts/bootstrap.ps1 lines 3-12 and
scripts/build.ps1 lines 75-81 as UTF-8 files with a BOM; no code changes are
required, only update each file’s encoding so Windows PowerShell consistently
decodes its non-ASCII content.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: d24306ed-1838-44a7-8537-8916eab89ade
📒 Files selected for processing (23)
ARCHITECTURE.mdREADME.mdTHIRD_PARTY_LICENSES.mddocs/mcoreimg-integration.mdpackaging/installer.isspackaging/orcmesh.specpyproject.tomlrequirements-dev.txtrequirements.txtscripts/bootstrap.ps1scripts/build.ps1scripts/capture_screenshots.pyscripts/fetch_vendors.pyscripts/run-dev.ps1scripts/test.ps1src/meshchat/__init__.pysrc/meshchat/app.pysrc/meshchat/services/app_logging.pysrc/meshchat/services/monitor_store.pysrc/meshchat/ui/main_window.pysrc/meshchat/ui/map/web/index.htmlsrc/meshchat/ui/nodes/nodes_page.pysrc/meshchat/version.py
| #define MyAppName "OrcMesh" | ||
| #define MyAppVersion "0.2.0" | ||
| #define MyAppPublisher "hardcoreerik" | ||
| #define MyAppURL "https://github.com/hardcoreerik/MeshChat-Windows" | ||
| #define MyAppExeName "MeshChat.exe" | ||
| #define MyAppURL "https://github.com/hardcoreerik/OrcMesh" | ||
| #define MyAppExeName "OrcMesh.exe" |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'Repo files matching installer.iss:\n'
fd -a 'installer\.iss$' . || true
printf '\n.gitignore or uninstall-related mentions:\n'
rg -n "Delete|DeleteRegKey|RegDelete|Del |del |MeshChat|OrcMesh|AppId|Uninstall" -S . --glob '!node_modules' --glob '!dist' --glob '!build' --glob '!*.png' --glob '!*.jpg' | head -200
if [ -f packaging/installer.iss ]; then
printf '\npackaging/installer.iss outline/size:\n'
wc -l packaging/installer.iss
sed -n '1,140p' packaging/installer.iss | nl -ba
fiRepository: hardcoreerik/OrcMesh
Length of output: 17066
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf 'packaging/installer.iss contents:\n'
sed -n '1,120p' packaging/installer.iss || cat packaging/installer.iss
printf '\nRead-only verifier for Inno Setup uninstall/delete directives:\n'
python3 - <<'PY'
from pathlib import Path
text = Path('packaging/installer.iss').read_text()
for section in ['[Files]', '[Icons]', '[Run]', '[Registry]', '[UninstallDelete]', '[UninstallRun]']:
print(f'{section}: ' + str(section.strip('[]') in text))
PYRepository: hardcoreerik/OrcMesh
Length of output: 3513
🌐 Web query:
Inno Setup upgrade behavior AppId unchanged existing files old shortcuts not removed
💡 Result:
In Inno Setup, the AppId directive is the primary identifier used to maintain the relationship between installations [1][2]. When you keep the AppId the same across versions, Inno Setup treats the new installation as an upgrade to the existing one [1][2]. This behavior is intentional and generally correct for software updates [1][3]. Regarding your observations: 1. Existing Files: Inno Setup does not automatically remove files from a previous installation if they are not part of the new installer's file list [4][1]. It simply installs the new files over the old ones [3]. If you have files that were present in an older version but are no longer needed in the new version, they will remain in the installation directory [4][1]. To handle this, you should use the [InstallDelete] section to explicitly list any obsolete files that need to be removed during the upgrade process [4][1][5]. Avoid using wildcards in this section to prevent accidental deletion of user data or system files [6][3]. 2. Old Shortcuts: If shortcuts (icons) from an old version are not being updated or removed, verify that the [Icons] section entries in your new script match those of the old script. Inno Setup is designed to overwrite existing shortcuts if the name and location match. If you have renamed or removed an icon entry from the [Icons] section, it will not be automatically deleted from the user's system by the installer [6]. To remove old shortcuts that are no longer part of your application, you must include them in the [InstallDelete] section or, more commonly, handle their cleanup via custom Pascal scripting during the install process if necessary [6][5]. 3. Best Practices for Upgrades: - Always keep the AppId consistent across updates for the same application [1][2]. - Set DisableDirPage=auto and DisableProgramGroupPage=auto in the [Setup] section [1]. This ensures the installer defaults to the previous installation path and prevents confusion during upgrades [1]. - Do not attempt to uninstall the previous version before installing the new one; simply installing over the existing files is the standard, recommended approach for Inno Setup [1][3]. - If you find that files are persisting after uninstallation, ensure that the files were actually installed by the Inno Setup installer. Inno Setup's uninstaller only removes files that it tracked during the installation process [6]. If you have files created by the application at runtime (like logs or user data), these will not be removed by default [6]. If you ever intend for a new version to be installed side-by-side with an older one rather than upgrading it, you must change the AppId to a new, unique value for the new installer [7][8].
Citations:
- 1: https://stackoverflow.com/questions/19540383/upgrade-code-equivalent-in-inno-setup
- 2: https://jrsoftware.org/ishelp/topic_setup_appid.htm
- 3: https://groups.google.com/g/innosetup/c/SoBzFratC9k
- 4: https://stackoverflow.com/questions/23287193/should-inno-setup-delete-old-files-on-update
- 5: https://stackoverflow.com/questions/51130059/inno-setup-delete-old-obsolete-files-on-update
- 6: https://jrsoftware.org/ishelp/topic_uninstalldeletesection.htm
- 7: https://stackoverflow.com/questions/61971214/inno-setup-overwrite-existing-installation-or-show-dir-prompt
- 8: https://stackoverflow.com/questions/34492049/automatically-create-new-entry-in-programs-and-features-for-each-new-version
Remove legacy MeshChat files and shortcuts during upgrades.
AppId is unchanged, so this installs over an existing MeshChat installation. Inno Setup does not remove obsolete files or shortcuts that are not part of the current installer script. Add InstallDelete entries for obsolete files such as MeshChat.exe, and clean up old shortcuts if the previous installation created them. Test an in-place upgrade from a previous MeshChat installation.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@packaging/installer.iss` around lines 20 - 24, Update the installer script to
remove legacy MeshChat artifacts during in-place upgrades by adding
InstallDelete entries for obsolete files such as MeshChat.exe and the old
installation shortcuts. Keep the existing AppId and current OrcMesh installation
entries unchanged, and cover shortcuts created by the previous MeshChat
installer.
| <# | ||
| .SYNOPSIS | ||
| Bootstrap the MeshChat development environment. | ||
| Bootstrap the OrcMesh development environment. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Update the remaining bootstrap status text.
The banner now says OrcMesh, but Line 38 still prints Installing meshchat[dev].... Change the status text to use OrcMesh.
Also applies to: 12-12
🧰 Tools
🪛 PSScriptAnalyzer (1.25.0)
[warning] Missing BOM encoding for non-ASCII encoded file 'bootstrap.ps1'
(PSUseBOMForUnicodeEncodedFile)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scripts/bootstrap.ps1` at line 3, Update the remaining bootstrap status
message at the installation step, including the corresponding occurrence around
line 38 and the additional reported occurrence, replacing “Installing
meshchat[dev]...” with OrcMesh terminology while preserving the existing
installation behavior.
| app.setOrganizationName("OrcMesh") | ||
| app.setApplicationName("OrcMesh") |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== files =="
git ls-files | sed -n '1,120p'
echo "== locate target files =="
fd -a 'capture_screenshots\.py|app\.py|main_window\.py|project\.py' . | sed 's#^\./##'
echo "== relevant snippets =="
if [ -f scripts/capture_screenshots.py ]; then
wc -l scripts/capture_screenshots.py
sed -n '1,140p' scripts/capture_screenshots.py | cat -n
fi
echo "== app.py references =="
if [ -f src/meshchat/app.py ]; then
wc -l src/meshchat/app.py
sed -n '1,140p' src/meshchat/app.py | cat -n
fi
echo "== main_window QSettings references =="
if [ -f src/meshchat/ui/main_window.py ]; then
wc -l src/meshchat/ui/main_window.py
sed -n '250,290p' src/meshchat/ui/main_window.py | cat -n
rg -n "QSettings|settings|sync|write|read" src/meshchat/ui/main_window.py
fi
echo "== qt organizationName/applicationName usages =="
rg -n "setOrganizationName|setApplicationName|setApplicationDisplayName|setOrganizationDomain|QSettings\(" -S .Repository: hardcoreerik/OrcMesh
Length of output: 23735
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== MainWindow settings keys and write path =="
sed -n '268,770p' src/meshchat/ui/main_window.py | cat -n
rg -n "_SETTINGS_KEY|QSettings|settings\.value|settings\.setValue|restoreGeometry|saveGeometry" src/meshchat/ui/main_window.py -C 3Repository: hardcoreerik/OrcMesh
Length of output: 28295
Preserve the legacy Qt settings identity in scripts/capture_screenshots.py.
MainWindow uses default QSettings() and expects the MeshChat/MeshChat namespace; setting OrcMesh/OrcMesh for this launcher loads a different settings storage before the window is constructed. Keep the launcher aligned with src/meshchat/app.py unless isolated screenshot settings are intentional.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@scripts/capture_screenshots.py` around lines 70 - 71, Update the QApplication
organization and application names in the launcher initialization to use the
legacy MeshChat/MeshChat Qt settings identity expected by MainWindow’s default
QSettings(). Keep the settings namespace aligned with src/meshchat/app.py so the
window loads the existing storage.
| # Keep the legacy Qt identity so upgrades retain existing settings. | ||
| app.setOrganizationName("MeshChat") | ||
| app.setOrganizationDomain("meshtastic.org") | ||
| app.setApplicationName("MeshChat") | ||
| app.setApplicationDisplayName("OrcMesh") |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
rg -n -C 3 \
'setOrganizationName|setApplicationName|setApplicationDisplayName' \
--glob '*.py' src scriptsRepository: hardcoreerik/OrcMesh
Length of output: 1286
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '--- candidate files ---\n'
git ls-files | rg '(^scripts/capture_screenshots\.py$|^src/meshchat/app\.py$|settings|QSettings|org\.meshtastic|Meshtastic|app\.py$|capture_screenshots)'
printf '\n--- capture_screenshots.py outline ---\n'
ast-grep outline scripts/capture_screenshots.py --view compact || true
printf '\n--- capture_screenshots.py relevant lines ---\n'
cat -n scripts/capture_screenshots.py | sed -n '1,180p'
printf '\n--- src/meshchat/app.py relevant lines ---\n'
cat -n src/meshchat/app.py | sed -n '1,160p'
printf '\n--- QSettings usages ---\n'
rg -n -C 3 'QSettings|settings\.ini|app\.sync|sync\(\)|value\(|setValue\(' --glob '*.py' src scriptsRepository: hardcoreerik/OrcMesh
Length of output: 249
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- candidate files ---'
git ls-files | rg '(^scripts/capture_screenshots\.py$|^src/meshchat/app\.py$|settings|QSettings|org\.meshtastic|Meshtastic|app\.py$|capture_screenshots)' || true
printf '%s\n' ''
printf '%s\n' '--- capture_screenshots.py outline ---'
ast-grep outline scripts/capture_screenshots.py --view compact || true
printf '%s\n' ''
printf '%s\n' '--- capture_screenshots.py relevant lines ---'
cat -n scripts/capture_screenshots.py | sed -n '1,180p'
printf '%s\n' ''
printf '%s\n' '--- src/meshchat/app.py relevant lines ---'
cat -n src/meshchat/app.py | sed -n '1,160p'
printf '%s\n' ''
printf '%s\n' '--- QSettings usages ---'
rg -n -C 3 'QSettings|settings\.ini|app\.sync|sync\(\)|value\(|setValue\(' --glob '*.py' src scripts || trueRepository: hardcoreerik/OrcMesh
Length of output: 31820
🏁 Script executed:
#!/bin/bash
set -euo pipefail
printf '%s\n' '--- main_window settings constants and usages ---'
cat -n src/meshchat/ui/main_window.py | sed -n '1,55p'
cat -n src/meshchat/ui/main_window.py | sed -n '260,290p'
cat -n src/meshchat/ui/main_window.py | sed -n '755,770p'
printf '%s\n' ''
printf '%s\n' '--- map settings usages ---'
cat -n src/meshchat/ui/map/map_widget.py | sed -n '1,30p'
cat -n src/meshchat/ui/map/map_widget.py | sed -n '140,160p'
printf '%s\n' ''
printf '%s\n' '--- exact QSettings() and explicit group searches ---'
rg -n -C 2 'QSettings\(\)|QSettings\(|settings\.value\(|settings\.setValue\(' --glob '*.py' src scripts testsRepository: hardcoreerik/OrcMesh
Length of output: 8535
Keep the screenshot entry point on the legacy Qt organization.
src/meshchat/ui/main_window.py and src/meshchat/ui/map/map_widget.py read/write default QSettings() under MeshChat. scripts/capture_screenshots.py uses the same default QSettings() path but sets both organization and application names to OrcMesh, so it may create or miss settings intended for the app. Set the script to MeshChat for organization/application names and keep only the display name as OrcMesh.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/meshchat/app.py` around lines 94 - 98, Update the screenshot entry-point
Qt identity in the app initialization around setOrganizationName,
setApplicationName, and setApplicationDisplayName: use MeshChat for both
organization and application names, while retaining OrcMesh only as the
application display name so default QSettings() uses the legacy settings
location.
Summary
Verification
.venv\Scripts\python.exe -m pytest tests\test_version.py -q— 7 passed.venv\Scripts\python.exe -m pytest -q— 411 passed.venv\Scripts\python.exe -m meshchat --version— OrcMesh 0.2.0.\scripts\build.ps1 -SkipTests— builtdist\OrcMesh\OrcMesh.exeOrcMesh.exe --versionsmoke — exit code 0Notes
-NoUpxflag is incompatible with spec-file builds; the normal documented release build succeeds.Summary by CodeRabbit