Skip to content

Commit 21effe4

Browse files
authored
2026.03.17 (#108)
1 parent 63b307a commit 21effe4

File tree

44 files changed

+1484
-318
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1484
-318
lines changed

.github/workflows/build-desktop.yml

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,22 @@ jobs:
4444
- name: Grant execute permission for gradlew
4545
run: chmod +x gradlew
4646

47-
- name: Build Shrunk Uber JAR
47+
- name: Build Desktop JAR
4848
run: ./gradlew :trailblaze-desktop:shrinkUberJar -Ptrailblaze.proguard=true
4949

50-
- name: Upload Shrunk JAR Artifact
50+
- name: Upload Desktop JAR
5151
uses: actions/upload-artifact@v4
5252
with:
5353
name: trailblaze-desktop-jar
5454
path: trailblaze-desktop/build/compose/jars-shrunk/trailblaze.jar
5555
if-no-files-found: error
5656
retention-days: 30
5757

58-
- name: Upload Full Uber JAR Artifact
59-
uses: actions/upload-artifact@v4
60-
with:
61-
name: trailblaze-desktop-uber-jar
62-
path: trailblaze-desktop/build/compose/jars/*.jar
63-
if-no-files-found: error
64-
retention-days: 30
65-
6658
- name: Create GitHub Release
6759
if: startsWith(github.ref, 'refs/tags/v')
6860
uses: softprops/action-gh-release@153bb8e04406b158c6c84fc1615b65b24149a1fe # v2
6961
with:
70-
files: trailblaze-desktop/build/compose/jars-shrunk/trailblaze.jar
62+
files: |
63+
trailblaze-desktop/build/compose/jars-shrunk/trailblaze.jar
64+
scripts/trailblaze
7165
generate_release_notes: true

.mcp.json

Lines changed: 0 additions & 10 deletions
This file was deleted.

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ subprojects
8585
it.afterEvaluate {
8686
if (it.plugins.hasPlugin("com.vanniktech.maven.publish.base")) {
8787
it.extensions.getByType(MavenPublishBaseExtension::class.java).also { publishing ->
88+
publishing.publishToMavenCentral()
89+
publishing.signAllPublications()
8890
publishing.pom {
8991
url.set("https://www.github.com/block/trailblaze")
9092
name = "trailblaze"

docs/CLI.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ Start the MCP server
8686

8787
```
8888
trailblaze mcp [OPTIONS]
89+
trailblaze mcp install
8990
```
9091

9192
**Options:**
@@ -100,6 +101,32 @@ trailblaze mcp [OPTIONS]
100101

101102
---
102103

104+
### `trailblaze mcp install`
105+
106+
Install MCP configuration for AI coding tools
107+
108+
**Synopsis:**
109+
110+
```
111+
trailblaze mcp install [OPTIONS] [<<target>>]
112+
```
113+
114+
**Arguments:**
115+
116+
| Argument | Description | Required |
117+
|----------|-------------|----------|
118+
| `<<target>>` | Target tool: claude, cursor, goose (omit to install all) | No |
119+
120+
**Options:**
121+
122+
| Option | Description | Default |
123+
|--------|-------------|---------|
124+
| `--port` | MCP endpoint port (default: 52525) | - |
125+
| `-h`, `--help` | Show this help message and exit. | - |
126+
| `-V`, `--version` | Print version information and exit. | - |
127+
128+
---
129+
103130
### `trailblaze list-devices`
104131

105132
List all connected devices

docs/architecture.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ Trailblaze implements innovations from [Mobile-Agent-v3](https://arxiv.org/abs/2
480480
| **BlazeGoalPlanner** | `BlazeGoalPlanner.kt` | Orchestrates all nodes |
481481
| **MultiAgentV3Runner** | `MultiAgentV3Runner.kt` | High-level entry point |
482482

483-
See the [Mobile-Agent-v3 Integration Plan](decisions/032b_mobile_agent_v3_integration.md) for detailed usage.
483+
See the [Mobile-Agent-v3 paper](https://arxiv.org/abs/2508.15144) for background on this architecture.
484484

485485
## Future Considerations
486486

docs/generated/TOOLS.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
- [objectiveStatus](functions/custom/objectiveStatus.md)
1212
- [openUrl](functions/custom/openUrl.md)
1313
- [pasteClipboard](functions/custom/pasteClipboard.md)
14-
- [pressBack](functions/custom/pressBack.md)
1514
- [pressKey](functions/custom/pressKey.md)
1615
- [requestViewHierarchyDetails](functions/custom/requestViewHierarchyDetails.md)
1716
- [scrollUntilTextIsVisible](functions/custom/scrollUntilTextIsVisible.md)
@@ -36,7 +35,6 @@
3635
- [objectiveStatus](functions/custom/objectiveStatus.md)
3736
- [openUrl](functions/custom/openUrl.md)
3837
- [pasteClipboard](functions/custom/pasteClipboard.md)
39-
- [pressBack](functions/custom/pressBack.md)
4038
- [pressKey](functions/custom/pressKey.md)
4139
- [requestViewHierarchyDetails](functions/custom/requestViewHierarchyDetails.md)
4240
- [scrollUntilTextIsVisible](functions/custom/scrollUntilTextIsVisible.md)

docs/generator/src/main/java/xyz/block/trailblaze/docs/DocsGenerator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ $THIS_DOC_IS_GENERATED_MESSAGE
104104
}
105105

106106
private fun createFunctionsIndexPage(toolSets: Set<TrailblazeToolSet>) {
107-
val map = toolSets.associate { it.name to it.toolClasses.map { it.toolName().toolName }.toSet() }
107+
val map = toolSets.associate { it.name to it.toolClasses.filter { it.toKoogToolDescriptor() != null }.map { it.toolName().toolName }.toSet() }
108108

109109
File(generatedDir, "TOOLS.md").also { file ->
110110
val text = buildString {

docs/index.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,29 @@ This allows leveraging existing execution environments and reporting systems, pr
1515
AI-driven tests at scale.
1616

1717
Because Trailblaze uses [Maestro](https://github.com/mobile-dev-inc/maestro) Command Models for UI interactions it
18-
enables a [Longer Term Vision](#Longer-Term-Vision) of cross-platform ui testing while reusing the same authoring, agent
18+
enables a [Longer Term Vision](roadmap.md#longer-term-vision) of cross-platform ui testing while reusing the same authoring, agent
1919
and reporting capabilities.
2020

2121
### Core Features
2222

2323
- **AI-Powered Testing**: More resilient tests using natural language test steps
2424
- **On-Device Execution**: Runs directly on Android devices using standard instrumentation tests (Espresso, UiAutomator)
25-
- **[Custom Agent Tools](#Custom-Tools)**: Extend functionality by providing app-specific `TrailblazeTool`s to the agent
26-
- **[Detailed Reporting](#Log-Server)**: Comprehensive test execution reports
25+
- **[Custom Agent Tools](architecture.md#custom-tools)**: Extend functionality by providing app-specific `TrailblazeTool`s to the agent
26+
- **[Detailed Reporting](logging.md)**: Comprehensive test execution reports
2727
- **Maestro Integration**: Uses a custom on-device driver for Maestro to leverage intuitive, platform-agnostic UI interactions
2828

2929
### Multi-Agent V3 Features
3030

3131
Trailblaze implements cutting-edge features from [Mobile-Agent-v3](https://arxiv.org/abs/2508.15144) research:
3232

33-
- **[Exception Handling](mobile-agent-v3-features.md#phase-1-exception-handling)**: Automatically handles popups, ads, loading states, and errors
34-
- **[Reflection & Self-Correction](mobile-agent-v3-features.md#phase-2-reflection--self-correction)**: Detects stuck states and loops, backtracks when needed
35-
- **[Task Decomposition](mobile-agent-v3-features.md#phase-3-task-decomposition)**: Breaks complex objectives into manageable subtasks
36-
- **[Cross-App Memory](mobile-agent-v3-features.md#phase-4-cross-app-memory)**: Remembers information across app switches for complex workflows
37-
- **[Enhanced Recording](mobile-agent-v3-features.md#phase-5-enhanced-recording)**: Captures pre/post conditions for more robust replay
38-
- **[Progress Reporting](mobile-agent-v3-features.md#phase-6-progress-reporting)**: Real-time MCP progress events for IDE integrations
33+
- **Exception Handling**: Automatically handles popups, ads, loading states, and errors
34+
- **Reflection & Self-Correction**: Detects stuck states and loops, backtracks when needed
35+
- **Task Decomposition**: Breaks complex objectives into manageable subtasks
36+
- **Cross-App Memory**: Remembers information across app switches for complex workflows
37+
- **Enhanced Recording**: Captures pre/post conditions for more robust replay
38+
- **Progress Reporting**: Real-time MCP progress events for IDE integrations
3939

40-
See the [Mobile-Agent-v3 Features Guide](mobile-agent-v3-features.md) for detailed usage examples and configuration.
40+
See the [Architecture](architecture.md#multi-agent-v3-architecture) page for details.
4141

4242
## License
4343

docs/mcp/index.md

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -176,29 +176,72 @@ Trails are saved as `.trail.yaml` files in the `trails/` directory:
176176
### Running the Server
177177

178178
```shell
179-
./trailblaze
179+
trailblaze
180180
```
181181

182182
This starts:
183183
- MCP server on `http://localhost:52525/mcp`
184184
- Web UI for monitoring
185185

186+
### Quick Setup with `trailblaze mcp install`
187+
188+
The fastest way to configure your MCP client:
189+
190+
```shell
191+
trailblaze mcp install claude # Configure Claude Desktop
192+
trailblaze mcp install cursor # Configure Cursor
193+
trailblaze mcp install goose # Print Goose configuration instructions
194+
trailblaze mcp install # Configure all supported tools
195+
```
196+
197+
### Connecting from Claude Desktop
198+
199+
Run `trailblaze mcp install claude`, or manually add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
200+
201+
```json
202+
{
203+
"mcpServers": {
204+
"trailblaze": {
205+
"url": "http://localhost:52525/mcp"
206+
}
207+
}
208+
}
209+
```
210+
211+
### Connecting from Cursor
212+
213+
Run `trailblaze mcp install cursor`, or manually add to `~/.cursor/mcp.json`:
214+
215+
```json
216+
{
217+
"mcpServers": {
218+
"trailblaze": {
219+
"url": "http://localhost:52525/mcp"
220+
}
221+
}
222+
}
223+
```
224+
186225
### Connecting from Goose
187226

227+
Run `trailblaze mcp install goose` for instructions, or manually configure:
228+
188229
1. Download [Goose Desktop](https://block.github.io/goose/docs/getting-started/installation/)
189230
2. Add a new extension:
190231
- **ID**: `trailblaze`
191232
- **Name**: `Trailblaze`
192233
- **Type**: `streamable_http`
193234
- **URI**: `http://localhost:52525/mcp`
194235

195-
### Connecting from Firebender/Cursor
236+
Or add to `~/.config/goose/config.yaml` under `mcpServers`:
237+
238+
```yaml
239+
trailblaze:
240+
type: streamable_http
241+
url: http://localhost:52525/mcp
242+
```
196243

197-
- **ID**: `trailblaze`
198-
- **Name**: `Trailblaze`
199-
- **Description**: `A tool to facilitate the creation and execution of mobile ui tests using natural language using the Trailblaze library.`
200-
- **Type**: `streamable_http`
201-
- **URI**: `http://localhost:52525/mcp` (use your configured HTTP port if different from the default)
244+
### Connecting from Firebender
202245

203246
Add to `~/.firebender/firebender.json`:
204247

docs/roadmap.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ title: Roadmap
44

55
### Recently Completed ✓
66

7-
- **Multi-Agent V3 Features** ([Mobile-Agent-v3 inspired](decisions/032b_mobile_agent_v3_integration.md)):
7+
- **Multi-Agent V3 Features** ([Mobile-Agent-v3 inspired](https://arxiv.org/abs/2508.15144)):
88
- Exception Handling: Automatic popup, ad, and error recovery
99
- Reflection: Self-correction when stuck or looping
1010
- Task Decomposition: Break complex objectives into subtasks

0 commit comments

Comments
 (0)