Closes#3263
<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Adds support for an extra_body parameter in ChatOpenRouter to pass
custom request fields to OpenRouter API calls. This adds flexibility for
provider-specific options and fulfills Linear #3263.
- **New Features**
- Added extra_body field to ChatOpenRouter and spread it into ainvoke
requests.
- Default is None, so no breaking changes.
<sup>Written for commit 7e477ea. Summary will update automatically on
new commits.</sup>
<!-- End of auto-generated description by cubic. -->
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> <sup>[Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) is
generating a summary for commit
f54d0929b1. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
<!-- This is an auto-generated description by cubic. -->
## Summary by cubic
Switch template generation to a GitHub-backed template-library, fetching
templates and manifests at runtime for instant updates. Refactors the
init command to create per-template projects, handle extra files
(including binaries), and show clear next steps.
- **New Features**
- Fetch template list and files from the template-library GitHub repo at
runtime.
- Manifest-driven generation: writes extra files, supports binaries, and
sets executables.
- Creates a per-template directory with main.py and displays next steps
(from manifest or defaults).
- Template selection via --list or interactive prompt with numeric
hotkeys.
- Graceful offline error with a clear message when GitHub is
unreachable.
- **Refactors**
- Removed local CLI templates (default, advanced, tools).
- Replaced hardcoded choices with dynamic discovery from templates.json.
- --template now accepts any manifest key (string), not a fixed set.
- Centralized GitHub fetch helpers; removed fallback templates.
<sup>Written for commit 24ec8e6. Summary will update automatically on
new commits.</sup>
<!-- End of auto-generated description by cubic. -->
- Remove local template files (advanced, default, tools)
- Fetch templates dynamically from template-library repo
- Add templates.json for dynamic template discovery
- Fetch both template list and content at runtime from GitHub
- Fall back to hardcoded FALLBACK_TEMPLATES for offline use
- Add binary file fetching support for PDFs and assets
- Enable instant template updates without code changes
Templates now managed in: https://github.com/browser-use/template-library
Benefits:
- Add new templates by editing template-library only
- Users get instant access without PyPI releases
- Cleaner separation of concerns
- No template files in main codebase
Auto-generated PR for branch: fix-scroll
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> Refines scrollable element interactivity to avoid conflicting
descendants and adds robust datepicker format metadata (including
AngularJS), plus minor write_file docs tweak.
>
> - **DOM Serialization (serializer.py)**:
> - Refines interactive indexing: only mark scrollable containers as
interactive when they have no interactive descendants
(`_has_interactive_descendants` + new logic in
`_assign_interactive_indices_and_mark_new_nodes`).
> - Enhances date/time input metadata: detects AngularJS
`uib-datepicker-popup` and adds `expected_format` and `format`; expands
jQuery/Bootstrap detection; preserves key attributes by protecting them
from deduplication.
> - **DOM Views (views.py)**:
> - Exposes new synthetic attributes in `DEFAULT_INCLUDE_ATTRIBUTES`:
`format`, `expected_format`.
> - **Tools (service.py)**:
> - Clarifies `write_file` action description with allowed
filename/extension formats.
>
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ea784626e6. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->