Row-Bot runtime source lives in src/row_bot/. New application modules and
runtime packages should be added there and imported as row_bot.*.
The repository root still keeps a small supported launch surface:
app.pyrunsrow_bot.appfrom a checkout or packaged payload.launcher.pyimports and callsrow_bot.launcher.main.- Root payload assets such as
static/,sounds/,bundled_skills/,tool_guides/,requirements.txt, androw-bot.icoremain at the root for the v4 packaging contract.
Do not add implementation code to the root wrappers. If code needs to be shared
with tests, installers, or scripts, place it under src/row_bot/ or in a
non-runtime helper under scripts/.
From the repository root:
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
python launcher.pyServer/headless mode:
python launcher.py --server --no-open --port 8080Direct NiceGUI launch remains supported through the root wrapper:
python app.pyTests import package modules through pytest.ini, which sets pythonpath = src. Ad hoc scripts that import row_bot.* directly should either run through
the root launchers, set PYTHONPATH=src, or insert the checkout's src/
directory explicitly.
scripts/app_payload_manifest.py is the source of truth for application payload
coverage. The manifest currently separates the package into:
payload_dirs: recursive runtime package directories, currentlysrc/row_bot.asset_dirs: root asset directories copied beside the launchers, currentlystatic,sounds,bundled_skills, andtool_guides.root_python_files: supported root Python launch wrappers discovered from the repository root, excluding debug, test, and harness files.root_files: root files required by packaged apps, includingrequirements.txtandrow-bot.ico.runtime_script_files: package-time runtime verification scripts.
Windows packaging uses installer/row_bot_setup.iss to recursively include
src/row_bot. macOS and Linux builders call scripts/app_payload_manifest.py
for root files, runtime scripts, payload directories, and asset directories.
Packaging tests in tests/test_linux_support.py and tests/test_suite.py
assert those contracts.
These paths are generated local state and should stay untracked:
installer/build/dist/.tmp/,.tmp_pytest/,.testtmp/,.pytest_cache/, andtest-results/.streamlit/from the old Streamlit appsrc/row_bot/channels/whatsapp_bridge/node_modules/
Do not recursively delete ignored/generated directories during implementation work unless the owner explicitly confirms it is safe. Report them as cleanup candidates instead.