- Adds a "Copy" button to "Fly.io App" and "Telegram Bot" status items in `index.html` and `dashboard/index.html`.
- Updates `scripts/web_dashboard.py` to include these status rows with the same copy functionality, ensuring consistency across all dashboard views.
- Implements visual feedback (icon changes to checkmark) and accessibility support (aria-labels) for the copy action.
- Uses inline SVG icons to avoid external dependencies.
- Verified with Playwright and existing tests.
- Replaced `markdown.markdown()` shortcut with reused `markdown.Markdown` instance via `threading.local`.
- Reduced parsing overhead by eliminating re-initialization on every call.
- Verified with unit tests and benchmark (~10% speedup).
Related to performance improvements for dashboard responsiveness.
- Created RUN-GOOGLE-DRIVE-SETUP.bat for Windows users
- Created scripts/google_drive_setup.sh for Linux/WSL users
- Updated scripts/knowledge_base_helper.py to include Google Drive resources
- Documented Google Drive streaming mode in docs/KNOWLEDGE_BASE_INTEGRATION.md
- Verified repository stability with validation and integration tests
- Added .github/workflows/gitlab-sync.yml for automated synchronization.
- Fixed scripts/setup_gitlab_runner.sh with the provided runner authentication token.
- Finalized .gitlab-ci.yml and docs/GITLAB_INTEGRATION.md.
Improved memory efficiency in `scripts/ci_validate_repo.py` by replacing
`read_bytes()` with chunked binary reading (64KB) for NUL byte detection.
This prevents loading entire source files into memory during CI runs.
Extracts the dashboard HTML string into a global constant and compiles it
using Jinja2 only once (lazily) instead of re-parsing the string on every
request. This improves response latency for the dashboard.
- Extracted `DASHBOARD_HTML` constant
- Implemented `DASHBOARD_TEMPLATE` lazy compilation
- Replaced `render_template_string` with `DASHBOARD_TEMPLATE.render()`
- Verified with `scripts/test_web_dashboard.py`
- Replaced sequential execution of `ask_gemini` and `ask_jules` with `concurrent.futures.ThreadPoolExecutor`.
- Reduced total execution time by running independent network-bound tasks in parallel.
- Added necessary import for `concurrent.futures`.
⚡ Bolt: Parallelize AI requests (~2x speedup)
- Modified `scripts/review_pull_requests.py` to filter `git for-each-ref` output by unmerged branches.
- Reduces algorithmic complexity from O(N) to O(M) where N is total branches and M is active branches.
- Avoids expensive `ahead-behind` calculations for potentially thousands of stale merged branches.
- Replaced O(N) `git log` parsing with O(1) `git rev-list --count` for branch commit counts.
- Updated `get_all_branch_details` to return an empty `commits` list to ensure consistent data structure with `get_branch_info`, preventing potential runtime errors.
- Changed base branch reference from `main` to `origin/main` to support CI/CD environments and shallow clones where local `main` might be missing.
- Removed unused `commits` list generation in `get_branch_info` to improve fallback performance.
- Changed `check_authorized` in `scripts/telegram_deploy_bot.py` to fail closed (deny all) if `TELEGRAM_ALLOWED_USER_IDS` is unset or empty.
- Updated `scripts/TELEGRAM_BOT_SETUP.md` and `QUICK_DEPLOY.md` to document that `TELEGRAM_ALLOWED_USER_IDS` is now mandatory for bot access.
- Added Sentinel Journal entry in `.jules/sentinel.md` documenting the vulnerability and learning.
- Verified fix with reproduction script.
- Updated all references from Singapore 09 to Singapore 10 across documentation and scripts.
- Updated dates and timestamps to reflect the current migration date (February 4, 2026).
- Added migration details to VPS_SETUP_NOTES.md.
- Verified repository consistency and ran validation tests.
Co-authored-by: Mouy-leng <199350297+Mouy-leng@users.noreply.github.com>